히콩쓰 개발 일지
CI/CD란 무엇인가? / Github Actions, Jenkins 장단 본문
새로운 프로젝트를 진행하면서, CI/CD 작업을 진행하겠다고 했다.
CI/CD 라고 하지만, 정확히 어떤 의미인지 잘 모르고 썼던 것 같아 제대로 알아보았다.
CI (Continuous Integration) : 지속적 통합
- 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것
CD (Continuous Delivery & Continuous Deployment) : 지속적 배포
Delivery와 Deployment는 조금 다르다.
- Delivery는 공유 레포지토리로 자동으로 Release 하는 것
- Deployment는 Production 레벨까지 자동으로 배포 하는 것
CI/CD 사용 시 장점
- 소스 코드를 통합하는 과정에서 발생하는 반복적인 수작업을 없앨 수 있다.
- 다수의 개발자가 하나의 프로젝트에 참여하는 상황이라면, 코드 스타일 통일이나 환경 등 동시다발적으로 발생할 수 있는 충돌을 방지할 수 있다.
- 코드 개발, 배포 과정을 자동화 했으므로 신속하게 개발 및 배포를 진행할 수 있다.
CI/CD Tools
CI/CD의 대표적인 툴이자 가장 많이 거론되는 것은 Github Actions
, Jenkins
이다.
Github Actions vs Jenkins
Jenkins
장점 | 단점 |
---|---|
• 다양한 플러그인의 활용이 가능하여 확장성이 높음 | • 비동기 파이프라인이 없어 동기적으로 배포하기 때문에 배포에 많은 시간이 소요됨 |
• 캐싱 플러그인을 지원하여 별도 캐싱 메커니즘 작성이 필요하지 않음 | • 별도 서버 설치 필요 |
• 환경 호환성을 위해 도커 이미지에서 실행해야 함 |
Github Actions
장점 | 단점 |
---|---|
• GitHub 저장소에 내장되어 있어, 손쉽게 CI/CD를 구성할 수 있음 | • 캐싱 플러그인이 없어 별도 캐싱 메커니즘 작성 필요 |
• Github 내부 모든 이벤트와 연동 가능 | |
• 모든 환경과 호환됨 | |
• 비동기로 배포됨 | |
• 클라우드가 있어 서버 별도 설치 필요 없음 |