--- category: Unified tags: [DevOps, Automation, CI, CD, Deployment] title: CI/CD (Continuous Integration & Continuous Deployment) description: 코드의 지속적인 통합과 자동화된 배포를 통해 고품질의 소프트웨어를 신속하고 안정적으로 배포하는 프로세스 last_updated: 2026-05-02 --- # CI/CD (Continuous Integration & Continuous Deployment) ## 📌 Brief Summary **CI/CD**는 현대 소프트웨어 개발의 핵심인 데브옵스(DevOps)의 기반입니다. **지속적 통합(CI)**은 개발자가 변경한 코드를 정기적으로 공유 저장소에 병합하고 자동 빌드 및 테스트를 수행하여 초기 결함을 발견하는 단계입니다. **지속적 제공/배포(CD)**는 통합된 코드를 검증된 환경에 자동으로 출시하여 사용자에게 가치를 전달하는 단계입니다. 이를 통해 수동 배포로 인한 실수를 방지하고 개발 주기를 획기적으로 단축합니다. --- ## 📖 Core Content ### 1. 지속적 통합 (Continuous Integration) * **작업 방식:** 모든 개발자는 하루에도 여러 번 자신의 코드를 메인 브랜치에 반영합니다. * **자동화 루프:** 코드 커밋 → 자동 빌드 → 유닛 테스트 및 통합 테스트 수행 → 정적 코드 분석. * **목표:** "통합 지옥(Integration Hell)"을 방지하고 코드 품질의 조기 경보 시스템 역할을 수행합니다. ### 2. 지속적 제공 및 배포 (Continuous Delivery & Deployment) * **Continuous Delivery:** 빌드된 아티팩트를 스테이징 환경까지 자동으로 전달하며, 운영 배포는 수동 승인을 거칩니다. * **Continuous Deployment:** 테스트를 통과한 모든 변경 사항이 인간의 개입 없이 실제 운영 서버에 즉시 배포됩니다. * **전략:** 블루/그린 배포, 카나리(Canary) 배포 등을 통해 무중단 배포와 리스크 최소화를 실현합니다. ### 3. 주요 도구 및 기술 * **Pipeline Orchestration:** Jenkins, GitHub Actions, GitLab CI/CD, CircleCI. * **Containerization:** Docker와 Kubernetes를 활용하여 일관된 배포 환경을 보장합니다. * **Infrastructure as Code (IaC):** Terraform이나 CloudFormation을 통해 인프라 구축까지 파이프라인에 포함시킵니다. --- ## ⚖️ Trade-offs & Caveats ### ✅ Benefits * **출시 속도 향상:** 자동화된 파이프라인을 통해 몇 시간 또는 며칠이 걸리던 배포 작업을 몇 분 만에 완료합니다. * **신뢰성 확보:** 인간의 실수가 개입될 여지가 줄어들고, 자동화된 테스트가 코드의 안정성을 보장합니다. * **피드백 루프 단축:** 사용자에게 기능을 빨리 제공하고 그에 따른 데이터를 즉각 수집할 수 있습니다. ### ⚠️ Challenges * **초기 구축 비용:** 자동 테스트와 파이프라인 인프라를 구축하는 데 상당한 초기 리소스가 필요합니다. * **테스트 품질 의존도:** 테스트 코드가 부실하면 오류가 섞인 코드가 자동으로 배포되는 재앙이 발생할 수 있습니다 (Garbage In, Garbage Out). * **보안 리스크:** 배포 파이프라인 자체가 공격의 타겟이 될 수 있으므로 시크릿 관리와 권한 제어가 매우 중요합니다. --- ## 🔗 Knowledge Connections ### Related Concepts * **[[DevSecOps]]:** CI/CD 파이프라인의 모든 단계에 보안 검사를 통합하는 개념입니다. * **[[Docker_and_Kubernetes]]:** CI/CD의 결과물을 실행하고 관리하는 표준 인프라 환경입니다. * **[[Test_Driven_Development]]:** 신뢰할 수 있는 CI 파이프라인을 위한 양질의 테스트 코드를 생산하는 방법론입니다. ### Practical Application Contexts * **Cloud Native Development:** 클라우드 환경에서 서버리스나 컨테이너를 통해 탄력적인 자동 배포를 구현합니다. * **Mobile App Development:** Fastlane 등을 활용하여 빌드 및 스토어 등록 과정을 자동화합니다. --- ## 💡 Adjacent Topics * **[[GitHub_Actions]]:** 현대적인 클라우드 네이티브 CI/CD를 위한 대표적인 서비스입니다. * **[[GitOps]]:** Git 저장소를 시스템의 상태와 일치시키는 선언적 배포 방식입니다. * **[[Observability]]:** 배포된 시스템의 상태를 모니터링하고 이슈를 감지하는 필수 보완 기술입니다. --- *Last updated: 2026-05-02*