Amazon ECS
2025년 7월 17일, AWS는 ALB, NLB 또는 ECS Service Connect를 통해 트래픽을 처리하는 ECS 서비스에대해 '블루/그린 배포 전략'을 기본으로 지원한다고 발표했습니다.
블루/그린 배포 전략을 사용하면 Amazon ECS는 기존 애플리케이션 버전과 함께 새로운 애플리케이션버전을 프로비저닝합니다. 이를 통해 프로덕션 트래픽을 새로운 애플리케이션으로 라우팅하기 전에 새버전을 미리 검증할 수 있습니다.
또한, 배포 수명 주기(Lifecycle) 후크를 사용하여 사용자 지정 검증 단계를 수행하고 검증이 완료될 때까지 배포를 대기시킬 수도 있습니다. 아울러 프로덕션 트래픽이 새로운 버전으로 전환된 후에는 미리 지정된 기간 동안 새 애플리케이션을 안정화(Bake)하고 이 과정에서 회귀(Regression)가 탐지되면 가동 중지 시간 없이 이전 버전으로 즉시 롤백할 수 있습니다.
Amazon CloudWatch 경보 및 ECS 배포 회로 차단기(Circuit Breaker)를 구성하여 배포를 모니터링하고 장애를 자동으로 탐지하는 것도 가능합니다. 이러한 기능을 함께 사용하면 소프트웨어 업데이트의 안정성을 높이고 새로운 기능을 더 빠르게 제공할 수 있습니다.
AWS 콘솔에서 확인되는 ECS 배포 전략은 아래와 같이 네 종류입니다.

기본 옵션인 롤링 업데이트를 블루/그린 업데이트로 구성을 변경해 보겠습니다. 단순한 배포 옵션 변경이므로 네트워킹 설정은 그대로 유지합니다.

참고로 블루/그린 배포를 위해서는 로드밸런싱 또는 서비스 연결(Service Connect)을 먼저 구성해야 합니다.

로드밸런싱 구성 후 배포 옵션을 블루/그린으로 변경할 수 있습니다.

이제 상세하게 검증해 보겠습니다. 로컬 도커(Docker)에서 블루/그린 이미지를 각각 빌드하여 ECR로 푸시한 뒤 ECS 블루/그린 배포 시 해당 이미지가 실제로 잘 동작하는지 확인합니다.
먼저 블루 버전의 Dockerfile을 작성하고 빌드합니다.
# Dockerfile.v1
FROM nginx:alpine
RUN echo '<h1>NGINX v1 - BLUE</h1>' > /usr/share/nginx/html/index.html빌드 및 실행은 다음과 같이 합니다.
# 빌드 및 실행
docker build -f Dockerfile.v1 -t nginx-blue:v1 .
docker run --rm -p 8080:80 nginx-blue:v1
다음으로 그린 버전의 Dockerfile을 작성하고 빌드합니다.
# Dockerfile.v2
FROM nginx:alpine
RUN echo '<h1>NGINX v2 - GREEN</h1>' > /usr/share/nginx/html/index.html빌드 및 실행은 다음과 같이 합니다.
# 빌드 및 실행
docker build -f Dockerfile.v2 -t nginx-green:v2 .
docker run --rm -p 8081:80 nginx-green:v2
로컬에서 확인한 이미지를 ECR에 업로드합니다.
# ECR 로그인
aws ecr get-login-password \
--region ap-northeast-2 \
--profile mini \
| docker login \
--username AWS \
--password-stdin xxxxxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com
# 도커 이미지 푸시
docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/minhui-repo:nginx-blue-v1
docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/minhui-repo:nginx-green-v2이후 AWS 콘솔에서 다음 절차를 진행합니다. 먼저 ECR 콘솔에서 이미지가 정상적으로 업로드되었는지 확인합니다.

다음으로 블루 이미지 배포 작업을 합니다. 우선 태스크 정의(Task Definition)에서 새 리비전(New Revision)을 생성합니다.

다음과 같이 서비스를 생성합니다.

배포 유형을 [블루/그린]으로 선택합니다.




콘솔 화면에서 프로덕션 트래픽이 정상적으로 흐르는지 확인합니다.

다음은 서비스 배포 완료시 화면입니다.

서비스 배포가 완료되면 터미널에서 블루 → 그린 배포가 정상적으로 이루어지는지 curl명령어로 확인합니다.
while true; do
curl -s http://minhui-ecs-test-415630160.ap-northeast-2.elb.amazonaws.com/
echo
sleep 1
done확인 결과는 다음과 같습니다. 블루/그린 배포가 완료되면 프로덕션 트래픽이 새로운 '그린' 버전으로 옮겨집니다.

트래픽 전환이 완료되면 ECS는 희망 태스크 수(Desired tasks)인 2개로 태스크를 조정합니다. 콘솔 화면에서 트래픽이 이동하고 기존 태스크가 종료되는 것을 확인할 수 있습니다.

curl명령어로 트래픽을 지속적으로 확인해 본 결과 응답이 블루 이미지에서 그린 이미지로 한 번에 전환되는 것을 확인할 수 있었습니다.
이는 ECS 블루/그린 배포가 그린 태스크를 모두 기동한 뒤 헬스 체크(Health Check)를 전부 통과하면 ALB 타깃 그룹을 단일 시점에 스위칭(Switching)하는 방식으로 동작하기 때문입니다.
그 결과 배포 과정 중 블루와 그린 태스크가 동시에 실행되는 구간은 존재하지만, 프로덕션 트래픽이 두버전에 나뉘어 전달되는 현상은 발생하지 않았습니다. 즉, ECS의 기본 제공 블루/그린 배포는 트래픽 단절이나 혼합 없이 안전하게 전환되는 방식임을 직접 확인할 수 있었습니다.
긴 글 읽어주셔서 감사합니다!
https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-ecs-built-in-blue-green-deployments/
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/deployment-type-blue-green.html