계기
회사에 입사하고 한 서비스를 유지보수 하는일을 맡았다.
근데 이 서비스를 관리 하다보니 불편한점이 하나 있었는데…
요구 사항을 적용하고 다시 배포하는 작업이 너무 너무 귀찮은 것이다.
현재 이 서비스를 배포하기 위해서는 서버 컴퓨터에 앉아 저장소에서 최신 코드를 땡겨와 빌드 한다음 빌드된 파일을 이용해 서비스를 실행시켜야 하는데 이 작업이 너무나도 시간이 오래 걸리고 귀찮은것이다.
이 과정은 CI/CD 도구를 이용하여 충분히 자동화 할 수 있다 생각하여, 회사에 CI/CD 환경이 구축되어 있는지 물어봤지만 구축된게 없다고 말씀하셨다...
CI/CD 환경을 구축하면 나 뿐만 아니라 다른 사원들도 편할꺼 같아서 허락을 받은다음 직접 CI/CD 도구를 선정하고 구축하기로 결심했다.
CI/CD 도입 장점
개발을 하면서 서비스를 테스트, 빌드, 배포를 지속적으로 해야 하는데 이것을 수동으로 하기에는 너무나 많은 시간이 걸리고 귀찮으며 개발에 집중하기 힘들다.
CI/CD 도구 후보
많은 CI/CD 도구들이 있고 많이 여러 제품을 살펴봤지만 3개만 짧게 작성 해보았다.
Jenkins
장점
- 오픈소스라 무료
- 많은 플러그인을 지원
- 많은 사용자들이 사용하므로 문서도 많음
- 커스텀마이징 가능
단점
- 플러그인이 많아 초기 설정하는데 복잡함
- 규모가 작은 프로젝트에서는 설정하는데 시간을 낭비 할 수 가 있음.
- 클라우드 형식이 아니기때문에 jenkins를 돌릴 서버가 따로 필요함
Travis CI
장점
- 클라우드 기반이라 별도의 설치가 필요없음
- Github와 연동이 매우 쉬움
단점
- 유료라서 매달 최소 64달러씩 지불해야함
Gitlab
장점
- gitlab과 연동이 매우 쉬움
- 단계 당 여러 개의 병렬 작업을 정의하고 다른 빌드를 트리거 할 수 있음
단점
- gitlab repo와 연동하려면 별도의 작업 필요
최종 결론
일부 서비스들이 내부망에 있는 반드시 서버에서 돌려야 하는 상황이라서 내부망 서버에 jenkins를 설치하여 돌리기로 했다.
다음에는 jenkins를 설치하고 pipeline 구축과 github를 연동하는 글을 작성해보겠다.
'배포' 카테고리의 다른 글
Graceful Shutdown (0) | 2024.11.07 |
---|