Blue-Green Deployment
- 두 환경을 번갈아 사용, 무중단 배포, 빠른 롤백 [2]
- 활성 (Active) vs 대기 (Standby) 환경 구성
- 배포 전후 Smoke Test 수행
- Load Balancer 또는 Ingress 트래픽 전환
Blue-Green Deployment 은 무중단 배포 전략 중 하나로, 애플리케이션의 새 버전을 안전하고 효율적으로 배포하는 방법이다.
Blue-Green 배포는 두 개의 동일한 프로덕션 환경을 유지하는 방식이다:
- Blue 환경: 현재 운영 중인 버전
- Green 환경: 새로 배포할 버전
이 두 환경은 완전히 동일한 인프라와 설정을 가지고 있다.
Blue-Green Deployment 은 안전하고 효율적인 배포 전략이지만, 적절한 계획과 자동화가 필요하다. 조직의 요구사항과 인프라 환경에 맞게 적절히 조정하여 사용하는 것이 중요하다.
작동 원리
- 초기 상태: Blue 환경이 모든 프로덕션 트래픽을 처리한다.
- 새 버전 배포: Green 환경에 새 버전의 애플리케이션을 배포한다.
- 테스트: Green 환경에서 새 버전을 철저히 테스트한다.
- 전환: 트래픽을 Blue 에서 Green 으로 전환한다. 이는 보통 로드 밸런서 설정을 변경하여 수행한다.
- 모니터링: Green 환경을 모니터링하여 문제가 없는지 확인한다.
- 완료 또는 롤백: 문제가 없다면 Blue 환경을 새로운 버전으로 업데이트하거나, 문제가 있다면 Blue 환경으로 빠르게 롤백한다.
장점
- 무중단 배포: 사용자는 배포 과정에서 서비스 중단을 경험하지 않는다.
- 빠른 롤백: 문제 발생 시 즉시 이전 버전으로 전환할 수 있다.
- 실제 환경에서의 테스트: 프로덕션과 동일한 환경에서 새 버전을 테스트할 수 있다.
- 리스크 최소화: 새 버전의 문제를 사전에 발견하고 대응할 수 있다.
단점
- 리소스 비용: 두 개의 동일한 환경을 유지해야 하므로 비용이 증가한다.
- 데이터베이스 동기화: 두 환경 간 데이터베이스 동기화가 필요할 수 있다.
- 복잡성: 두 환경을 관리하고 전환하는 과정이 복잡할 수 있다.
구현 방법
- 인프라 준비: 동일한 두 환경 (Blue 와 Green) 을 구성한다.
- 배포 자동화: CI/CD 파이프라인을 구축하여 Green 환경에 자동으로 배포한다.
- 테스트 자동화: Green 환경에서 자동화된 테스트를 실행한다.
- 트래픽 전환: 로드 밸런서 설정을 변경하여 트래픽을 Green 으로 전환한다.
- 모니터링: 새 버전의 성능과 오류를 모니터링한다.
- 롤백 계획: 문제 발생 시 빠르게 Blue 로 전환할 수 있는 계획을 수립한다.
사용 사례
- 웹 애플리케이션: 새로운 기능이나 UI 변경을 안전하게 배포할 때 유용하다.
- 마이크로서비스: 개별 서비스를 독립적으로 업데이트할 수 있다.
- 데이터베이스 마이그레이션: 스키마 변경이나 대규모 데이터 마이그레이션 시 활용할 수 있다.
도구 및 플랫폼
- Kubernetes: 서비스와 인그레스 리소스를 활용하여 구현할 수 있다.
- AWS: Route 53 과 Elastic Load Balancer 를 사용하여 구현할 수 있다.
- Istio: 서비스 메시를 통해 트래픽을 제어하여 구현할 수 있다.
- ArgoCD: Kubernetes 환경에서 Blue-Green 배포를 자동화할 수 있다.