배포전략, Blue-Green 배포, Canary 배포

리본24·2025년 2월 14일

✅ Canary 배포 vs Blue-Green 배포

구분Canary 배포 🐤Blue-Green 배포 🔵🟢
배포 방식점진적 배포 (일부 트래픽)전체 배포 (한 번에 전환)
롤백 방법트래픽 다시 기존 버전으로기존 환경으로 즉시 전환
적용 예시MSA, 대규모 트래픽 서비스, A/B테스트,
실시간 모니터링 필요 서비스
금융, 이커머스, B2B 엔터프라이즈,
무중단 배포필요시

🔵🟢 Blue-Green 배포란?

Blue-Green 배포(Blue-Green Deployment)는 두 개의 환경(Blue와 Green)을 운영하면서, 한쪽을 업데이트한 후 전체 트래픽을 전환하는 배포 방식.

즉, 운영 중인 시스템(Blue)을 유지하면서 새로운 버전(Green)을 배포한 후, 문제가 없으면 트래픽을 Green으로 완전히 전환하는 전략.

✅ 즉시 롤백 가능하고, 다운타임(서비스 중단)이 없는 배포 방식! 🚀


✅ Blue-Green 배포의 원리

1️⃣ 운영 중인 버전(Blue)과 새로운 버전(Green)을 동시에 준비
2️⃣ Green 환경에서 테스트 및 안정성 검증
3️⃣ 모든 트래픽을 한 번에 Green으로 전환
4️⃣ 이전 버전(Blue)은 유지 or 삭제(롤백 대비)


🚀 Blue-Green 배포 과정

🎯 예제: 버전 v1(Blue)에서 v2(Green)로 배포하는 과정
1. 현재 운영 중인 v1(Blue)이 서비스 중
2. 새로운 버전 v2(Green) 배포 및 테스트
3. 테스트 완료 후 모든 트래픽을 v2(Green)으로 전환
4. 문제 발생 시 다시 v1(Blue)으로 롤백 가능


✅ Blue-Green 배포 구현 방법

  1. 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;  # 🔄 전환 시 이 부분을 변경
        }
    }
  1. 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-Green 배포의 장점 & 단점

  • ✅ 장점
    ✔ 다운타임 없이 배포 가능
    ✔ 빠른 롤백 가능 (Blue 유지 시)
    ✔ 테스트 환경과 실제 운영 환경이 동일

  • ❌ 단점
    ❌ 두 개의 환경을 운영해야 해서 비용 증가
    ❌ 데이터베이스 변경 시 롤백 어려움
    ❌ 트래픽이 한 번에 전환되므로 리스크 있음


🐤 Canary 배포란?

Canary 배포(배출, Canary Deployment)는 새로운 버전의 애플리케이션을 전체 배포하기 전에, 일부 사용자에게만 먼저 배포하여 문제를 감지하는 방식.

즉, 전체 시스템을 위험에 빠뜨리지 않고, 작은 규모에서 먼저 테스트하는 전략, 이름은 광부들이 유독가스를 감지하기 위해 카나리아(새)를 먼저 보낸 것에서 유래


✅ Canary 배포의 핵심 원리

  • 소수의 사용자(트래픽)만 새로운 버전으로 라우팅
  • 문제 발생 시 즉시 롤백 가능
  • 안정성이 확인되면 점진적으로 전체 배포 진행

🚀 Canary 배포 흐름

  • 1️⃣ 현재 운영 중인 애플리케이션(Stable Version)
    - 예) 기존 v1 서비스가 정상 동작 중

  • 2️⃣ 새로운 버전(v2) Canary 배포 시작
    - 트래픽의 일부(예: 5~10%)만 v2로 라우팅

  • 3️⃣ 모니터링 및 검증
    - 성능, 오류, 로그 모니터링
    - 문제 없으면 Canary 대상 확대

  • 4️⃣ 전체 배포(Gradual Rollout)
    - 10% → 30% → 50% → 100%
    - 문제가 생기면 즉시 v1로 롤백


