# [[Continuous Integration & Continuous Deployment (CI/CD)]] ## πŸ“Œ Brief Summary 지속적 톡합 및 지속적 배포(CI/CD)λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ½”λ“œμ— λ³€κ²½ 사항이 λ°œμƒν•  λ•Œλ§ˆλ‹€ λΉŒλ“œ νŒŒμ΄ν”„λΌμΈμ„ 톡해 μžλ™μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν…ŒμŠ€νŠΈν•˜κ³  λ°°ν¬ν•˜λŠ” 개발 κ΄€ν–‰μž…λ‹ˆλ‹€ [1]. λ‹€μˆ˜μ˜ κ°œλ°œμžκ°€ λ™μΌν•œ μ½”λ“œλ² μ΄μŠ€μ— λ³€κ²½ 사항을 μ§€μ†μ μœΌλ‘œ ν‘Έμ‹œν•  λ•Œ, μžλ™ν™”λœ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜μ—¬ μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ κ²€μ¦ν•˜κ³  κ°œλ°œμžμ—κ²Œ λΉ λ₯Έ ν”Όλ“œλ°±μ„ μ œκ³΅ν•˜λŠ” 핡심 인프라 역할을 ν•©λ‹ˆλ‹€ [2, 3]. λ¦¬νŒ©ν† λ§μ΄λ‚˜ μƒˆλ‘œμš΄ κΈ°λŠ₯ 개발 μ‹œ μ½”λ“œκ°€ 망가지지 μ•Šμ•˜λŠ”μ§€ 보μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” μžλ™ν™”λœ ν…ŒμŠ€νŠΈκ°€ CI/CD νŒŒμ΄ν”„λΌμΈμ— μ™„λ²½ν•˜κ²Œ ν†΅ν•©λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [1, 4]. ## πŸ“– Core Content * **CI νŒŒμ΄ν”„λΌμΈμ˜ ν•„μˆ˜ μš”κ±΄**: 단일 μžλ™ν™” ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜κΈ° 전에, κΈ°λŠ₯적이고 μ‹ λ’°ν•  수 μžˆλŠ” CI νŒŒμ΄ν”„λΌμΈμ΄ λ¨Όμ € κ΅¬μΆ•λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [3]. μ΄λŠ” λͺ¨λ“  μ»€λ°‹μ—μ„œ νŠΈλ¦¬κ±°λ˜λŠ” μžλ™ν™”λœ λΉŒλ“œ, μΌκ΄€λœ λΉŒλ“œ ν™˜κ²½, 그리고 μ½”λ“œ λ³€κ²½μœΌλ‘œ μΈν•œ 였λ₯˜ λ°œμƒ μ—¬λΆ€λ₯Ό 수 λΆ„ 내에 κ°œλ°œμžμ—κ²Œ μ•Œλ €μ£ΌλŠ” λͺ…ν™•ν•œ ν”Όλ“œλ°± 루프λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€ [3]. * **ν…ŒμŠ€νŠΈ 속도와 νŒŒμ΄ν”„λΌμΈ 단계 ꡬ성**: CI/CD 배포 νŒŒμ΄ν”„λΌμΈμ˜ κ°€μž₯ 기본적인 κ°€μΉ˜λŠ” 'λΉ λ₯Έ ν”Όλ“œλ°±(Fast Feedback)'에 μžˆμŠ΅λ‹ˆλ‹€ [1]. λ”°λΌμ„œ μ‹€ν–‰ μ‹œκ°„μ΄ μ§§κ³  λ²”μœ„κ°€ 쒁은 λ‹¨μœ„ ν…ŒμŠ€νŠΈ 및 톡합 ν…ŒμŠ€νŠΈλŠ” νŒŒμ΄ν”„λΌμΈμ˜ 초기 단계에 λ°°μΉ˜ν•˜μ—¬ 10~15λΆ„ 내에 μ‹ μ†ν•œ ν”Όλ“œλ°±μ„ λ°›μ•„μ•Ό ν•˜λ©°, μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ ν…ŒμŠ€νŠΈλŠ” ν›„λ°˜ 단계에 λ°°μΉ˜ν•˜μ—¬ λΉ λ₯Έ ν”Όλ“œλ°±μ˜ 지연을 막아야 ν•©λ‹ˆλ‹€ [5, 6]. * **λŒ€κ·œλͺ¨ ν™˜κ²½(SAFe)μ—μ„œμ˜ CI/CD 적용**: 규λͺ¨κ°€ 큰 μ—”ν„°ν”„λΌμ΄μ¦ˆ ν™˜κ²½μ—μ„œ 지속적 배포 νŒŒμ΄ν”„λΌμΈμ€ 전체 μ• μžμΌ 릴리슀 트레인(ART)에 걸쳐 ν™•μž₯λ©λ‹ˆλ‹€ [7]. κ°œλ³„ νŒ€λ“€μ€ 자체적인 CI ν”„λ‘œμ„ΈμŠ€λ₯Ό μœ μ§€ν•˜λ©°, 톡합을 λ‹΄λ‹Ήν•˜λŠ” μ‹œμŠ€ν…œ νŒ€μ€ 'μ½”λ“œν˜• 인프라(Infrastructure as Code)'λ₯Ό 톡해 μˆ˜λ™ ꡬ성이 μ•„λ‹Œ 일관성 있고 반볡 κ°€λŠ₯ν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ ν”„λ‘œλΉ„μ €λ‹ν•©λ‹ˆλ‹€ [7]. * **λ¦¬νŒ©ν† λ§κ³Όμ˜ 유기적 톡합**: λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ μž‘μ€ ꡬ쑰적 변경을 μˆ˜ν–‰ν•œ μ§ν›„μ—λŠ” 항상 CI ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜μ—¬ 버그 μœ μž… μœ„ν—˜μ„ 차단해야 ν•©λ‹ˆλ‹€ [4]. λ§ˆν‹΄ νŒŒμšΈλŸ¬κ°€ μ œμ‹œν•œ λ¦¬νŒ©ν† λ§ 방법둠 μ—­μ‹œ ν˜„λŒ€μ˜ DevOps 및 CI/CD νŒŒμ΄ν”„λΌμΈμ— 널리 μ±„νƒλ˜μ–΄ μ•ˆμ „ν•œ μ‹œμŠ€ν…œ ꡬ쑰 κ°œμ„ μ— κΈ°μ—¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [8]. ## βš–οΈ Trade-offs & Caveats * **ν…ŒμŠ€νŠΈ λΉ„λŒ€ν™” 및 ν”Όλ“œλ°± μ§€μ—°**: CI νŒŒμ΄ν”„λΌμΈ λ‚΄μ—μ„œ 무겁고 μ‹€ν–‰ 속도가 느린 μ—”λ“œνˆ¬μ—”λ“œ(End-to-End) ν…ŒμŠ€νŠΈλ‚˜ UI ν…ŒμŠ€νŠΈμ— κ³Όλ„ν•˜κ²Œ 의쑴(μ—­ ν…ŒμŠ€νŠΈ ν”ΌλΌλ―Έλ“œ μ•ˆν‹° νŒ¨ν„΄)ν•˜κ²Œ 되면, λΉŒλ“œ λΉˆλ„κ°€ κΈ‰λ½ν•˜κ³  νŒŒμ΄ν”„λΌμΈ 싀행에 수 μ‹œκ°„μ΄ μ†Œμš”λ˜λŠ” λΆ€μž‘μš©μ΄ λ°œμƒν•©λ‹ˆλ‹€ [9]. 컀버리지(Coverage) μ§€ν‘œμ—λ§Œ μ§‘μ°©ν•˜μ—¬ μ‹€ν–‰ 속도λ₯Ό ν¬μƒν•˜λŠ” 것은 잘λͺ»λœ μ΅œμ ν™”μ΄λ©°, 적용 λ²”μœ„μ™€ 속도, μ‹ λ’°μ„± κ°„μ˜ μ‹œμŠ€ν…œμ  κ· ν˜•μ„ λ§žμΆ°μ•Ό ν•©λ‹ˆλ‹€ [10]. * **ν…ŒμŠ€νŠΈ ν™˜κ²½ 곡유둜 μΈν•œ κ±°μ§“ μ‹€νŒ¨(False Failures)**: μ—¬λŸ¬ νŒ€μ΄ λ™μΌν•œ CI ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ λ™μ‹œμ— κ³΅μœ ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•  경우, 연쇄적인 μ‹€νŒ¨κ°€ λ°œμƒν•˜μ—¬ μ •ν™•νžˆ μ–΄λ–€ μ½”λ“œ 변경이 문제λ₯Ό μΌμœΌμΌ°λŠ”μ§€ νŒλ³„ν•˜κΈ° λΆˆκ°€λŠ₯ν•΄μ§€λŠ” 치λͺ…적인 μ œμ•½μ΄ λ”°λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€ [11]. * **λΆˆμ™„μ „ν•œ μΈν”„λΌλ‘œ μΈν•œ 투자 λ‚­λΉ„**: μ•ˆμ •μ μΈ CI νŒŒμ΄ν”„λΌμΈ 인프라가 사전에 λ§ˆλ ¨λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄, 개발 νŒ€μ΄ 아무리 ν›Œλ₯­ν•œ μžλ™ν™” ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λ”λΌλ„ 이λ₯Ό μ‹€ν–‰ν•  곡간과 ν”Όλ“œλ°±μ„ 전달할 λ©”μ»€λ‹ˆμ¦˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ ν…ŒμŠ€νŠΈμ˜ κ°€μΉ˜κ°€ μƒμ‹€λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€ [3]. --- *Last updated: 2026-05-03*