Jenkins, Travis, Github Action은 개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, main 브랜치가 푸시되면 배포가 자동으로 이루어지는 환경을 구축할 수 있는 CI,CD 툴이다.
CI란 VCS(Git,SVN 등)시스템에 push가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정이다. CD란 이 CI 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD라고 한다.
즉, 코드 수정 -> PR -> 테스트 코드 실행, 코드 검증 -> Approve -> Merge
간단하게 사용하는 이유를 설명하자면, 각자 다른 사람들이 개발한 코드를 수작업으로 merge할 수 없었고, 따라서 지속적으로 코드가 통합되는 환경(CI)을 구축하게 되었다. 또한 한 두대의 서버에 배포하는 것이 아닌 수십 , 수백 대의 서버에 배포 해야 하거나 긴박하게 배포해야 하는 상황에 수동으로 배포할 수 없어 배포를 자동화하는 CD를 도입하게 되었다.
CI를 사용할 때 주의할 점으로는 테스팅을 자동화하여 단일 명령어로 언제든지 시스템에 대한 건전한 테스트를 실행할수 있게 해야한다. 즉, 테스트 코드가 구현되어 있어야 한다.
Jenkins란?
Jenkins란 소프트웨어 구축, 테스트, 전달 및 배포와 관련된 모든 종류의 작업을 자동화하는데 사용할 수 있는 오픈 소스 자동화 서버이다.
Travis란?
깃허브에서 제공하는 무료 CI 서비스이다. 깃헙에 호스팅 되는 소프트웨어 프로젝트의 빌드, 테스트를 위해 사용된다.(오픈 소스일 경우 무료)
Github Action이란?
Github Action은 Github에서 직접 제공하는 CI/CD 툴이다.Public 저장소는 무료이며 private 저장소는 무료 사용량을 초과하면 돈을 지불해야 한다.
Jenkins VS Travis VS Github Action
travis의 장점
- Github와 연동 편리
- YML파일을 통한 쉬운 설정
- 다양한 레퍼런스
- 직접 서버를 운영할 필요 없이, Travis에서 알아서 VM으로 호스팅해 줌
- 모든 Job이 독립적
travis의 단점
- 플러그인의 종류가 비교적 적음
- 무료 서비스를 사용하려면 public 이어야 함.
Jenkins의 장점
- 무료
- 다양한 IDE를 지원하며 커스터마이징이 다양
- 많은 사용자들을 보유하고 있고, 관련 문서가 다양
- 호스팅을 직접 해야하기 때문에 관련된 모든 부분을 관리할 수 있음
Jenkins의 단점
- 다양한 플러그인-> 플러그인 지옥
- 규모가 작은 프로젝트의 경우, 설정하는데 리소스 낭비가 발생할 수 있음
- 호스팅을 직접 해야하기 때문에 서버 운영 및 관리 비용이 발생
Github Action의 장점
- 빌드 과정을 눈으로 확인하기 쉽다.
- Jenkins, Travis 보다 빠르다.
- 깃허브의 모든 이벤트에 대한 작업을 제공한다.
Github Action의 단점
- 문서가 비교적 부족하다.
- UI에서 개별 워크플로우 실행을 삭제할 수 없다.
- Workflow에서 단일 작업만 다시 실행할 수 없다.
'Infra' 카테고리의 다른 글
Keda (0) | 2024.04.29 |
---|---|
Docker / Kubernetes (0) | 2022.05.24 |
Jenkins (0) | 2022.02.04 |
클라우드, 인프라 (0) | 2021.11.01 |