# [[지속적 통합 (CI) 및 지속적 배포 (CD)]]

## 📌 Brief Summary
지속적 통합(CI) 및 지속적 배포(CD)는 수많은 개발자가 동일한 코드베이스에 코드를 푸시할 때 자동화된 빌드와 테스트를 실행하게 하는 필수적인 메커니즘이다 [1, 2]. 소프트웨어가 변경될 때마다 배포 파이프라인(Deployment Pipeline)을 통해 코드를 검증하며, 문제 발생 시 몇 분 이내에 개발자에게 즉각적인 피드백을 제공하는 것을 목표로 한다 [2, 3]. 리팩토링이나 새로운 기능 추가 과정에서 자동화된 회귀 테스트를 지속적으로 수행함으로써 기술 부채를 안전하게 상환하고 시스템을 지속적으로 개선할 수 있는 안정망 역할을 한다 [4-6].

## 📖 Core Content

*   **CI 파이프라인의 필수 역할 및 빠른 피드백 (Fast Feedback)**
    성공적인 자동화 테스트를 위해서는 기능적이고 신뢰할 수 있는 CI 파이프라인 구축이 선행되어야 한다 [3]. CI 파이프라인은 모든 커밋에 대해 빌드를 트리거하며, 변경 사항이 무언가를 망가뜨렸는지 몇 분 안에 개발자에게 알려주는 명확한 피드백 루프를 제공한다 [3]. 이러한 기반 없이는 자동화 테스트가 가치를 발휘할 수 없으며 빠른 피드백을 전달할 메커니즘도 존재할 수 없다 [2, 3]. 피드백 속도를 최적화하기 위해, 빠르고 좁은 범위를 가진 단위 테스트나 통합 테스트를 파이프라인의 초기 단계에 배치하여야 한다 [7].
*   **리팩토링의 안전망 및 코드베이스 신뢰성 확보**
    리팩토링 과정에서 CI와 TDD(테스트 주도 개발)를 연계하여 작은 변경 사항마다 코드를 실행하는 것은 새로운 버그 도입의 위험을 막아준다 [4]. 코드가 변경될 때마다 자동으로 테스트를 실행하게 함으로써 수정으로 인해 발생한 회귀(Regression) 오류를 신속히 포착할 수 있다 [5]. 이는 결과적으로 코드베이스에 대한 신뢰감을 형성하며, 팀이 기존 기능을 불안정하게 만들 염려 없이 혁신하고 리팩토링에 전념할 수 있도록 돕는다 [5]. 
*   **대규모 조직 (SAFe) 환경에서의 파이프라인 통합**
    애자일 릴리스 트레인(ART)과 같은 대규모 프레임워크 내에서 지속적 배포 파이프라인은 조직 전체로 확장된다 [8]. 개별 팀들은 자신만의 CI 프로세스를 유지 관리하며, 시스템 팀(System Teams)은 개별 팀 수준의 빌드를 일관된 전체로 연결하는 통합 인프라를 조정한다 [8]. 이 과정에서 코드로서의 인프라(Infrastructure as Code)를 사용하여 테스트 환경의 일관성과 반복 가능성을 보장하는 것이 핵심이다 [8]. 

## ⚖️ Trade-offs & Caveats

*   **빠른 피드백 지연과 파이프라인 구성의 함정**
    테스트를 추가하는 데만 급급하여 전체 테스트 스위트 실행에 과도한 시간(예: 전체 스위트 실행에 3일 소요)이 소요된다면, 잘못된 변수를 최적화한 것이다 [9]. 긴 시간이 걸리는 테스트 때문에 피드백이 지연되면, 개발자가 퇴근한 뒤에야 단위 테스트 실패 여부를 알게 될 수 있어 CI/CD의 핵심 가치가 훼손된다 [7]. 따라서 테스트 커버리지, 속도, 신뢰성 간의 시스템적 균형을 맞춰야 하며, 오래 걸리는 테스트는 파이프라인의 후반 단계로 미루어야 한다 [7, 9].
*   **공유 환경에서의 실패 전파 (Cascading Failures)**
    여러 팀이 동일한 테스트 환경을 동시에 공유하여 사용할 경우, 하나의 실패가 다른 실패를 연쇄적으로 유발할 수 있다 [10]. 이 경우 어떤 팀의 변경 사항이 문제를 일으켰는지 판별하기 어려워지며, 지속적인 거짓 실패(False failures)는 자동화 파이프라인에 대한 팀의 신뢰를 무너뜨린다 [10]. 
*   **성급한 커버리지 확대의 위험성**
    불안정한 테스트(Flaky Tests)나 CI 파이프라인 자체의 신뢰성이 보장되지 않은 상태에서 야심 차게 테스트 커버리지 목표만을 추구하는 것은 위험하다 [11]. 확장하기 전, 작더라도 팀이 완전히 신뢰할 수 있는 안정된 기반을 먼저 확립하고 완료 조건(DoD) 기준 및 CI 파이프라인 신뢰성을 점진적으로 확보해야 한다 [11].

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