배포 흐름을 정리할 때는 "어떤 도구를 쓰는가"보다 변경이 안전하게 서비스까지 도착하는지가 먼저 보인다. 커밋이 들어온 뒤 테스트, 빌드, 패키징, 배포, 검증이 같은 순서로 반복되어야 장애가 났을 때도 원인을 좁히기 쉽다.
이 글은 CI/CD를 용어로만 외우기보다, 실제 운영에서 어떤 단계와 기준을 확인해야 하는지 정리한 기록이다.
배포 흐름을 보는 기준
CI/CD 파이프라인은 코드 변경(커밋/PR) 이 발생했을 때부터 빌드 → 테스트 → 패키징(아티팩트 생성) → 배포까지의 과정을 자동화해, 소프트웨어를 일관된 방식으로 전달하는 흐름이다.
CI(Continuous Integration, 지속적 통합): 작은 단위의 변경을 자주 통합하고, 자동 빌드/테스트로 품질을 조기에 검증합니다.
CD(Continuous Delivery/Deployment, 지속적 전달/배포): CI 결과물(빌드 아티팩트)을 배포 가능한 상태로 유지하거나(Delivery),
이를 프로덕션까지 자동 배포합니다(Deployment).
용어 정리
Continuous Delivery(지속적 전달): “언제든 배포 가능한 상태”를 유지하되, 프로덕션 배포는 수동 승인이 들어갈 수 있습니다.
Continuous Deployment(지속적 배포): 테스트/검증을 통과하면 프로덕션 배포까지 자동으로 진행합니다.
운영에서 중요하게 보는 이유
1) 품질 향상과 버그 조기 발견
2) 배포 속도/빈도 증가
3) 일관성 확보(재현 가능)
흐름을 쪼개서 볼 때
1) Source (코드 이벤트)
2) Build (빌드)
컴파일/번들링
Docker 이미지 빌드
빌드 산출물(artifact) 생성
3) Test (테스트)
4) Package & Publish (아티팩트/이미지 저장)
아티팩트 저장소: S3, Nexus, Artifactory
컨테이너 레지스트리: Docker Registry, ECR, GCR
버전 태깅/릴리즈 노트 생성
5) Deploy (배포)
6) Verify & Monitor (검증/모니터링)
배포 방식 선택
Rolling Update: 인스턴스를 순차적으로 교체 (가장 흔함)
Blue-Green: 구버전(Blue)과 신버전(Green)을 분리 후 트래픽 스위치
Canary: 일부 트래픽만 신버전에 보내 검증 후 점진 확대
Recreate: 전부 내렸다가 다시 올림(단순하지만 다운타임 위험)
설계할 때 먼저 보는 것
1) 빠른 피드백
2) 신뢰할 수 있는 게이트(품질 기준)
3) 비밀정보(Secrets) 관리
4) 환경 분리와 설정 관리
dev/stage/prod 환경 분리
설정은 코드와 분리(예: config, secret, parameter store)
동일한 아티팩트를 환경별로 재사용하는 방식이 안전함
5) 롤백 전략
6) 아티팩트 일관성
자주 만나는 도구
CI/CD 실행: Jenkins, GitHub Actions, GitLab CI, CircleCI
컨테이너/오케스트레이션: Docker, Kubernetes, ECS
배포 자동화: Argo CD(특히 GitOps), Helm
아티팩트 저장소: Nexus, Artifactory, S3
모니터링/로깅: Prometheus/Grafana, ELK, Datadog
정리
CI/CD 파이프라인은 코드 변경을 자동으로 검증하고, 같은 산출물을 안전하게 배포 가능한 상태로 만드는 운영 흐름이다. 좋은 파이프라인은 배포를 빠르게 만드는 데서 끝나지 않고, 실패했을 때 되돌아갈 기준과 확인 지점을 같이 남긴다.