IT용어위키


지속적 통합과 지속적 배포

Continuous Integration (CI)Continuous Delivery (CD)는 소프트웨어를 빠르고 안정적으로 개발·검증·배포하기 위해 자동화를 적용하는 핵심 DevOps 실천 방법이다. CI는 코드 통합과 자동 테스트가 중심이며, CD는 언제든지 배포 가능한 상태를 유지하도록 확장된다.

  • 흔히 둘을 합쳐 CI/CD라고 많이 표기한다.

Continuous Integration (CI)

Continuous Integration은 개발자가 작성한 코드를 자주 메인 브랜치에 통합하고, 자동 빌드 및 테스트를 통해 항상 배포 가능한 상태를 유지하는 개발 방식이다.

CI 파이프라인 단계

  1. Plan
  2. Code
  3. Build
  4. Test

CI는 모든 Pull Request에서 자동으로 실행되어 문제 있는 코드가 master(main) 브랜치에 들어오는 것을 방지한다.

Continuous Delivery (CD)

Continuous Delivery는 코드를 항상 배포 가능한 상태로 유지하며, 모든 변경 사항을 프로덕션과 유사한 환경으로 자동 이동시킨다.

CD 파이프라인 단계

  1. Develop
  2. Build
  3. Test
  4. Release
  5. Deploy
  6. Operate

Continuous Delivery의 목표

  • master(main) 브랜치는 항상 배포 가능한 상태를 유지해야 한다
  • 잘못된 코드가 master로 들어가지 않도록 검증 절차가 필요하다
  • 모든 Pull Request에서 CI를 실행해야 한다
  • Merge 전에 코드가 정상 동작하는지 반드시 확인해야 한다
  • 언제든지 릴리즈가 가능한 환경을 유지한다

Continuous Delivery의 이점

  • SDLC(소프트웨어 개발 생명주기)의 각 단계를 자동으로 연결
  • 배포 시간 단축
  • 비용 절감
  • 프로젝트 규모에 따라 확장 가능
  • 코드가 SDLC의 각 단계로 자동 이동하고 배포됨

Continuous Delivery의 5가지 핵심 원칙

1. 품질 내재화 (Build Quality In)

  • 모든 단계에서 품질이 보장되도록 한다
  • 지속적으로 코드 리뷰를 수행한다
  • 파이프라인 전체의 품질 상태를 유지한다

2. 작은 단위로 작업하기 (Work in Small Batches)

  • 사용자 스토리를 작게 유지한다
  • 작은 변경은 위험을 줄인다
  • 변경 사항을 지속적으로 통합한다

3. 사람은 문제를 해결한다 (People Solve Problems)

  • 사람은 반복적인 작업을 수행해서는 안 된다
  • 테스트 주도 개발(TDD)에서도 자동화 도구로 테스트를 수행한다
  • 반복 작업은 컴퓨터가 더 빠르고 정확하게 수행한다

예시:

  • GitHub Actions

4. 지속적 개선 추구 (Pursue Continuous Improvement)

  • Continuous Delivery는 빠른 피드백을 가능하게 한다
  • 빌드 또는 테스트 실패를 즉시 발견할 수 있다
  • 팀이 지속적으로 프로세스를 개선할 수 있도록 한다

5. 모두가 책임을 진다 (Everyone Is Responsible)

  • 빌드가 실패했을 때 “누구 탓인가?”를 묻지 않는다
  • 대신 다음을 질문한다:
    • "왜 실패했는가?"
    • "어떻게 하면 재발을 방지할 수 있는가?"

Continuous Delivery 모범 사례

  • 모든 변경을 항상 릴리즈 가능한 상태로 유지
  • 트렁크 기반 개발(trunk-based development) 사용
  • 자동화된 파이프라인을 통해 배포
  • 가능한 많은 프로세스를 자동화
  • 다운타임 제거
  • 테스트 단위 수준의 세밀한 릴리즈 수행

CI/CD 파이프라인 요구 사항

  • 소스 코드 저장소
  • 애플리케이션을 빌드하는 빌드 서버
  • 빌드와 테스트를 자동화하는 통합 또는 오케스트레이션 서버
  • 바이너리 및 아티팩트 저장소
  • 자동 구성 및 자동 배포 도구

Continuous Delivery vs Continuous Deployment

Continuous Delivery

  • 모든 변경 사항을 배포 가능한 상태로 유지
  • SDLC 전체를 자동으로 이동
  • 프로덕션 배포는 수동 승인 가능

Continuous Deployment

  • Continuous Delivery의 확장
  • 자동 테스트 통과 시 즉시 프로덕션으로 배포
  • 인간의 승인 없이 자동 배포 진행

비교 표

구분 Continuous Delivery Continuous Deployment
프로덕션 배포 수동 승인 가능 완전 자동화
목적 항상 배포 가능한 상태 유지 모든 변경을 자동 배포
위험 감수도 중간 높음

같이 보기

참고 문헌

  • Martin Fowler — Continuous Delivery
  • Jez Humble & David Farley — Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!