Blue-Green Deployment

  • 두 환경을 번갈아 사용, 무중단 배포, 빠른 롤백 [2]
  • 활성 (Active) vs 대기 (Standby) 환경 구성
  • 배포 전후 Smoke Test 수행
  • Load Balancer 또는 Ingress 트래픽 전환

Blue-Green Deployment 은 무중단 배포 전략 중 하나로, 애플리케이션의 새 버전을 안전하고 효율적으로 배포하는 방법이다.

Blue-Green 배포는 두 개의 동일한 프로덕션 환경을 유지하는 방식이다:

  1. Blue 환경: 현재 운영 중인 버전
  2. Green 환경: 새로 배포할 버전
    이 두 환경은 완전히 동일한 인프라와 설정을 가지고 있다.

Blue-Green Deployment 은 안전하고 효율적인 배포 전략이지만, 적절한 계획과 자동화가 필요하다. 조직의 요구사항과 인프라 환경에 맞게 적절히 조정하여 사용하는 것이 중요하다.

Blue-Green Deployment Pattern
https://www.redhat.com/ko/topics/devops/what-is-blue-green-deployment

작동 원리

  1. 초기 상태: Blue 환경이 모든 프로덕션 트래픽을 처리한다.
  2. 새 버전 배포: Green 환경에 새 버전의 애플리케이션을 배포한다.
  3. 테스트: Green 환경에서 새 버전을 철저히 테스트한다.
  4. 전환: 트래픽을 Blue 에서 Green 으로 전환한다. 이는 보통 로드 밸런서 설정을 변경하여 수행한다.
  5. 모니터링: Green 환경을 모니터링하여 문제가 없는지 확인한다.
  6. 완료 또는 롤백: 문제가 없다면 Blue 환경을 새로운 버전으로 업데이트하거나, 문제가 있다면 Blue 환경으로 빠르게 롤백한다.

장점

  1. 무중단 배포: 사용자는 배포 과정에서 서비스 중단을 경험하지 않는다.
  2. 빠른 롤백: 문제 발생 시 즉시 이전 버전으로 전환할 수 있다.
  3. 실제 환경에서의 테스트: 프로덕션과 동일한 환경에서 새 버전을 테스트할 수 있다.
  4. 리스크 최소화: 새 버전의 문제를 사전에 발견하고 대응할 수 있다.

단점

  1. 리소스 비용: 두 개의 동일한 환경을 유지해야 하므로 비용이 증가한다.
  2. 데이터베이스 동기화: 두 환경 간 데이터베이스 동기화가 필요할 수 있다.
  3. 복잡성: 두 환경을 관리하고 전환하는 과정이 복잡할 수 있다.

구현 방법

  1. 인프라 준비: 동일한 두 환경 (Blue 와 Green) 을 구성한다.
  2. 배포 자동화: CI/CD 파이프라인을 구축하여 Green 환경에 자동으로 배포한다.
  3. 테스트 자동화: Green 환경에서 자동화된 테스트를 실행한다.
  4. 트래픽 전환: 로드 밸런서 설정을 변경하여 트래픽을 Green 으로 전환한다.
  5. 모니터링: 새 버전의 성능과 오류를 모니터링한다.
  6. 롤백 계획: 문제 발생 시 빠르게 Blue 로 전환할 수 있는 계획을 수립한다.

사용 사례

  1. 웹 애플리케이션: 새로운 기능이나 UI 변경을 안전하게 배포할 때 유용하다.
  2. 마이크로서비스: 개별 서비스를 독립적으로 업데이트할 수 있다.
  3. 데이터베이스 마이그레이션: 스키마 변경이나 대규모 데이터 마이그레이션 시 활용할 수 있다.

도구 및 플랫폼

  1. Kubernetes: 서비스와 인그레스 리소스를 활용하여 구현할 수 있다.
  2. AWS: Route 53 과 Elastic Load Balancer 를 사용하여 구현할 수 있다.
  3. Istio: 서비스 메시를 통해 트래픽을 제어하여 구현할 수 있다.
  4. ArgoCD: Kubernetes 환경에서 Blue-Green 배포를 자동화할 수 있다.

참고 및 출처