| 구분 | Canary 배포 🐤 | Blue-Green 배포 🔵🟢 |
|---|---|---|
| 배포 방식 | 점진적 배포 (일부 트래픽) | 전체 배포 (한 번에 전환) |
| 롤백 방법 | 트래픽 다시 기존 버전으로 | 기존 환경으로 즉시 전환 |
| 적용 예시 | MSA, 대규모 트래픽 서비스, A/B테스트, 실시간 모니터링 필요 서비스 | 금융, 이커머스, B2B 엔터프라이즈, 무중단 배포필요시 |
Blue-Green 배포(Blue-Green Deployment)는 두 개의 환경(Blue와 Green)을 운영하면서, 한쪽을 업데이트한 후 전체 트래픽을 전환하는 배포 방식.
즉, 운영 중인 시스템(Blue)을 유지하면서 새로운 버전(Green)을 배포한 후, 문제가 없으면 트래픽을 Green으로 완전히 전환하는 전략.
✅ 즉시 롤백 가능하고, 다운타임(서비스 중단)이 없는 배포 방식! 🚀
1️⃣ 운영 중인 버전(Blue)과 새로운 버전(Green)을 동시에 준비
2️⃣ Green 환경에서 테스트 및 안정성 검증
3️⃣ 모든 트래픽을 한 번에 Green으로 전환
4️⃣ 이전 버전(Blue)은 유지 or 삭제(롤백 대비)
🎯 예제: 버전 v1(Blue)에서 v2(Green)로 배포하는 과정
1. 현재 운영 중인 v1(Blue)이 서비스 중
2. 새로운 버전 v2(Green) 배포 및 테스트
3. 테스트 완료 후 모든 트래픽을 v2(Green)으로 전환
4. 문제 발생 시 다시 v1(Blue)으로 롤백 가능
Nginx + Blue-Green 배포
Nginx의 proxy_pass를 활용해 한 번에 트래픽을 Green으로 전환 가능.
# Blue (현재 운영 중)
upstream blue {
server app-v1:80;
}
# Green (새로운 버전)
upstream green {
server app-v2:80;
}
server {
listen 80;
location / {
proxy_pass http://green; # 🔄 전환 시 이 부분을 변경
}
}
Kubernetes Blue-Green 배포 (Ingress 사용)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: my-app.example.com
http:
paths:
- path: /
backend:
service:
name: my-app-green # 🔄 Blue → Green으로 전환
port:
number: 80
✅ 장점
✔ 다운타임 없이 배포 가능
✔ 빠른 롤백 가능 (Blue 유지 시)
✔ 테스트 환경과 실제 운영 환경이 동일
❌ 단점
❌ 두 개의 환경을 운영해야 해서 비용 증가
❌ 데이터베이스 변경 시 롤백 어려움
❌ 트래픽이 한 번에 전환되므로 리스크 있음
Canary 배포(배출, Canary Deployment)는 새로운 버전의 애플리케이션을 전체 배포하기 전에, 일부 사용자에게만 먼저 배포하여 문제를 감지하는 방식.
즉, 전체 시스템을 위험에 빠뜨리지 않고, 작은 규모에서 먼저 테스트하는 전략, 이름은 광부들이 유독가스를 감지하기 위해 카나리아(새)를 먼저 보낸 것에서 유래
1️⃣ 현재 운영 중인 애플리케이션(Stable Version)
- 예) 기존 v1 서비스가 정상 동작 중
2️⃣ 새로운 버전(v2) Canary 배포 시작
- 트래픽의 일부(예: 5~10%)만 v2로 라우팅
3️⃣ 모니터링 및 검증
- 성능, 오류, 로그 모니터링
- 문제 없으면 Canary 대상 확대
4️⃣ 전체 배포(Gradual Rollout)
- 10% → 30% → 50% → 100%
- 문제가 생기면 즉시 v1로 롤백
upstream backend {
server app-v1:80 weight=90; # 기존 서비스 90%
server app-v2:80 weight=10; # 신규 Canary 10%
}
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
spec:
hosts:
- my-app.example.com
http:
- route:
- destination:
host: my-app-v1
weight: 90 # 기존 v1 90%
- destination:
host: my-app-v2
weight: 10 # Canary v2 10%
✅ 문제 발생 시 즉시 롤백 가능
✅ 사용자 경험 최소 영향
✅ 대규모 시스템에서도 안전한 배포 가능
Canary 배포는 점진적인 롤아웃을 통해 리스크를 최소화하는 방식
특히, 대규모 트래픽을 처리하는 클라우드 네이티브 환경에서 많이 사용.
✅ 주요 사용 사례:
Blue-Green 배포는 무중단 배포와 빠른 롤백이 중요한 서비스에서 많이 활용.
특히, 금융, 이커머스, B2B 엔터프라이즈 환경에서 선호되는 배포 방식.
✅ 주요 사용 사례: