SpotFleet
1 Spot Fleet 할당 전략이란?
- Spot Fleet 할당 전략이란 스팟 인스턴스를 어떤 방식으로 시작할지 결정하는 방법입니다
- 할당 전략에 따라 비용, 가용성, 다양성 등 다양한 목표를 달성할 수 있습니다
- 이는 마치 주식 투자 전략과 비슷한 개념으로 이해할 수 있습니다:
- 저가 매수 전략 → lowestPrice
- 분산 투자 전략 → diversified
- 안정성 중심 전략 → capacityOptimized
- 밸런스 전략 → priceCapacityOptimized
2 할당 전략의 작동 방식
2.1 최저가격 전략 (lowestPrice)
- 작동 방식:
- 모든 가용 풀의 현재 스팟 가격을 확인합니다
- 가격이 가장 낮은 풀을 우선적으로 선 택합니다
- 선택된 풀의 용량이 부족하면 다음으로 저렴한 풀을 선택합니다
내부 프로세스
1. 모든 풀의 현재 스팟 가격 조회
2. 가격 기준으로 풀을 정렬
3. 가장 저렴한 풀부터 순차적으로 인스턴스 시작
4. 목표 용량 달성할 때까지 반복
2.2 다각화 전략 (diversified)
- 작동 방식:
- 사용 가능한 모든 풀에 균등하게 인스턴스를 분산합니다
- N개의 풀이 있다면, 각 풀에 전체 용량의 1/N만큼 할당합니다
- 특정 풀에 용량이 부족하면 다른 풀로 나머지를 분산합니다
내부 프로세스
1. 사용 가능한 풀의 수(N) 확인
2. 목표 용량을 N으로 나누어 풀당 할당량 계산
3. 각 풀에 동시에 인스턴스 시작 요청
4. 용량 부족 시 남은 풀에 재분배
2.3 용량 최적화 전략 (capacityOptimized)
- 작동 방식:
- 각 풀의 실시간 용량 데이터를 수집합니다
- 가용 용량이 가장 큰 풀을 우선 선택합니다
- 용량 변화를 지속적으로 모니터링하여 최적의 풀 선택을 업데이트합니다
- 용량 계산 요소:
- 현재 사용 가능한 인스턴스 수
- 과거 중단 빈도
- 용량 추세
- 예약된 용량 변화
내부 프로세스
1. 실시간 풀 용량 데이터 수집
2. 용량 기준으로 풀 순위 계산
3. 가장 큰 용량의 풀 선택
4. 용량 변화 모니터링 및 필요시 재조정
2.4 가격-용량 최적화 전략 (priceCapacityOptimized)
- 작동 방식:
- 먼저 용량이 충분한 풀들을 식별합니다
- 그 중에서 가격이 가장 저렴한 풀을 선택합니다
- 용량과 가격 모두를 고려한 점수를 계산하여 최적의 풀 선택
- 복합 점수 계산 요소:
- 가용 용량 점수 (70% 가중치)
- 가격 점수 (30% 가중치)
내부 프로세스
1. 용량 임계값을 넘는 풀들 필터링
2. 필터링된 풀들의 가격 비교
3. 용량과 가격 기반의 복합 점수 계산
4. 최고 점수 풀 선택
3 할당 전략 선택 가이드
3.1 각 전략별 최적 사용 사례
- lowestPrice 전략:
- 비용이 가장 중요한 배치 작업
- deadline이 없는 유연한 작업
- 개발/테스트 환경
- diversified 전략:
- 장시간 실행되는 애플리케이션
- 고가용성이 필요한 서비스
- 리스크 분산이 중요한 경우
- capacityOptimized 전략:
- Auto Scaling 그룹과 함께 사용
- 중단에 민감한 워크로드
- 실시간 처리가 필요한 서비스
- priceCapacityOptimized 전략:
- 프로덕션 워크로드
- 비용과 안정성 모두 중요한 경우
- 일반적인 웹 서비스
3.2 전략 선택 시 고려사항
- 워크로드 특성:
- 작업의 중요도
- 중단 허용 여부
- 실행 시간
- 비용 요구사항:
- 예산 제약
- 비용 최적화 목표
- 허용 가능한 가격 범위
- 가용성 요구사항:
- 서비스 수준 목표(SLO)
- 허용 가능한 중단 시간
- 복구 시간 목표
4 실제 구성 예시
4.1 Auto Scaling 환경에서의 구성
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimized",
"TargetCapacity": 20,
"OnDemandTargetCapacity": 5,
"LaunchSpecifications": [
{
"InstanceType": "c5.large",
"SubnetId": "subnet-123456"
},
{
"InstanceType": "m5.large",
"SubnetId": "subnet-789012"
},
{
"InstanceType": "r5.large",
"SubnetId": "subnet-345678"
}
]
}
}
- 이 구성은:
- 용량 최적화 전략을 사용하여 중단 위험 최소화
- 기본 5개는 온디맨드로 구성하여 안정성 확보
- 다양한 인스턴스 타입을 사용하여 유연성 확보
5 모니터링 및 최적화
- 모니터링 지표:
- 풀별 용량 사용률
- 스팟 가격 변동
- 인스턴스 중단 빈도
- 할당 성공률
- 최적화 방안:
- 주기적인 전략 검토
- 사용 패턴 분석
- 비용 대비 성능 평가
- 필요시 전략 조정