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 파이프라인은 코드 변경을 자동으로 검증(CI) 하고, 안전하게 배포 가능 상태로 만들거나 배포(CD) 해서
품질과 배포 속도를 동시에 개선하는 자동화된 전달 체계입니다.