SpringBoot CI/CD 도입전 분석(젠킨스 vs 트레비스)
예전에 CI/CD를 공부하기 위해 간단하게 정리한 글이 있었습니다.
[Java] 배포란?(+ CI/CD)
배포란(Deploy) 작성한 코드를 빌드하고, 빌드가 완성된 실행 가능한 파일(jar war)을 사용자가 접근할 수 있는 환경에 배치한 것 즉, 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 거나 .exe
junuuu.tistory.com
CI : Continuous Integration
개발자를 위한 자동화 프로세스로 지속적인 통합하는 방식
만약 주기적으로 통합을 하지 않고 오래 시간이 지난 후 통합을 하면 큰 충돌이 날 확률이 높습니다.
CD : Continuous Deployment 또는 Continuous Delivery
Deployment는 배포 단계를 자동화, Delivery는 배포 단계를 수동화한 것을 나타냅니다.
CI 이후에 서버에 배포까지 자동으로 이루어짐을 의미합니다.
Travis CI
Travis CI는 서버가 클라우드에서 호스팅되므로 전용 서버에서 따로 커스텀이 필요 없는 이미 지정된 CI 옵션들을 많이 제공합니다.
YML 파일을 통한 쉬운 설정이 장점이지만 상업용 프로젝트에는 유료이며, 오픈소스는 첫 사용자에게 10,000크레딧이 주어집니다.
MacOS위에서 가벼운 프로젝트 빌드 20~30번 정도 소요시 1,000 크레딧이 소요된다고 합니다.
Jenkins
Java 기반의 오픈소스로 구성되어 있으며 다양한 플러그인을 지원합니다.
오픈소스라는 장점을 가지고 있습니다. (무료)
Travis CI보다 설정하는데 어렵습니다. (방화벽 작업, 서버의 관리 및 운영)
무료이지만 직접 전용 서버를 구축하고 유지관리 해야하기 때문에 서버 비용이 발생할 수 있습니다.
결론
Travis CI는 오픈소스 한정으로 10,000 크레딧을 제공하고 설정 및 실행이 간단하기 때문에 배포 자동화 연습용 혹은 소규모 적합해 보입니다.
하지만 10,000 크레딧이 조금 단점인 것 같습니다.
운영을 위한 개인 프로젝트나 팀 프로젝트에서는 Jenkins를 사용하여 EC2 프리티어로 구동하면 충분히 무리 없이 사용할 수 있을 것 같습니다.
결론으로는 삽질이 예상되지만 Jenkins를 사용해보도록 하겠습니다.
출처
https://wooncloud.tistory.com/79
CI/CD 기본 개념 정리와 툴
CI/CD 란? CI : Continuous Integration 지속적 통합 소프트웨어를 개발하면서 새로운 코드를 작성하거나 코드를 변경하고 빌드 및 테스트하여 공유 리포지토리에 통합되는 것을 말합니다. CI개발을 하려
wooncloud.tistory.com
https://owin2828.github.io/devlog/2020/01/09/cicd-1.html
[CI/CD] Jenkins vs GitLabCI vs Travis - 낮코밤코
CI/CD 환경을 구축하여 App을 배포해보는 것이 목적이다. 이를 위해 Jenkins를 이용하여 앱을 빌드하고, AWS Code Deploy를 이용해 배포하는 환경을 구축할 것이다. 본격적으로 시작하기 전에 CI/CD 파이프
owin2828.github.io