--- id: ci_cd_pipeline title: CI/CD 파이프라인 (Continuous Integration & Continuous Deployment) category: DevOps_and_Security status: stable confidence_score: 0.95 created_at: 2026-04-18 updated_at: 2026-05-08 tags: - ci_cd - devops - automation - pipeline - software_delivery raw_sources: - Programming & Language/CI_CD Pipeline.md - Programming & Language/CI_CD 파이프라인 자동화.md - Programming & Language/CI_CD 파이프라인.md - Programming & Language/Continuous Integration (CI).md - Architecture/CI_CD.md --- # CI/CD 파이프라인 (Continuous Integration & Continuous Deployment) ## 📌 Brief Summary CI/CD는 애플리케이션 개발 단계부터 배포까지의 전 과정을 자동화하여 사용자에게 더 빠르고 빈번하게 소프트웨어를 제공하는 방법론입니다 [1]. **CI(Continuous Integration)**는 코드 변경 사항을 정기적으로 빌드 및 테스트하여 공유 저장소에 병합하는 과정을, **CD(Continuous Delivery/Deployment)**는 검증된 코드를 운영 환경에 자동으로 배포하는 과정을 의미합니다 [1, 2]. ## 📖 Core Content ### 1. 지속적 통합 (Continuous Integration, CI) * **자동 빌드 및 테스트**: 개발자가 코드를 커밋하면 자동으로 빌드가 수행되고 단위 테스트(Unit Test)가 실행됩니다. * **충돌 조기 발견**: 빈번한 병합을 통해 코드 간의 충돌을 조기에 발견하고 해결합니다. * **품질 게이트**: 정적 분석(SAST)이나 코드 품질 검사를 CI 단계에 포함시켜 기준 미달의 코드가 병합되는 것을 방지합니다. ### 2. 지속적 제공 및 배포 (Continuous Delivery/Deployment, CD) * **Continuous Delivery**: CI 단계를 거친 아티팩트를 스테이징 환경까지 자동으로 배포하며, 운영 환경 배포는 수동 승인을 거칩니다. * **Continuous Deployment**: 모든 테스트를 통과한 코드를 운영 환경까지 어떠한 수동 개입 없이 자동으로 배포합니다 [2]. * **배포 전략**: Blue-Green, Canary, Rolling Update 등을 활용하여 서비스 중단 없이 안전하게 배포합니다. ### 3. 파이프라인 구성 요소 * **Source**: Git 등 버전 관리 시스템에서의 이벤트 감지. * **Build**: 소스 코드를 컴파일하고 실행 가능한 형태로 변환. * **Test**: 단위, 통합, 보안 테스트 수행. * **Deploy**: 타겟 환경(Cloud, On-premise 등)으로 배포 및 환경 설정. ## ⚖️ Trade-offs & Caveats * **인프라 복잡성**: 자동화된 파이프라인을 구축하고 유지 관리하는 데 초기 비용과 노력이 많이 듭니다. * **테스트 신뢰성**: 자동화된 테스트의 품질이 낮으면 잘못된 코드가 자동으로 배포되어 서비스 장애를 유발할 수 있습니다. * **보안 리스크**: 파이프라인 자체의 보안(Secrets management 등)이 뚫리면 악성 코드가 배포될 위험이 있습니다. ## 🔗 Knowledge Connections - **Related Topics**: [[DevSecOps|데브섹옵스]], [[SAST|정적 분석]], [[DAST|동적 분석]], [[SCA|구성 분석]], 인프라 자동화(IaC) - **Projects/Contexts**: GitHub Actions, Jenkins, GitLab CI, ArgoCD 활용 - **Contradictions/Notes**: CI/CD는 단순히 도구의 문제가 아니라 '문화'의 문제입니다. 실패 시 즉시 복구하고 문제를 공유하는 팀의 성숙도가 동반되어야 합니다 [1]. --- *Last updated: 2026-05-08*