Blue-Green Deployment를 사용하기로 했다면, 사용자의 트래픽을 Blue 또는 Green 중 어느 환경으로 보낼지 결정하는 로드 밸런서(Load Balancer) 가 필요하다.
가장 단순한 구성은 다음과 같다:
- LB (로드 밸런서)
- Blue 서버
- Green 서버
즉, 총 3개의 서버가 필요하다.
서비스 도메인(mysite.com)의 트래픽이 로드 밸런서로 들어가야 하므로,
도메인의 A 레코드를 LB 서버의 IP 주소로 설정해두면 된다.
(단, 아래의 AWS ALB 사용 시에는 IP가 아닌 DNS 이름을 사용해야 함)
AWS ALB(Application Load Balancer)
ALB는 고정 IP를 가지지 않고 동적으로 IP를 바꾸며 동작한다. 따라서 서비스 도메인의 A레코드로 ALB의 IP주소를 직접 지정할 수는 없고, CNAME을 AWS가 부여한 ALB의 DNS 이름으로 설정한다.
CNAME → mysite-alb-XXXX.elb.amazonaws.com
추가로, ALB는 기본적으로 두 개 이상의 가용 영역(AZ, 물리적으로 분리)에 걸쳐 트래픽을 분산하도록 설계되어있기에 서로 다른 AZ의 퍼블릭 서브넷 2개 이상이 필요하다.
ALB를 직접 구성했든, 클라우드 서비스를 이용했든 결정했다면, 다음은 애플리케이션이 실행될 서버 환경을 선택해야한다.
AWS 기준으로 다음 옵션들이 있다:
- EC2/ASG
- Blue용 AutoScalingGroup ↔ Green용 ASG
- ECS
- Blue용 ECS service ↔ Green용 ECS service
- EKS(K8s)
- Blue / Green Deployment 두 개로 구성
이들 모두의 공통점은 서버 그룹 두 개를 운영하며, ALB가 어느 Target Group으로 트래픽을 보낼지 결정한다는 것이다.
인프라구성
환경은 다음과 같이 가정한다:
- ALB
- EC2 2대(Blue/Green) ASG 사용X
- 각 인스턴스는 (컨테이너로) 애플리케이션을 8080 포트에서 실행
- 헬스체크
- RDB/Redis는 외부 연결(RDS, ElastiCache등)
사전 준비
- EC2 인스턴스 2대: 같은 VPC 내
- 보안그룹: ALB, EC2 따로
- VPC/Subnet: 퍼블릭 서브넷 2개 이상
ALB 생성

ALB는 사용자의 트래픽을 받아야하기에 Internet-facing으로 선택한다.
- VPC: EC2 인스턴스가 속한 VPC 선택
- 보안 그룹: ALB 전용 SG를 생성
- 인바운드: 80, 443
- 아웃바운드: 전체 허용
- HTTPS 사용 시: AWS ACM 인증서 등록 후 HTTPS 리스너 설정
보안그룹에서 허용한 포트에 대해 리스너를 추가하고 타겟그룹을 설정한다.
Target Group 설정
EC2 > 대상 그룹 > 대상 그룹 생성
- 대상 유형: 인스턴스
- 프로토콜: HTTP (HTTPS일 필요 없음)
- 포트: 웹서버 포트
- 위 경로를 애플리케이션 내에 직접 구현하거나, 스프링의 경우 다음과 같이 설정하면 된다.(/actuator/health)
-
dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' } management: endpoints: web: exposure: include: health endpoint: health: show-details: never 상태검사: /health

Blue-Green 전환
타켓그룹 두 개(Blue/Green) 생성 및 등록이 완료되었다고 하자.

두 개의 Target Group(Blue / Green) 생성 및 등록이 완료되었다면, 우선 Blue 환경에서 서비스를 시작한다.
이때, Blue의 가중치를 1 (100%)로 설정한다.
새 버전을 배포할 준비가 되면 Green 서버에서 새 버전의 애플리케이션을 실행하고, 헬스체크가 정상 통과된 것을 확인한 후 ALB 리스너에서 Blue → Green으로 가중치를 전환한다.
이렇게 하면 트래픽이 중단없이 Green으로 향하게 된다.
이 방식은 자동화가 되어있지는 않지만, 가장 기본적인 방식으로 무중단 배포를 가능하게 해준다.
'인프라' 카테고리의 다른 글
| AWS: IAM Billing 읽기 권한 (0) | 2025.10.21 |
|---|---|
| Blue-Green Deployment (자동화) (0) | 2025.10.18 |
| AWS: IAM 사용자 생성 (0) | 2025.10.18 |
| AWS CLI: describe-rules --listener-arn (0) | 2025.10.18 |
| 무중단 배포(Zero-Downtime Deployment) (0) | 2025.10.17 |