CI/CD

CI/CD(지속적 통합/지속적 전달 또는 지속적 배포)는 소프트웨어 릴리스 프로세스를 자동화하는 일련의 관행입니다.

지속적 통합 및 지속적 전달(또는 지속적 배포)을 의미하는 CI/CD는 소프트웨어 릴리스 프로세스를 자동화하고 효율성을 개선하는 것을 목표로 하는 일련의 소프트웨어 개발 관행입니다. 지속적 통합(CI)은 개발자가 하루에도 여러 번 코드를 공유 리포지토리에 자주 병합하는 것을 포함합니다. 각 병합은 자동화된 빌드와 자동화된 테스트를 통해 검증됩니다. 이 관행은 통합 오류를 신속하게 감지하여 누적되어 수정하기 어려워지는 것을 방지하는 데 도움이 됩니다. 지속적 전달(CD)은 CI의 자연스러운 확장입니다. 자동화된 테스트를 통과한 코드 변경 사항이 리포지토리 또는 스테이징 환경에 자동으로 릴리스되도록 하여 언제든지 프로덕션에 배포할 준비가 되도록 합니다. 지속적 배포(CD)는 한 단계 더 나아가 검증된 모든 변경 사항을 프로덕션에 자동으로 배포합니다. CI/CD의 핵심 목표는 소프트웨어를 더 빠르고 안정적으로 빌드, 테스트 및 릴리스하여 크고 드문 릴리스와 관련된 위험을 줄이고 시장 요구 또는 사용자 피드백에 더 신속하게 대응할 수 있도록 하는 것입니다. 이는 협업을 촉진하고, 수동 작업을 줄이며, 소프트웨어의 전반적인 품질과 안정성을 향상시킵니다.

        graph LR
  Center["CI/CD"]:::main
  Rel_automation["automation"]:::related -.-> Center
  click Rel_automation "/terms/automation"
  Rel_cicd_pipeline["cicd-pipeline"]:::related -.-> Center
  click Rel_cicd_pipeline "/terms/cicd-pipeline"
  Rel_continuous_delivery["continuous-delivery"]:::related -.-> Center
  click Rel_continuous_delivery "/terms/continuous-delivery"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 지식 테스트

1 / 3

🧒 5살도 이해할 수 있게 설명

CI/CD는 좋아하는 앱을 업데이트하는 매우 빠르고 자동화된 방법과 같습니다. 오랜 시간을 기다려 큰 업데이트를 받는 대신, 작은 변경 사항들이 지속적으로 확인되고 추가되어 항상 최신 개선 사항을 사용할 수 있습니다.

🤓 Expert Deep Dive

CI/CD는 애자일 및 린 소프트웨어 개발을 향한 패러다임 전환을 나타내며, 빠른 피드백 루프와 반복적인 전달을 강조합니다. 시스템 관점에서 볼 때, 소프트웨어 수명 주기를 고도로 자동화되고, 관찰 가능하며, 탄력적인 프로세스로 변환합니다. 지속적 통합은 빈번한 병합과 자동화된 검증을 통해 건강한 코드베이스를 유지하는 데 중점을 두어, 오래 지속되는 기능 브랜치 및 복잡한 통합 단계와 관련된 위험을 완화합니다. 지속적 전달은 프로덕션 배포 시점까지 릴리스 파이프라인을 자동화하여 배포 가능성을 보장하고, 비즈니스 중심의 릴리스 결정을 가능하게 합니다. 지속적 배포는 최종 단계를 자동화하여 거의 즉각적인 가치 전달을 가능하게 합니다. 주요 아키텍처 고려 사항에는 강력한 버전 관리 전략, 효과적인 테스트 자동화 피라미드, 아티팩트 관리 및 인프라 자동화가 포함됩니다. 트레이드오프에는 초기 설정 비용, 성숙한 테스트 문화의 필요성, 제대로 관리되지 않을 경우 운영 복잡성이 증가할 가능성이 있습니다. 취약점은 불충분한 테스트 커버리지, 안전하지 않은 파이프라인 구성 또는 부족한 모니터링에서 발생할 수 있습니다.

📚 출처