CI/CD (Continuous Integration / Continuous Delivery 또는 Continuous Deployment)
정의
CI/CD는 소프트웨어 개발과 운영(DevOps) 흐름에서 지속적인 통합(Continuous Integration, CI) 과 지속적인 전달(Continuous Delivery, CD) 혹은 지속적인 배포(Continuous Deployment, CD) 를 의미하는 일련의 자동화된 프로세스를 말한다. CI는 개발자가 작성한 코드를 공유 저장소에 빈번히(보통 하루 여러 차례) 통합하고, 자동화된 빌드·테스트 과정을 통해 코드 품질을 즉시 검증한다. CD는 CI를 거친 코드를 자동으로 패키징하고, 테스트 환경·스테이징 환경·생산 환경에 차례대로 배포함으로써 배포 주기(time-to-market)를 최소화하고 품질을 일관되게 유지한다.
주요 구성 요소
| 구분 |
핵심 역할 |
주요 도구(예시) |
| 버전 관리 시스템(VCS) |
소스코드와 설정 파일을 중앙 저장소에 관리 |
Git, Subversion |
| CI 서버 |
코드 푸시 시 자동으로 빌드·테스트 실행 |
Jenkins, Travis CI, GitHub Actions, GitLab CI, CircleCI |
| 빌드 도구 |
소스코드를 컴파일·패키징 |
Maven, Gradle, npm, Webpack |
| 테스트 자동화 |
단위, 통합, UI, 성능 테스트 수행 |
JUnit, pytest, Selenium, Cypress |
| 아티팩트 레지스트리 |
빌드 결과물(패키지·컨테이너 이미지) 저장 |
Nexus, Artifactory, Docker Hub, Harbor |
| 배포 파이프라인 |
빌드·테스트·배포 단계들을 순차·병렬로 조정 |
Spinnaker, Argo CD, Flux, Jenkins X |
| 인프라 자동화(IaC) |
배포 환경을 코드로 정의 및 적용 |
Terraform, Ansible, CloudFormation |
| 모니터링·피드백 |
배포 후 서비스 상태와 성능을 실시간 감시 |
Prometheus, Grafana, ELK Stack, New Relic |
CI 프로세스 흐름
- 코드 커밋 – 개발자는 로컬에서 변경 후 원격 VCS에 푸시.
- 트리거 – CI 서버가 푸시 이벤트를 감지하고 파이프라인을 시작.
- 빌드 – 종속성 해석·컴파일·패키징.
- 정적 분석 – 코드 품질·보안 스캔(Lint, SonarQube 등).
- 단위·통합 테스트 – 자동화된 테스트 스위트 실행.
- 아티팩트 저장 – 성공한 빌드 결과를 레지스트리에 업로드.
CD(Continuous Delivery)와 CD(Continuous Deployment)의 차이
| 구분 |
설명 |
자동화 수준 |
| Continuous Delivery |
배포 가능한 상태(테스트·검증 통과)까지 자동화하고, 실제 운영 배포는 수동 승인 후 진행. |
배포 전 단계까지 자동화. |
| Continuous Deployment |
테스트·검증을 통과한 아티팩트를 자동으로 운영 환경에 배포. |
전체 파이프라인 전 과정 자동화. |
장점
- 배포 속도 향상 : 소규모 변경을 빈번히 배포해 시장 요구에 신속히 대응.
- 품질 및 안정성 : 자동 테스트·정적 분석으로 결함을 조기에 발견.
- 리스크 감소 : 작은 단위의 배포는 롤백·복구가 용이.
- 협업 효율 : 통합 충돌을 조기에 해결해 팀 간 커뮤니케이션 비용 절감.
- 인프라 일관성 : IaC와 결합해 환경 차이로 인한 오류 최소화.
도전 과제
- 테스트 자동화 수준 – 전체 코드베이스에 대한 포괄적 테스트 구축이 필요.
- 문화적 변화 – ‘실패를 빠르게 수용하고 복구한다’는 마인드셋 전환.
- 보안 – CI/CD 파이프라인 자체가 공격 표면이 될 수 있어 보안 스캔·시크릿 관리가 필수.
- 툴 체인 복잡성 – 다양한 도구 간 연동과 버전 관리가 복잡할 수 있음.
- 스케일링 – 대규모 조직에서는 파이프라인의 병렬성·자원 할당 최적화가 필요.
주요 적용 사례
| 기업/프로젝트 |
CI 도입 효과 |
CD/배포 방식 |
| Netflix |
마이크로서비스당 하루 수십 번의 자동 빌드·테스트 수행 |
Continuous Deployment (Spinnaker 활용) |
| Google |
내부 Bazel 빌드 시스템과 Kubernetes 기반 배포 파이프라인 운영 |
Continuous Delivery (자동 검증 후 수동 승인) |
| Shopify |
수천 개 서비스와 UI 컴포넌트를 매일 1,000건 이상 배포 |
Continuous Deployment (GitHub Actions + Argo CD) |
| Kakao |
모바일·웹 백엔드에 CI/CD 적용, 배포 평균 15분 내 완료 |
Continuous Delivery (Jenkins + Helm) |
관련 용어
- DevOps – 개발(Development)과 운영(Operations)의 협업 문화·프랙티스. CI/CD는 DevOps의 핵심 실천 중 하나.
- GitOps – 선언형 인프라와 Git을 단일 소스 오브 트루스로 삼아 배포를 자동화하는 접근법. CI/CD 파이프라인과 긴밀히 연계.
- Feature Flag – 새로운 기능을 코드에 포함하되, 런타임에 토글로 제어해 배포 위험을 최소화. CD와 조합해 사용.
참고 문헌·자료
- “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation” – Jez Humble, David Farley, 2010.
- “The DevOps Handbook” – Gene Kim 외, 2016.
- “Site Reliability Engineering: How Google Runs Production Systems” – Niall Richard Murphy 등, 2016.
- GitHub Actions Documentation, https://docs.github.com/en/actions (2024년 최신).
- Google Cloud – Cloud Build & Cloud Deploy, https://cloud.google.com (2024).
CI/CD는 현대 소프트웨어 엔지니어링에서 품질·속도·안정성을 동시에 달성하기 위한 핵심 인프라스트럭처이며, 올바른 자동화 설계와 조직 문화가 조화될 때 비로소 최대의 효과를 발휘한다.