castle.log
BlogWorkHistory
GitHub

CI/CD 파이프라인 정리

2026년 06월 04일  14시간 전
CI/CD
Deployment
Backend
CI/CD 파이프라인 정리

CI/CD 파이프라인이란?

CI/CD 파이프라인은 코드 변경(커밋/PR) 이 발생했을 때부터 빌드 → 테스트 → 패키징(아티팩트 생성) → 배포까지의 과정을 자동화해, 빠르고 안전하게 소프트웨어를 전달하는 일련의 흐름을 의미합니다.

  • CI(Continuous Integration, 지속적 통합): 작은 단위의 변경을 자주 통합하고, 자동 빌드/테스트로 품질을 조기에 검증합니다.
  • CD(Continuous Delivery/Deployment, 지속적 전달/배포): CI 결과물(빌드 아티팩트)을 배포 가능한 상태로 유지하거나(Delivery), 이를 프로덕션까지 자동 배포합니다(Deployment).

용어 정리

  • Continuous Delivery(지속적 전달): “언제든 배포 가능한 상태”를 유지하되, 프로덕션 배포는 수동 승인이 들어갈 수 있습니다.
  • Continuous Deployment(지속적 배포): 테스트/검증을 통과하면 프로덕션 배포까지 자동으로 진행합니다.

왜 필요한가요?

1) 품질 향상과 버그 조기 발견

  • 커밋/PR마다 자동 테스트가 실행되어, 문제가 작을 때 발견됩니다.
  • 회귀(regression) 방지에 효과적입니다.

2) 배포 속도/빈도 증가

  • 수동 작업을 줄여 배포 리드 타임이 짧아집니다.
  • 작은 변경을 자주 배포하면 장애 발생 시 영향 범위도 줄어듭니다.

3) 일관성 확보(재현 가능)

  • “내 PC에선 됐는데요” 문제를 줄입니다.
  • 빌드/테스트/배포 절차가 코드로 고정되어 동일한 방식으로 반복됩니다.

파이프라인의 일반적인 단계

1) Source (코드 이벤트)

  • Git push, PR 생성/업데이트, 태그 생성, 릴리즈 이벤트 등

2) Build (빌드)

  • 컴파일/번들링
  • Docker 이미지 빌드
  • 빌드 산출물(artifact) 생성

3) Test (테스트)

  • 단위 테스트(Unit)
  • 통합 테스트(Integration)
  • E2E 테스트
  • 정적 분석(Lint, Type check), 보안 스캔(SAST), 라이선스 체크 등

4) Package & Publish (아티팩트/이미지 저장)

  • 아티팩트 저장소: S3, Nexus, Artifactory
  • 컨테이너 레지스트리: Docker Registry, ECR, GCR
  • 버전 태깅/릴리즈 노트 생성

5) Deploy (배포)

  • 개발/스테이징/프로덕션 등 환경별 배포
  • Kubernetes, ECS, VM, 서버리스 등 대상에 맞는 배포 방식 적용

6) Verify & Monitor (검증/모니터링)

  • 헬스체크, 스모크 테스트, 카나리 검증
  • 모니터링/알림(에러율, 지연시간, CPU/메모리 등)

배포 전략(대표)

  • Rolling Update: 인스턴스를 순차적으로 교체 (가장 흔함)
  • Blue-Green: 구버전(Blue)과 신버전(Green)을 분리 후 트래픽 스위치
  • Canary: 일부 트래픽만 신버전에 보내 검증 후 점진 확대
  • Recreate: 전부 내렸다가 다시 올림(단순하지만 다운타임 위험)

파이프라인 설계 시 고려사항(중요)

1) 빠른 피드백

  • CI는 최대한 빠르게: 캐시 활용, 병렬 실행, 테스트 계층화

2) 신뢰할 수 있는 게이트(품질 기준)

  • PR 단계에서 “최소 통과 기준”을 강제(테스트, 린트, 커버리지, 보안 스캔 등)

3) 비밀정보(Secrets) 관리

  • 환경변수/키를 코드에 하드코딩 금지
  • GitHub Actions Secrets, Vault, KMS 등으로 관리
  • 최소 권한 원칙 적용

4) 환경 분리와 설정 관리

  • dev/stage/prod 환경 분리
  • 설정은 코드와 분리(예: config, secret, parameter store)
  • 동일한 아티팩트를 환경별로 재사용하는 방식이 안전함

5) 롤백 전략

  • 배포 실패/장애 발생 시 즉시 되돌릴 수 있도록
  • 이전 이미지/아티팩트 보관, 배포 이력 추적

6) 아티팩트 일관성

  • “빌드 한 번 → 어디든 배포”가 이상적
  • 동일 산출물을 여러 환경에 승격(promote)시키는 방식 권장

자주 쓰는 도구 예시

  • 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) 해서
품질과 배포 속도를 동시에 개선하는 자동화된 전달 체계입니다.

다음 게시글API Gateway 정리