# [[Continuous Delivery (지속적 제공, CD)]]

## 📌 Brief Summary
Continuous Delivery(지속적 제공, CD)는 소프트웨어가 언제든지 프로덕션 환경에 릴리스될 수 있도록 보장하는 자동화된 소프트웨어 개발 관행입니다 [1]. 이를 위해 빌드 파이프라인을 활용하여 소프트웨어를 자동으로 테스트하고 테스트 및 프로덕션 환경에 배포합니다 [1]. 수많은 개발자가 매일 동일한 코드베이스에 코드를 푸시하는 환경에서도 품질 저하 없이 개발 속도와 확신을 유지 가능하게 만드는 핵심적인 역할을 합니다 [1, 2].

## 📖 Core Content
* **빌드 파이프라인과 완벽한 자동화:** 지속적 제공 환경에서는 빌드부터 테스트, 배포, 인프라에 이르기까지 모든 과정의 자동화가 필수적입니다 [3]. 수동 테스트와 배포로는 빠르게 혁신하는 개발 속도를 따라갈 수 없으며, 자동화된 테스트 메커니즘이 지속적 제공을 실행 가능하게 만드는 근간이 됩니다 [2, 3].
* **빠른 피드백 루프와 애자일의 시너지:** 자동화된 테스트가 제공하는 대폭 단축된 피드백 루프는 애자일 개발 관행, 지속적 제공 및 DevOps 문화와 밀접하게 맞물려 작동합니다 [4]. 이를 통해 팀은 소프트웨어 품질을 희생하지 않으면서도 더 빠르게 움직일 수 있습니다 [1, 4]. 마틴 파울러(Martin Fowler)가 옹호하는 지속적 제공과 DevOps는 조직의 소프트웨어 배포 방식을 혁신적으로 재편하는 데 기여했습니다 [5].
* **대규모 환경(SAFe)에서의 확장 및 인프라 조정:** 대규모 애자일 환경에서는 지속적 제공 파이프라인이 전체 ART(Agile Release Train) 시스템에 걸쳐 확장됩니다 [6]. 개별 팀이 고유의 CI(지속적 통합) 프로세스를 유지하는 한편, 시스템 팀은 팀 수준의 빌드 결과물들을 일관된 하나의 소프트웨어로 연결하는 통합 인프라(코드로서의 인프라 등)를 구축하고 조정합니다 [6].

## ⚖️ Trade-offs & Caveats
* **신뢰할 수 있는 CI 파이프라인 필수:** 단일 자동화 테스트를 작성하거나 CD를 도입하기 전에 기능적이고 신뢰할 수 있는 지속적 통합(CI) 파이프라인이 먼저 구축되어야 합니다 [7]. 매 커밋 시 트리거되는 자동화된 빌드 환경과 수 분 내에 코드의 오류를 알려주는 명확한 피드백 루프가 없다면 지속적 제공의 가치는 실현될 수 없습니다 [7]. 
* **품질 부채(Quality Debt)와 시스템 경직성:** 취약한 코드베이스 위에 자동화를 무리하게 적용하려 할 경우, 테스트 스위트 자체가 유지보수하기 어렵고 깨지기 쉬운 상태가 됩니다 [8]. 결과적으로 흐름 효율성(Flow Efficiency)과 배포 성공률이 모두 악화되므로 리팩토링, 자동화된 테스트, 체계적인 동료 코드 리뷰와 같은 내장된 품질(Built-in Quality) 관행이 반드시 전제되어야 합니다 [8].
* **사전 인프라 투자 부담:** 지속적 제공을 안정적으로 운영하려면 테스트 환경, CI 파이프라인 구축 및 테스트 데이터 관리 등 인프라를 마련하는 데 상당한 초기 리소스와 시스템 팀 단위의 노력이 요구됩니다 [6, 9].

---
*Last updated: 2026-05-03*