[TIL] CI·CD개념 정리-2025.09.15
2025. 9. 15. 17:15ㆍ대외활동/인공지능사관학교
728x90
반응형
SMALL

1. CI·CD의 기본 철학
- CI (Continuous Integration, 지속적 통합)
→ 개발자들이 코드를 자주(하루에도 여러 번) 메인 브랜치에 통합하고, 자동으로 빌드 및 테스트를 실행하여 문제를 빠르게 발견. - CD (Continuous Delivery/Deployment, 지속적 배포/전개)
→ 통합된 코드를 자동으로 패키징하여 운영 환경까지 배포(Delivery), 또는 실제 서비스에 무중단으로 반영(Deployment).
핵심
- 빠른 피드백 루프 (문제를 빨리 발견하고 고친다)
- 자동화와 표준화 (사람이 하면 실수하는 부분을 기계에게 맡긴다)
- 재현성과 안정성 (동일한 코드/환경에서 항상 같은 결과가 나온다)
2. CI·CD 파이프라인 단계별 과정
① 소스 관리 (Source Control)
- 과정: 개발자가 Git 브랜치에 코드를 푸시
- 필수 개념:
- Git 브랜치 전략 (Git-flow, Trunk-based development)
- Pull Request / Merge Request → 코드 리뷰 자동화
② 빌드 (Build)
- 과정: 코드 → 실행 가능한 산출물 (예: Docker 이미지, JAR 파일)
- 필수 개념:
- Build automation (Maven, Gradle, npm, Docker build)
- Infrastructure as Code (IaC) → 환경 일관성 보장
③ 테스트 (Test)
- 과정: 자동화된 테스트 실행
- 종류:
- Unit Test (단위 기능 확인)
- Integration Test (모듈 간 상호작용 확인)
- End-to-End Test (실제 사용자 시나리오 검증)
- 필수 개념:
- 테스트 피라미드 (단위 > 통합 > E2E 순 비중)
- Code Quality (Lint, SonarQube 같은 정적 분석 도구)
④ 배포 (Deploy)
- 과정: 빌드된 산출물을 Staging → Production 환경으로 자동 배포
- 배포 전략:
- Blue-Green Deployment: 두 개의 동일한 환경 운영, 트래픽 스위칭
- Canary Release: 일부 사용자에게만 배포, 문제 없으면 전체 적용
- Rolling Update: 컨테이너를 하나씩 교체하며 배포
- 필수 개념:
- 무중단 배포 (Zero-downtime)
- Rollback 전략 (배포 실패 시 이전 버전 복원)
⑤ 모니터링 (Monitoring & Feedback)
- 과정: 배포 후 서비스 상태/성능/오류 추적
- 필수 개념:
- Observability (가시성) → Metrics, Logs, Traces
- SLA/SLO/SLI 개념 (서비스 신뢰성 지표)
- Alerting (문제 발생 시 알림)
3. CI·CD 파이프라인 아키텍처
[개발자 Commit]
↓
[CI 서버 (GitHub Actions / Jenkins)]
↓
Build & Test
↓
Artifact 생성 (Docker Registry, Nexus 등)
↓
[CD 서버 (ArgoCD / Spinnaker)]
↓
Deploy (Kubernetes / VM / Cloud)
↓
Monitoring & Alert
4. 주요 도구와 실무 적용
- CI 서버: Jenkins, GitHub Actions, GitLab CI, CircleCI
- Artifact 저장소: Docker Hub, AWS ECR, Naver Cloud CCR
- 배포 도구: ArgoCD, Spinnaker, Helm, Terraform (IaC)
- 관찰(Observability): Prometheus, Grafana, ELK(Elastic Stack)
5. 알아야 할 이론적 개념
- 파이프라인 설계 원칙
- 작은 단위로 빠르게 실패(Fail Fast)
- 병렬 실행 가능 여부 고려 (예: 유닛 테스트 병렬화)
- 환경 일관성 (Dev = Staging = Prod)
- 인프라 개념
- 컨테이너화(Docker)
- 오케스트레이션(Kubernetes)
- IaC(Terraform, Ansible)
- 릴리즈 관리
- 버전 관리 (Semantic Versioning)
- Feature flag (기능 토글로 점진적 배포)
6. 정리
- CI는 코드의 품질을 보장하는 것,
- CD는 코드가 안정적으로 사용자에게 전달되도록 하는 것.
- 둘 다 자동화를 통해 개발 속도↑, 안정성↑, 리스크↓ 효과를 가져옴.
728x90
반응형
LIST
'대외활동 > 인공지능사관학교' 카테고리의 다른 글
| [TIL] CI/CD 파이프라인과 ECS 블루/그린 배포 실습-2025.09.16 (1) | 2025.09.16 |
|---|---|
| [AI Crew]AI 이미지 제작 툴 비교 체험기 – DALL·E, GPT, Bing, 나노 바나나 그리고 추천 툴까지/인공지능사관학교6기 (1) | 2025.09.16 |
| [AI Crew]인공지능사관학교 AI Crew 활동 소개와 경험 공유/인공지능사관학교6기 (0) | 2025.09.13 |
| [TIL]AWS CloudFormation & DevOps 개념 정리-2025.09.12 (0) | 2025.09.12 |
| [AI Crew]출석·공가 처리부터 공지 확인, TIL까지 완벽 체크리스트/인사교6기 (0) | 2025.09.12 |