전체 목록
인프라Medium#115

CI/CD 파이프라인이란 무엇이며 어떤 단계로 구성되나요?

#CI/CD#배포#자동화#DevOps

답변 포인트

코드 변경을 자동 검증하고 안전하게 배포하는 흐름을 떠올려보세요.

정답 및 해설

빠른 요약

CI는 지속적 통합으로 코드 변경을 자주 통합하고 lint, 타입 체크, 테스트, 빌드 등을 자동 실행해 문제를 빠르게 발견하는 과정입니다. CD는 지속적 전달 또는 지속적 배포로, 검증된 코드를 배포 가능한 상태로 만들거나 실제 환경에 자동 배포하는 과정입니다.

CI/CD는 코드 변경을 자주 통합하고, 검증을 자동화하며, 안전하게 배포하기 위한 개발 프로세스입니다. CI는 지속적 통합(Continuous Integration), CD는 지속적 전달 또는 지속적 배포(Continuous Delivery/Deployment)를 의미합니다.

CI

CI는 개발자가 변경한 코드를 자주 main 브랜치에 통합하고, 자동 검증을 수행하는 과정입니다.

일반 단계:

  1. 코드 checkout
  2. 의존성 설치
  3. lint 실행
  4. 타입 체크
  5. 테스트 실행
  6. 빌드 검증
YAML
name: ci

on:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run lint
      - run: npm test
      - run: npm run build

CI의 목적은 변경 사항이 기존 기능을 깨뜨리지 않는지 빠르게 확인하는 것입니다.

CD

CD는 검증된 코드를 배포 가능한 상태로 만들거나 실제 환경에 자동 배포하는 과정입니다.

Continuous Delivery:

  • 언제든 배포할 수 있는 상태까지 자동화
  • 실제 프로덕션 배포는 사람이 승인

Continuous Deployment:

  • 모든 검증을 통과하면 프로덕션까지 자동 배포

일반적인 파이프라인 단계

Text
Commit
  -> Build
  -> Test
  -> Static Analysis
  -> Package
  -> Deploy to Staging
  -> E2E Test
  -> Approval
  -> Deploy to Production
  -> Monitoring

배포 전략

전략설명
Rolling인스턴스를 순차적으로 교체
Blue-Green기존 환경과 새 환경을 분리해 트래픽 전환
Canary일부 사용자에게만 먼저 배포
Feature Flag코드 배포와 기능 공개를 분리

좋은 CI/CD의 조건

  • 빠른 피드백
  • 재현 가능한 빌드
  • 테스트와 배포 과정 자동화
  • 비밀 값은 Secret Manager로 관리
  • 실패 시 즉시 중단
  • 배포 후 모니터링과 롤백 경로 확보

주의사항

파이프라인이 너무 느리면 개발자가 우회하거나 검증을 신뢰하지 않게 됩니다. 단위 테스트와 정적 검사는 빠르게, E2E나 보안 스캔처럼 무거운 작업은 필요한 시점에 분리해 실행하는 것이 좋습니다.

정리

CI/CD는 단순한 자동 배포 스크립트가 아니라 변경을 작게 유지하고, 자동 검증으로 품질을 지키며, 배포 리스크를 줄이는 운영 방식입니다. 핵심은 빠른 피드백과 반복 가능한 배포입니다.

CI/CD 파이프라인의 목적

CI/CD는 코드를 자주 통합하고 안전하게 배포하기 위한 자동화 흐름입니다. 핵심은 “사람의 수동 판단에 의존하던 반복 작업을 검증 가능한 단계로 만든다”는 점입니다.

Text
commit  install  lint  test  build  image  deploy  smoke test

단계별 역할

단계목적
Lint/Format코드 스타일과 잠재 오류 조기 발견
Unit Test작은 단위의 로직 검증
Build실제 배포 가능한 산출물 생성
Integration/E2E주요 사용자 흐름 검증
Deploystaging/production 반영
Rollback실패 시 이전 버전 복구

실무 팁

  • 빠른 검사는 PR마다, 느린 검사는 main merge나 nightly로 분리합니다.
  • secret은 CI 변수/secret manager로 관리하고 로그에 노출하지 않습니다.
  • 배포 후 health check와 smoke test를 자동화합니다.
  • 실패했을 때 어디서 멈췄는지 알 수 있도록 단계 이름과 로그를 명확히 합니다.

관련 질문

같은 카테고리/태그 기준