카나리 배포(Canary Deployment)는 새 버전을 전체 트래픽의 일부만 새 버전으로 라우팅하여 위험을 점진적으로 검증하는 배포 전략이다. 문제 발생 시 빠르게 이전 버전으로 롤백할 수 있다.
배포 전략 비교
롤링 업데이트: 인스턴스를 순차적으로 교체
v1 v1 v1 v1 → v2 v1 v1 v1 → v2 v2 v1 v1 → v2 v2 v2 v2
블루-그린: 두 환경을 전환
Blue(v1) 운영 중
Green(v2) 준비 → 한 번에 전환
카나리: 트래픽 비율로 점진적 전환
v1: 95% ——→ v1: 80% ——→ v1: 0%
v2: 5% ——→ v2: 20% ——→ v2: 100%
yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
strategy:
canary:
steps:
- setWeight: 5 # 5% 트래픽
- pause: {duration: 10m}
- setWeight: 20
- pause: {duration: 10m}
- setWeight: 50
- pause: {} # 수동 승인
- setWeight: 100
메트릭 기반 자동 프로모션
yaml
analysis:
templates:
- templateName: success-rate
args:
- name: service-name
value: my-app-canary
# 에러율 < 1%이면 자동 진행
# 에러율 > 5%이면 자동 롤백
| 항목 | 카나리 배포 | 피처 플래그 |
|---|
| 제어 단위 | 인스턴스/트래픽 | 코드 내 조건 |
| 롤백 | 재배포 필요 없음 | 플래그 끄기 |
| 적용 범위 | 전체 변경 | 특정 기능 |
관련 개념
- •블루-그린 배포 — 또 다른 무중단 배포
- •피처 플래그 — 코드 레벨 점진적 롤아웃
- •Kubernetes — 카나리 배포 인프라
- •관찰가능성 — 카나리 품질 측정