Wikify: Batch 31 - Core Architecture & DevOps Standards
This commit is contained in:
+61
-25
@@ -1,32 +1,68 @@
|
||||
---
|
||||
id: [[P-Reinforce|P-Reinforce]]-AUTO-CICD-001
|
||||
category: Unified
|
||||
confidence_score: 0.98
|
||||
tags: [auto-reinforced, cicd, devops, automation, continuous-integration, continuous-deployment]
|
||||
last_reinforced: 2026-04-20
|
||||
tags: [DevOps, Automation, CI, CD, Deployment]
|
||||
title: CI/CD (Continuous Integration & Continuous Deployment)
|
||||
description: 코드의 지속적인 통합과 자동화된 배포를 통해 고품질의 소프트웨어를 신속하고 안정적으로 배포하는 프로세스
|
||||
last_updated: 2026-05-02
|
||||
---
|
||||
|
||||
# [[CI_CD|CI_CD]]
|
||||
# CI/CD (Continuous Integration & Continuous Deployment)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "멈추지 않는 공장 라인: 코드 한 줄이 바뀌는 순간 자동으로 빌드, 테스트, 배포가 이뤄지게 함으로써 개발의 사이클을 극도로 단축시키고 품질을 시스템으로 보장하는 현대 소프트웨어 공학의 엔진."
|
||||
## 📌 Brief Summary
|
||||
**CI/CD**는 현대 소프트웨어 개발의 핵심인 데브옵스(DevOps)의 기반입니다. **지속적 통합(CI)**은 개발자가 변경한 코드를 정기적으로 공유 저장소에 병합하고 자동 빌드 및 테스트를 수행하여 초기 결함을 발견하는 단계입니다. **지속적 제공/배포(CD)**는 통합된 코드를 검증된 환경에 자동으로 출시하여 사용자에게 가치를 전달하는 단계입니다. 이를 통해 수동 배포로 인한 실수를 방지하고 개발 주기를 획기적으로 단축합니다.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
CI/CD는 지속적 통합(Continuous Integration)과 지속적 제공/배포(Continuous Delivery/Deployment)를 결합한 개념입니다.
|
||||
|
||||
1. **CI (지속적 통합)**:
|
||||
* 모든 개발자가 작업한 코드를 하루에도 여러 번 메인 브랜치에 통합.
|
||||
* 통합 시 자동 빌드와 자동 테스트가 수행되어 충돌을 조기에 발견. (Workflow-Inte[[Grit|Grit]]y와 연결)
|
||||
2. **CD (지속적 배포)**:
|
||||
* 테스트를 통과한 코드가 신뢰할 수 있는 상태로 유지되거나, 실제 운영 서버에 자동으로 반영되는 과정.
|
||||
3. **왜 중요한가?**:
|
||||
* 릴리스 주기(Time to Market)를 혁신적으로 단축하고, 수동 배포로 인한 인적 오류(Human Error)를 제거함. ([[Scalability|Scalability]] 고도화)
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌**: 과거의 배포 정책은 '정기 점검 날'에 모든 기능을 몰아서 수동으로 배포하는 정책이었으나, 현대 정책은 기능 단위로 쪼개어 수시로 배포하는 '무중단 배포 정책'으로 완전히 전환됨(RL Update).
|
||||
- **정책 변화(RL Update)**: 단순히 코드만 배포하는 정책을 넘어, AI 모델의 성능을 지속적으로 모니터링하고 재학습시키는 '[[MLOps|MLOps]] 파이프라인(Continuous Training) 정책'이 CI/CD의 새로운 확장 영역으로 포함됨.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- [[Workflow-Integrity|Workflow-Integrity]], [[Scalability|Scalability]], [[Backend|Backend]], [[Security-Governance|Security-Governance]], [[Automated-Decision-Making|Automated-Decision-Making]]
|
||||
- **Modern Tech/Tools**: [[GitHub Actions|GitHub Actions]], Jenkins, [[GitLab CI|GitLab CI]], ArgoCD, Docker/K8s.
|
||||
---
|
||||
|
||||
## 📖 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*
|
||||
|
||||
Reference in New Issue
Block a user