AWS 스팟 인스턴스는 사전 약정 없이 On-demand 요금보다 70~90% 절감된 비용으로 사용할 수 있는 EC2 Instance(VM)이다. 시작하려는 인스턴스에 대해 현재 시간에 유효한 가격만 지불하면 된다.
주로 Batch Job 등 용도로 사용하는 서버에 잘 어울린다.
장점은 세 가지로 나열할 수 있다.
첫 번째, 용량 활용
EC2 스페어 용량의 수요와 공급량에 따라 가격이 결정되기 때문에 시장 중심의 낮은 가격으로 Amazon EC2의 안정성, 보안성, 성능, 제어 및 탄력성을 제공 받을 수 있다.
두 번째, 운영비용 절감
On-demand Instance와 비교하여 최대 70~90%의 운영 비용을 절감할 수 있다.
세 번째, 처리량 향상
상태 비저장 웹 서비스, 이미지 랜더링, 빅데이터 분석, 대량의 병렬 계산 등 애플리케이션을 실행하고 확장 가능하다.
스팟 인스턴스의 최대 가격 지정이 가능하다.
최고 가격 > 스팟 가격: 인스턴스 시작
최고 가격 < 스팟 가격: 인스턴스 종료
스팟 인스턴스는 애플리케이션에 따른 4가지 종류가 있다.
각각의 타입은 아래 내용을 참고하자.
Load balancing workloads : 모든 가용영역에서 동일한 사이즈의 인스턴스 사용. 웹서비스에 적합.
Flexible workloads : 모든 AZ에서 모든 사이즈의 인스턴스 사용. 배치 와 CI/CD 작업에 적합
Big data workloads : 단일 AZ에서 여러사이즈의 인스턴스 사용. MapReduce 작업에 적합.
Defined duration workloads : 1~6시간 동안의 스팟 블록(지정된 지속시간) 인스턴스 사용.
스팟 인스턴스 사용 전략
스팟 인스턴스를 사용시 중단에 항상 대비 해야함
- 종료시 2분전에 경고하는 공지 제공
- 종료 공지를 이용하여 스팟 인스턴스의 상태를 모니터링
- 합리적인 입찰 가격 사용
- 예상치 못한 인스턴스 종료에 어플리케이션이 대처할 수 있도록 확인
- 스팟 인스턴스가 종료되어도 영향을 받지 않을 장소(S3, EBS)에 중요 데이터 정기 저장
스팟 인스턴스 중단 이유
- 가격 - 스팟 가격이 최고 가격보다 크다.
- 용량 - 미사용 EC2 인스턴스가 스팟 인스턴스의 수요를 충족할 만큼 충분하지 않으면 Amazon EC2에서 스팟 인스턴스를 중단한다. 인스턴스가 중단되는 순서는 Amazon EC2에서 결정된다.
- 제약 조건 - 요청에 시작 그룹 또는 가용 영역 그룹과 같은 제약 조건이 포함되는 경우 제약 조건을 더 이상 충족할 수 없으면, 이러한 스팟 인스턴스가 그룹으로 종료된다
참고
docs.aws.amazon.com
스팟 집합
스팟 집합은 스팟 인스턴스의 모음
스팟 인스턴스가 가격 또는 용량의 변경으로 중단될 경우 목표 용량 집합을 유지하려고 시도함
집합 할당 전략
- lowestPrice (최저가격)
최저 가격의 풀에서 스팟 인스턴스를 가져옴
기본 전략으로 최저가로 입찰 가능
-Diversified (다각화)
- 모든 풀에 분산해서 스팟 인스턴스를 가져옴
- 가용성 및 하나의 풀에서 발생하는 가격상승에 덜 민감해짐
- 온디맨드 가격보다 높은 가격의 풀에서는 시작하지 않음
참고
docs.aws.amazon.com
스팟 할당 전략은 아래 그림과 같이 두 가지가 있다.
스팟 집합에서 온디맨드 용량을 채우려고 시도하는 경우 기본적으로 최저 가격의 인스턴스 유형을 먼저 시작한다.
예를 들어 서로 다른 인스턴스 유형인 c4.large, c5.large를 집합요청으로 설정하는 경우, 1개의 온디맨드를 포함한 총 목표 용량을 5로 설정했을때, 온디맨드 가격은 c5.large (0.096USD) 가 c4.large(0.114USD) 보다 저렴하므로, 온디맨드 용량을 c5.large를 채운 후 나머지를 설정합니다.
스팟 요금 History
스팟 인스턴스의 입찰 가격 정책에 도움을 주기 위해 생긴 기능이다. 지난 90일 동안의 스팟 가격 기록을 인스턴스 유형, 운영 체제 및 가용 영역을 기준으로 확인하여 스팟 인스턴스의 비용에 대한 인사이트를 얻을 수 있다.
스팟 인스턴스에 대한 CloudWatch 메트릭은 아래와 같다.
AvailableInstancePoolsCount
- 스팟 집합 요청에 지정된 스팟 인스턴스 풀. (단위 : 수)
BidsSummittedForCapacity
- Amazon EC2가 입찰을 제출한 용량. (단위 : 수)
EligibleInstancePoolCount
- Amazon EC2가 입찰을 이행할 수 있는 스팟 집합 요청에 지정된 스팟인스턴스 풀.
- Amazon EC2는 입찰가격이 스팟가격보다 낮거나 스팟 가격이 On-Demand 인스턴스 가격보다 높은 경우
풀에서 입찰을 이행하지 않습니다. (단위 : 수)
FulfilledCapacity
- Amazon EC2가 달성한 용량. (단위 : 수)
MaxPercentCapacityAllocation
- 스팟 집합 요청에 지정된 모슨 스팟 인스턴스 풀에 걸친 PercentCapacityAllocation의 최대값. (단위 : 백분율)
PendingCapacity
- TargetCapacity와 FulfilledCapacity의 차이점. (단위 : 수)
PercentCapacityAllocation
- 지정된 차원의 스팟인스턴스 풀에 할당된 용량.
- 모든 스팟 인스턴스 풀에 기록된 최대값을 얻으려면 MaxPercentCapacityAllocation을 사용하십시오. (단위 : 백분율)
TargetCapacity
- 스팟 집합 요청의 목표 용량. (단위 : 수)
TerminatingCapacity
- 스팟 인스턴스 간섭으로 인해 종료되고 있는 용량. (단위 : 수)
'Compute > EC2' 카테고리의 다른 글
AWS Spot Instance 이해하기 (0) | 2019.12.24 |
---|---|
AWS EC2 User data script sample(node.js) (0) | 2019.07.23 |
AWS EC2 EIP 사용 시 HA 구성 (0) | 2017.04.10 |
Amazon EC2 태그 기준으로 Instance Private IP 확인 CLI (0) | 2016.12.23 |
Amazon EC2 MySQL 5.6 설치 (0) | 2016.10.04 |
AWS EC2 Keypair 없이 사용하기 (0) | 2016.01.12 |