Skip to content

Continuous delivery

Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, when releasing the software, without doing so manually. It aims at building, testing, and releasing software with greater speed and frequency. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for continuous delivery.

CD contrasts with continuous deployment, a similar approach in which software is also produced in short cycles but through automated deployments rather than manual ones.

Category

Continuous delivery vs Continuous deployment

Continuous delivery is the ability to deliver software that can be deployed at any time through manual releases; this is in contrast to continuous deployment which uses automated deployments. According to Martin Fowler, continuous deployment requires continuous delivery. Academic literature differentiates between the two approaches according to deployment method; manual vs. automated.

Continuous Delivery 와 Continuous Deployment 는 자주 혼동되는 개념인데, 핵심 차이는 프로덕션 배포의 자동화 수준에 있습니다.

Continuous Delivery
코드 변경사항이 자동으로 빌드, 테스트되어 항상 배포 가능한 상태로 준비되지만, 실제 프로덕션 배포는 수동 승인이 필요합니다.
즉, 배포 버튼을 누르는 것은 사람이 결정합니다.
이를 통해 비즈니스 요구사항에 맞춰 배포 시점을 조절할 수 있고, 중요한 릴리스 전에 최종 검토를 할 수 있습니다.
Continuous Deployment
한 단계 더 나아가서 모든 코드 변경사항이 자동화된 테스트를 통과하면 자동으로 프로덕션 환경에 배포됩니다.
사람의 개입 없이 코드가 커밋되고 테스트를 통과하면 곧바로 사용자에게 전달되는 것입니다.

쉽게 말하면,

  • Continuous Delivery는 "언제든 배포할 수 있는 상태로 준비"이고,
  • Continuous Deployment는 "자동으로 배포된다"입니다.

실무에서는

  • 규제가 엄격한 산업(금융, 의료 등)이나 신중한 릴리스 관리가 필요한 경우 Continuous Delivery를 선호하고,
  • 빠른 피드백과 반복이 중요한 웹 서비스나 SaaS 제품에서는 Continuous Deployment를 많이 사용합니다.

See also

  • Wait4X - 서비스가 준비될 때까지 기다려주는 경량 도구
  • Komodo - 여러 서버에 빌드/배포하는 도구
  • Argo CD

Favorite site