블루-그린, 롤링, 카나리 배포 비교와 AWS 구현 방법
배포 환경을 개선하면서 무중단 배포의 대표적인 세 가지 방식(블루-그린, 롤링, 카나리)을 비교하고, AWS에서 각각 어떤 서비스로 구현하는지 조사했다.
무중단 배포란?
무중단 배포는 서비스 장애와 배포의 부담을 최소화하기 위해 운영 중인 서비스를 중단하지 않고 신규 소프트웨어를 배포하는 기술
블루-그린 배포(Blue-Green Deployment)

- 개념: 두 개의 환경(블루와 그린)을 유지하며, 현재 운영 중인 서비스 환경을 Blue, 새롭게 배포할 환경을 Green이라고 함
- 배포 과정
- 새로운 버전을 그린 환경에 배포한 후, 충분한 테스트를 거침
- 테스트 완료 후 트래픽을 블루 환경에서 그린 환경으로 전환
- 문제가 발생하면 다시 블루 환경으로 트래픽을 전환하여 롤백 용이
- 장점
- 롤백이 간단하고 위험이 적음
- 테스트가 충분히 이루어진 후에 실제 서비스에 반영
- 호환성 문제 없음
- 단점
- 두 개의 환경을 유지해야 하므로 인프라 비용 증가
롤링 배포(Rolling Deployment)

- 개념: 전체 서버 중 일부씩 점진적으로 새로운 버전을 배포
- 배포 과정
- 전체 서버를 여러 그룹으로 나누고, 한 그룹씩 순차적으로 새로운 버전을 배포
- 한 그룹에 배포가 완료되면 다음 그룹에 배포
- 배포 중 문제가 발생하면 이전 그룹으로 롤백
- 장점:
- 서버 인스턴스를 점진적으로 교체하므로 트래픽이 지속적으로 분산
- 많은 서버 자원을 확보하지 않아도 가능
- 단점
- 배포 과정이 길어질 수 있음
- 복잡한 롤백 절차
- 호환성 문제 (API 변경, 데이터베이스 스키마 변경 등)
카나리 배포(Canary Deployment)

- 개념: 새로운 버전을 소수의 사용자에게 먼저 배포하여 문제 여부를 파악한 후, 점진적으로 배포 범위를 확대
- 절차
- 초기에 전체 사용자 중 일부에게만 새로운 버전 배포
- 문제가 없으면 점차적으로 배포 대상을 늘려가며 최종적으로 모든 사용자에게 배포
- 문제가 발견되면 신속히 이전 버전으로 롤백 가능
- 장점
- 문제 발생 시 영향을 받는 사용자가 적음
- 새로운 버전으로 인한 위험 최소화
- 배포의 안정성 높음
- 단점
- 배포와 롤백 복잡
- 트래픽 관리 필요
- 호환성 문제 (API 변경, 데이터베이스 스키마 변경 등)
무중단 배포 방식 비교
| 요소 | 롤링 배포 (Rolling Deployment) | 카나리 배포 (Canary Deployment) | 블루-그린 배포 (Blue-Green Deployment) |
|---|---|---|---|
| 트래픽과 부하 | 트래픽과 부하가 분산되며, 점진적 업데이트로 트래픽 중단 최소화 | 소규모 트래픽을 새로운 버전으로 라우팅하여 초기 위험을 최소화 | 전환 시점에 트래픽이 한 번에 이동, 충분한 인프라 필요 |
| 배포 시간과 비용 | 몇 시간에서 며칠 소요, 시간 증가로 인해 비용 증가 가능 | 몇 시간에서 며칠 소요, 초기 단계의 추가 모니터링 비용 발생 | 몇 분에서 몇 시간 소요, 두 환경 유지로 인해 비용 증가 |
| 기술적 구현 가능성 | Auto Scaling, Load Balancer 설정 필요 | 트래픽 분할 및 모니터링 설정 필요 | 두 환경 운영 및 Route 53 같은 트래픽 전환 도구 필요 |
적합한 배포 방식 분석 및 AWS 서비스 조사
- 블루 그린 배포 (Blue-Green Deployment)
- 적합한 상황
- 다운타임 없이 안정적으로 새 버전을 배포하고 싶을 때 적합
- 대규모 서비스나 중요한 웹 애플리케이션에 적합
- AWS 관련 서비스:
- Route 53 (DNS 라우팅), Elastic Load Balancing, AWS CloudFormation 또는 AWS CodeDeploy 등
- 두 환경 간의 동기화와 전환 시점 관리가 필요
- Route 53 (DNS 라우팅), Elastic Load Balancing, AWS CloudFormation 또는 AWS CodeDeploy 등
- 롤링 배포 (Rolling Deployment)
- 적합한 상황
- 서버 인스턴스를 점진적으로 업데이트 가능
- 단일 요청에 대한 응답 시간이 상대적으로 짧은 서비스에 적합
- AWS 관련 서비스:
- Auto Scaling, Elastic Load Balancing (Application Load Balancer 등)
- 각 인스턴스의 업데이트를 자동으로 관리하는 설정이 필요
- ECS에서 롤링 업데이트 기능 제공
- Auto Scaling, Elastic Load Balancing (Application Load Balancer 등)
- 카나리 배포 (Canary Deployment)
- 적합한 상황
- 새로운 기능이나 변경 사항의 성능을 안정적으로 평가하고자 할 때 적합
- 특정 지역 또는 사용자 그룹에 대해 실험적으로 배포할 때 유용
- AWS 관련 서비스:
- AWS CodeDeploy, AWS Lambda, CloudWatch 등
- 트래픽을 분할하고 모니터링
- AWS CodeDeploy, AWS Lambda, CloudWatch 등