EC2 Spot Instance 활용 전략: 최대 90% 비용 절감하는 방법
AWS Spot Instance로 EC2 비용을 최대 90% 절감하면서 중단에 안전한 아키텍처를 설계하는 방법을 알아봅니다.
관련 시험 도메인
- Domain 4: Design Cost-Optimized Architectures
핵심 요약 (BLUF)
Spot Instance는 On-Demand 대비 최대 90% 저렴하지만, 2분 전 공지로 중단될 수 있습니다. 내결함성 있는 워크로드에 사용하고, 인스턴스 유형 다각화 + 용량 최적화 할당 전략 + Auto Scaling 용량 리밸런싱으로 안정성을 확보하세요.
시험 팁
시험 핵심: "Spot = 최대 90% 절감, 2분 전 중단 공지, 내결함성 워크로드에 적합"
Spot Instance란?
AWS의 여유 EC2 용량을 할인된 가격에 사용하는 인스턴스입니다.
| 항목 | On-Demand | Spot Instance |
|---|---|---|
| 가격 | 정가 | 60-90% 할인 |
| 가용성 | 항상 사용 가능 | 여유 용량에 따라 변동 |
| 중단 가능성 | 없음 | 2분 전 공지 후 중단 |
| 약정 | 없음 | 없음 |
Spot 가격은 어떻게 결정되나요?
Spot 가격 = AWS의 수요/공급에 의해 결정
- 수요 낮음 → 가격 하락 (On-Demand 대비 90% 할인)
- 수요 높음 → 가격 상승 (할인율 감소)
중단 조건:
1. Spot 가격 > 사용자 최대 가격
2. AWS 용량 부족
시험 팁
Spot 가격은 점진적으로 변동합니다. 과거의 경매 방식이 아닌 수요/공급 기반 가격 모델을 사용합니다.
어떤 워크로드에 적합할까?
Spot에 적합한 워크로드
- 배치 처리: 빅데이터 분석, ETL 작업
- CI/CD 빌드: Jenkins, GitHub Actions 빌드 에이전트
- 컨테이너: ECS, EKS 워커 노드
- 빅데이터: EMR, Spark 클러스터
- ML 학습: SageMaker 학습 작업
- 웹 서버: 상태 비저장(Stateless) 웹 서버
- HPC: 과학 시뮬레이션, 렌더링
Spot에 부적합한 워크로드
- 데이터베이스: RDS, 자체 DB 서버
- 싱글 인스턴스: 단일 장애점이 되는 서버
- 상태 유지(Stateful): 로컬 상태를 보존해야 하는 앱
- SLA 필수: 중단 시 비즈니스 영향이 큰 서비스
Spot 할당 전략
Auto Scaling 그룹에서 Spot Instance 할당 방식을 선택할 수 있습니다.
용량 최적화 (Capacity-Optimized) - 권장
가장 여유 용량이 많은 풀에서 인스턴스 할당
→ 중단 확률 최소화
| 전략 | 중단 횟수 (Skyscanner 테스트) |
|---|---|
| 최저가 (Lowest Price) | 200-300회 |
| 용량 최적화 | 10-15회 |
시험 팁
시험 포인트: 용량 최적화(capacity-optimized) 전략이 Spot 중단을 최소화하는 권장 전략입니다.
최저가 (Lowest Price)
- 가장 저렴한 풀에서 할당
- 중단 확률이 높음
- 내결함성이 매우 높은 워크로드에만 적합
가격-용량 최적화 (Price-Capacity Optimized)
- 용량과 가격을 모두 고려
- 비용과 안정성의 균형
인스턴스 유형 다각화
Spot 안정성을 높이는 가장 중요한 전략입니다.
나쁜 예: m5.large만 사용
→ 해당 풀 용량 부족 시 즉시 중단
좋은 예: 여러 유형 + 크기 조합
→ m5.large, m5.xlarge, m4.large, m5a.large, m5d.large
→ 하나의 풀이 부족해도 다른 풀에서 확보 가능
Mixed Instances Policy
Auto Scaling 그룹에서 On-Demand와 Spot을 혼합하여 사용합니다.
Mixed Instances Policy 예시:
┌────────────────────────────────────────┐
│ Auto Scaling Group │
│ │
│ On-Demand: 20% (기본 용량 보장) │
│ ┌──────┐ ┌──────┐ │
│ │ m5.lg│ │ m5.lg│ │
│ └──────┘ └──────┘ │
│ │
│ Spot: 80% (비용 절감) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │m5.lg │ │m5a.lg│ │m4.lg │ │m5d.lg│ │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
│ │
│ 인스턴스 유형: 4개 이상 (다각화) │
└────────────────────────────────────────┘
시험 팁
모범 사례: On-Demand 기본 용량(20-30%) + Spot(70-80%) 조합으로 가용성과 비용 절감을 동시에 확보
중단(Interruption) 처리
2분 전 공지
AWS는 Spot 인스턴스 중단 2분 전에 공지를 보냅니다.
중단 공지 수신 방법:
1. 인스턴스 메타데이터 서비스 (IMDS)
→ http://169.254.169.254/latest/meta-data/spot/instance-action
2. EventBridge 이벤트
→ EC2 Spot Instance Interruption Warning
3. CloudWatch Events
Graceful Shutdown 구현
# 중단 공지 폴링 (30초 간격)
import requests
import time
def check_spot_interruption():
try:
response = requests.get(
"http://169.254.169.254/latest/meta-data/spot/instance-action",
timeout=1
)
if response.status_code == 200:
# 중단 예정 → 정리 작업 시작
graceful_shutdown()
except:
pass # 중단 공지 없음
def graceful_shutdown():
# 1. 새 요청 수신 중단
# 2. 진행 중인 작업 완료 또는 체크포인트 저장
# 3. ELB 타겟 그룹에서 제거
# 4. 로그 플러시
pass
용량 리밸런싱 (Capacity Rebalancing)
Auto Scaling 그룹의 용량 리밸런싱 기능은 중단 공지 전에 미리 대체 인스턴스를 시작합니다.
타임라인:
[리밸런싱 신호] ──── [대체 인스턴스 시작] ──── [2분 중단 공지] ── [중단]
│ │
└── 사전 대응 └── 기존 방식
Spot 활용 AWS 서비스
| 서비스 | Spot 통합 방식 |
|---|---|
| EC2 Auto Scaling | Mixed Instances Policy |
| ECS | Capacity Provider |
| EKS | Managed Node Group |
| EMR | Task/Core 노드에 Spot |
| SageMaker | Managed Spot Training (최대 90% 절감) |
| AWS Batch | 컴퓨팅 환경에 Spot |
비용 계산 예시
월 10대 m5.large (us-east-1) 운영 시:
On-Demand:
$0.096/시간 × 730시간 × 10대 = $700.80/월
Spot (70% 할인):
$0.029/시간 × 730시간 × 10대 = $211.70/월
절감액: $489.10/월 (70% 절감)
Mixed (20% OD + 80% Spot):
OD: $0.096 × 730 × 2 = $140.16
Spot: $0.029 × 730 × 8 = $169.36
합계: $309.52/월 (56% 절감)
SAA-C03 시험 출제 포인트
- ✅ 비용 절감률: "Spot은 On-Demand 대비 최대 90% 절감"
- ✅ 중단 공지: "2분 전 공지, 인스턴스 메타데이터 또는 EventBridge"
- ✅ 적합한 워크로드: "내결함성, 유연성 있는 배치/CI/CD/빅데이터"
- ✅ 할당 전략: "용량 최적화(capacity-optimized) 권장"
- ✅ Mixed Instances: "On-Demand + Spot 혼합으로 가용성 확보"
시험 팁
시험 문제 예시: "배치 처리 워크로드를 가장 비용 효율적으로 실행하려면? 작업은 중단 후 재시작 가능합니다." → 정답: Spot Instance (내결함성 + 최대 비용 절감)
자주 묻는 질문 (FAQ)
Q: Spot Instance가 중단되면 데이터가 손실되나요?
EBS 볼륨 데이터는 인스턴스 중지/최대절전 시 보존되지만, 인스턴스 종료 시 삭제됩니다. Instance Store는 항상 손실됩니다. 중요한 데이터는 S3나 EFS에 저장하세요.
Q: Spot 요청이 충족되지 않으면 어떻게 되나요?
요청은 대기 상태로 유지됩니다. 용량이 확보되면 자동으로 인스턴스가 시작됩니다. 인스턴스 유형을 다각화하면 충족 가능성이 높아집니다.
Q: Spot Instance에서 데이터베이스를 운영할 수 있나요?
기술적으로 가능하지만, 중단 시 데이터 손실 및 서비스 중단 위험이 있어 권장하지 않습니다. 데이터베이스는 On-Demand 또는 Reserved를 사용하세요.
Q: Spot Block(정의된 기간)은 아직 사용할 수 있나요?
아니요. AWS는 2021년 12월 24일부로 Spot Block을 더 이상 제공하지 않습니다.
Q: Spot과 Reserved Instance를 함께 사용할 수 있나요?
네. 기본 용량은 Reserved Instance로, 추가 확장 용량은 Spot으로 구성하는 것이 일반적인 패턴입니다.