[ CI : 지속적 통합 ]
코드를 커밋하고 빌드했을 때, 정상적으로 작동하는지 반복적으로 검증해 애플리케이션의 신뢰를 높이는 작업
[ CD : 지속적 배포 ]
CI과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 작업
[ CI/CD : 지속적 통합/지속적 배포 ]
실무적인 환경에서 변경 사항을 계속 추적해 좀 더 안정화된 애플리케이션을 만들고, 이를 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는 데 가장 많이 쓰이는 개념
[ 컨테이너 환경에서의 일반적인 CI/CD ]
- 깃허브 등의 저장소에 저장해 둔 애플리케이션 소스 코드를 내려받아 도커 컨테이너 이미지로 빌드
- 빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록
- 레지스트리에 등록된 이미지를 기반으로 쿠버네티스 오브젝트를 생성
- 생성한 오브젝트를 외부에서 접속할 수 있도록 서비스 형태로 노출
이런 과정을 파이프라인이라고 한다.
기존에는 파이프라인을 사람이 하나하나 수작업으로 진행했지만, 현재는 도구를 사용해 자동화
[ CI/CD 도구 비교 ]
Teamcity

- Jetbrains에서 만든 CI/CD 도구로, Kotlin을 기반으로 만든 Kotlin DSL이라는 스크립트 언어로 작업 구성 가능
- 에이전트 3개와 빌드 작업 100개 무료 (더 많은 에이전트를 사용하려면 유료 결제 해야 함)
Github Action

- 깃허브에서 지원하는 워크플로 기반의 CI/CD 도구
- 깃허브 저장소에 소스 코드를 공개할 경우 무료
- 한 달에 2000분이라는 제한 시간 존재 (추가로 사용할 경우 분 단위의 요금 별도 부과)
Bamboo

- 아틀라시안에서 만든 CI/CD 도구로, 유료
- 아틀라시안에서 만든 다른 협업 도구를 사용 중일 경우 연계해 사용하기 좋음
Jenkins

- 역사, 인지도, 사용자 수에서 CI/CD 도구의 대명사라고 불림 → refer 많음
- 오픈 소스 CI/CD 도구로, 무료
- 사용자가 직접 UI에서 작업을 구성하거나 작업 순서를 코드로 정의할 수 있음
위 도구 외에도 Agro, CodeDeploy 등 다양한 CI/CD 도구 존재
참고 자료