개요
회사에서 웹 프로젝트 배포 프로세스 구축 필요성을 느꼈습니다. 가장 많이 사용하는 방법 3가지는 GitLab CI, Jenkins, Travis CI입니다. 위 3가지 모두 CI/CD에 활용되는 훌륭한 기술입니다. 각 비교를 통해 현재 회사 상황에 가장 최적의 기술을 확인해 보겠습니다.
인지도 확인하기
기술은 인기가 많을수록 다양한 사례와 레퍼런스가 있습니다. 얼마나 많이 사용되는지에 따라 기술을 선택하는 것은 위험하지만 참고하여 활용할만한 가치가 있다고 생각합니다. 인기와 팔로워 모두 Jenkins가 압도적입니다.
Jenkins > Travis CI > GitLab CI로 볼 수 있습니다.
다음은 stackoverflow에서 트렌드를 검색했습니다. 검색어에 제한이 있긴 하지만, Jenkins의 토론이 압도적으로 많습니다. 최근에 Jenkins가 다소 주춤했으며, GitLab CI가 꾸준히 상승하고 있습니다.
역시 Jenkins > Travis CI > GitLab CI 로 볼 수 있습니다.
GitLab CI vs Jenkins vs Travis CI
GitLab CI
GitLab CI는 GitLab에 내장되어 있는 통합도구입니다. 깃 관리소 저장, 이슈 추적, 코드리뷰, 위키, 활발한 피드 등의 기능이 있습니다. Ruby와 Go로 작성되었으며 MIT 라이선스가 있습니다.
장점
- 자동 스케일링 Runner로 관리가 쉽고 비용 절감이 가능합니다.
- 병렬 테스트, 모니터링 결과 등을 UI에 한 번에 확인이 가능합니다.
- 코드리뷰와 협업에 최적화되어 있습니다.
단점
- Jenkins에 비해 플러그인 생태계가 크지 않습니다.
- GitLab에 의존적입니다.
Jenkins
젠킨스는 가장 유명한 CI/CD 오픈소스로서, 빌드, 배포, 자동화를 위해 수백 가지의 플러그인을 제공합니다. 자바로 만들어졌고 MIT 라이선스가 있습니다. 빌드, 테스트, 배포, 통합 과정 자동화에 강력합니다. macOS, 윈도, UNIX, Ubuntu, Red Hat 등 다양한 환경에서 사용 가능합니다.
장점
- 무료 오픈소스로 수천 개의 플러그인을 지원합니다.
- 가장 유명하므로 커뮤니티가 활성되어 자료가 많습니다.
- 설치와 설정이 쉽습니다.
단점
- 동시에 여러 개를 빌드하면 많은 자원을 소모합니다.
- 작은 프로젝트 구성 시 비효율적입니다.
- 파이프라인 추적 분석 기능이 부족합니다.
Travis CI
클라우드 기반 CI/CD 솔루션으로 간소화된 설정과 최소한의 온보딩의 특징입니다. 직관적인 UI로 프로젝트 테스트와 작업을 빠르게 시작할 수 있습니다. Gitjub, Bitbucket, GitLab 등과 연결 가능하며 Linux, Window, macOS 에서 빌드 가능합니다.
장점
- 다른 도구에 비해 더 적은 코드로 CI/CD가 가능해 생산성이 좋습니다.
- 클라우드 기반으로 운영되며 손쉽게 세팅하고 관리할 수 있습니다.
단점
- 무료 기능이 적어 금액을 지불하고 운영해야 합니다.
- 커스터마이징이 제한적입니다.
Jenkins를 선택한 이유
GitLab CI는 GItLab과 연동하여 사용할 때 좋다고 생각했습니다. 단순히 CI/CD를 넘어 팀이 코드리뷰를 하고, 협업하고 다양한 칸반보드를 통해 피드백을 주고받는 종합 도구로서 효율성이 크다고 생각합니다. 따라서 GitLab을 같이 사용하지 않으면 의미가 없습니다.
Travis CI의 경우 클라우드 기반 운영으로 요금을 내야 할 각오를 해야 합니다. 클라우드 기반으로 유연하게 운영하는 경우 효과적이라고 생각합니다. 하지만, 회사 내에서는 온프레미스로 운영 중이 서버들이 있으며 비용을 굳이 지불할 계획이 없습니다.
Jenkins는 다양한 플러그인을 지원합니다. 현재 형상관리 도구로 svn을 사용하고 있습니다. 이를 지원하는 플러그인이 있으며 무료입니다. 설치와 설정을 빠르게 할 수 있고 다양한 자료가 많기 때문에 구성에 크게 어려움이 없을 것이라고 판단했습니다.
결론
현재 조건은 레거시인 svn을 연동해야 하며, 온프레미스 환경에 CI/CD 도구를 설치해야 하는 상황입니다.
다른 도구들도 강력한 기능을 가지고 있지만 현재 조건을 모두 충족하는 Jenkins를 선택했습니다. 이번 조사를 통해 다양한 CI/CD과 장단점을 알 수 있었습니다. GIthub Action CI CD도 강력하지만, 이름에서 있듯이 Github가 전제이므로 선택지에서 제외했습니다. 개인 프로젝트에서 구축했던 경험을 바탕으로 손쉽게 배포를 할 수 있도록 준비할 예정입니다.
실무에 Jenkins를 활용한 CI/CD 구축하기
참고
https://www.techrepublic.com/article/travis-ci-review/
https://www.lambdatest.com/blog/jenkins-vs-gitlab-ci-battle-of-ci-cd-tools/
'문제 해결, 기술 비교 > 실무 업무 회고' 카테고리의 다른 글
할인 쿠폰 개선하기 (0) | 2022.12.28 |
---|---|
수기 업로드 작업 자동화 및 이메일 솔루션 사용 (0) | 2022.12.16 |
NICE API 일시불 취소 개발하기 (0) | 2022.12.09 |
스케줄링에 어떤 기술을 사용할까?(@Scheduled vs Spring Batch vs Quartz) (0) | 2022.11.10 |
Jenkins로 CI/CD 구축하기 (0) | 2022.06.02 |