✅ Canary 배포 구현 방법

    1. Nginx + Canary 배포
      Nginx의 weight를 사용해 특정 트래픽만 Canary로 보낼 수 있음.
upstream backend {
    server app-v1:80 weight=90;  # 기존 서비스 90%
    server app-v2:80 weight=10;  # 신규 Canary 10%
}
    1. Kubernetes Canary 배포 (Istio 사용)
  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 배포를 사용하는 이유

✅ 문제 발생 시 즉시 롤백 가능
✅ 사용자 경험 최소 영향
✅ 대규모 시스템에서도 안전한 배포 가능


🤔 현업에서는 어떤 방식을 더 많이 사용할까?

🐤 Canary 배포가 더 많이 사용되는 경우

Canary 배포는 점진적인 롤아웃을 통해 리스크를 최소화하는 방식
특히, 대규모 트래픽을 처리하는 클라우드 네이티브 환경에서 많이 사용.

✅ 주요 사용 사례:

  • 마이크로서비스 아키텍처 (MSA)
  • 대규모 트래픽을 처리하는 클라우드 네이티브 환경
  • 새로운 기능 배포 시 버그 발생 가능성이 높은 경우 (A/B 테스트 포함)
  • 실시간 모니터링 및 피드백이 중요한 서비스
  • 📌 예시:
    - Netflix, Google, Amazon
    - Canary 배포를 사용해 새로운 기능을 일부 사용자에게만 점진적으로 제공
    - Kubernetes + Service Mesh 환경 (Istio, Linkerd)
    - Canary 배포가 기본 전략으로 활용됨

🔵🟢 Blue-Green 배포가 더 많이 사용되는 경우

Blue-Green 배포는 무중단 배포와 빠른 롤백이 중요한 서비스에서 많이 활용.
특히, 금융, 이커머스, B2B 엔터프라이즈 환경에서 선호되는 배포 방식.

✅ 주요 사용 사례:

  • 무중단 배포가 필수적인 서비스
  • 대규모 장애 발생을 방지해야 하는 환경
  • 데이터베이스 변경이 적고, 빠른 롤백이 필요한 경우
  • CI/CD 파이프라인이 구축된 전통적인 서비스 (Monolithic 구조)
  • 📌 예시:
    - 은행, 증권사, 보험사: 고객 자산과 관련된 서비스이므로 Canary보다는 안정적인 Blue-Green 배포를 선호
    - 이커머스 (쿠팡, 11번가 등): 대형 프로모션 시 장애 방지를 위해 빠른 롤백이 가능한 Blue-Green 배포 활용

💡 우리 회사에는 어떤 배포 전략이 적합할까?

Canary 배포

  • 새로운 기능을 안전하게 배포하고 싶은 경우
  • 마이크로서비스 및 클라우드 네이티브 환경을 사용하는 경우
  • 실시간 모니터링 및 A/B 테스트가 필요한 경우

Blue-Green 배포

  • 무중단 배포와 빠른 롤백이 필수적인 경우
  • 금융, B2B, 엔터프라이즈 서비스처럼 안정성이 중요한 경우
  • CI/CD가 잘 구축된 전통적인 서비스

💡 Canary 배포와 Blue-Green 배포를 함께 사용할 수도 있을까?

  • 가능! 🚀
    - Canary 배포로 점진적 롤아웃 후, Blue-Green 배포로 전체 전환하는 방식도 활용 가능
    - 예를 들어, 10% 트래픽을 Canary로 전환 → 이상 없으면 전체 트래픽을 Blue-Green 방식으로 전환하는 방식이 가능

👉 결론:

  • 빠르게 롤아웃하고 피드백을 받고 싶다면 Canary 배포! 🐤
  • 안정성이 중요하고, 빠른 롤백이 필요하다면 Blue-Green 배포! 🔵🟢
  • 둘을 조합하면 더욱 효과적인 배포 전략을 만들 수 있음! 💡
profile
기록하고 소화해보자! 소화가 안되거나 까먹으면 다시 꺼내서 보자! 오늘의 나는 어제의 나보다 강하다!

0개의 댓글