SAABlog
비용 관리중급

EC2 Spot Instance 활용 전략: 최대 90% 비용 절감하는 방법

AWS Spot Instance로 EC2 비용을 최대 90% 절감하면서 중단에 안전한 아키텍처를 설계하는 방법을 알아봅니다.

PHILOLAMB-
Spot InstanceEC2비용 최적화Auto Scaling중단 처리

관련 시험 도메인

  • Domain 4: Design Cost-Optimized Architectures

핵심 요약 (BLUF)

Spot Instance는 On-Demand 대비 최대 90% 저렴하지만, 2분 전 공지로 중단될 수 있습니다. 내결함성 있는 워크로드에 사용하고, 인스턴스 유형 다각화 + 용량 최적화 할당 전략 + Auto Scaling 용량 리밸런싱으로 안정성을 확보하세요.

시험 팁

시험 핵심: "Spot = 최대 90% 절감, 2분 전 중단 공지, 내결함성 워크로드에 적합"

Spot Instance란?

AWS의 여유 EC2 용량을 할인된 가격에 사용하는 인스턴스입니다.

항목On-DemandSpot Instance
가격정가60-90% 할인
가용성항상 사용 가능여유 용량에 따라 변동
중단 가능성없음2분 전 공지 후 중단
약정없음없음

Spot 가격은 어떻게 결정되나요?

Spot 가격 = AWS의 수요/공급에 의해 결정
- 수요 낮음 → 가격 하락 (On-Demand 대비 90% 할인)
- 수요 높음 → 가격 상승 (할인율 감소)

중단 조건:
1. Spot 가격 > 사용자 최대 가격
2. AWS 용량 부족

시험 팁

Spot 가격은 점진적으로 변동합니다. 과거의 경매 방식이 아닌 수요/공급 기반 가격 모델을 사용합니다.

어떤 워크로드에 적합할까?

Spot에 적합한 워크로드

  1. 배치 처리: 빅데이터 분석, ETL 작업
  2. CI/CD 빌드: Jenkins, GitHub Actions 빌드 에이전트
  3. 컨테이너: ECS, EKS 워커 노드
  4. 빅데이터: EMR, Spark 클러스터
  5. ML 학습: SageMaker 학습 작업
  6. 웹 서버: 상태 비저장(Stateless) 웹 서버
  7. HPC: 과학 시뮬레이션, 렌더링

Spot에 부적합한 워크로드

  1. 데이터베이스: RDS, 자체 DB 서버
  2. 싱글 인스턴스: 단일 장애점이 되는 서버
  3. 상태 유지(Stateful): 로컬 상태를 보존해야 하는 앱
  4. 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 ScalingMixed Instances Policy
ECSCapacity Provider
EKSManaged Node Group
EMRTask/Core 노드에 Spot
SageMakerManaged 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 시험 출제 포인트

  1. 비용 절감률: "Spot은 On-Demand 대비 최대 90% 절감"
  2. 중단 공지: "2분 전 공지, 인스턴스 메타데이터 또는 EventBridge"
  3. 적합한 워크로드: "내결함성, 유연성 있는 배치/CI/CD/빅데이터"
  4. 할당 전략: "용량 최적화(capacity-optimized) 권장"
  5. 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으로 구성하는 것이 일반적인 패턴입니다.

관련 글

참고 자료