Fargate Spot은 온디맨드 Fargate 대비 최대 70% 저렴하지만, AWS에 여유 용량이 부족해지면 2분 전에 종료 경고(Interruption Notice)를 보낸 뒤 강제로 컨테이너를 회수합니다.
따라서 '무중단(Zero Downtime)'을 구현하려면 (1) 최소 필수 용량은 온디맨드로 방어하고, (2) Spot 컨테이너 회수 시 2분 내에 안전하게 트래픽을 차단하고 새 컨테이너로 교체하는 아키텍처를 설계해야 합니다.
프로덕션 무중산 세팅
Capacity Provider: Base: 2 (FARGATE), Weight: 4 (SPOT) : 1 (FARGATE) 조합
ALB Target Group: Deregistration Delay를 30초로 조정
Task Definition: stopTimeout을 90초로 설정 + 경량화된 컨테이너 이미지 사용
App Code: SIGTERM 시그널을 잡아 기존 요청 정상 처리 후 종료
모든 컨테이너를 100% Spot으로 띄우면 AWS 리전 전체에 Spot 용량이 고갈되었을 때 서비스 전체가 다운될 수 있습니다. 온디맨드(FARGATE)와 Spot(FARGATE_SPOT)을 혼합 구성합니다.
[
{
"capacityProvider": "FARGATE",
"base": 2,
"weight": 1
},
{
"capacityProvider": "FARGATE_SPOT",
"base": 0,
"weight": 4
}
]
결과: 총 10개의 태스크가 뜰 경우, 2개는 온디맨드 고정 + 나머지 8개 중 약 6~7개는 Spot, 1~2개는 온디맨드로 배정되어 비용을 약 50% 이상 절감하면서 안정성을 확보합니다.
2. 2분 조기 경고 감지 및 우아한 종료(Graceful Shutdown)
AWS는 Fargate Spot을 중단하기 120초 전에 EventBridge로 경고 이벤트를 보내며, 컨테이너 내부 프로세스에 SIGTERM 시그널을 전달합니다.
3. EventBridge 기반 조기 프로비저닝 (Proactive Replacement)
Spot 인스턴스가 꺼질 때까지 기다리지 않고, 경고를 받자마자 즉시 새로운 컨테이너를 띄우는 자동화입니다.
[AWS Spot 회수 결정]
│
▼ (중단 2분 전)
[EventBridge 이벤트 발생] ──> [ECS 클러스터 감지]
│
├─ 1. 즉시 대체 Task(신규 컨테이너) 기동 시작
└─ 2. 중단 대상 Task는 ALB에서 제거(Drain) 시작
◼️ 포탈에서 실행하기
AWS 콘솔(웹 포털)에서도 100% 설정 가능하다
Terraform이나 CLI 같은 코드 작업 없이 AWS 웹 콘솔 마우스 클릭만으로 구현하는 단계별 방법이다.
* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.