할당 전략으로 EC2 Fleet과 Spot Fleet이 Spot·On-Demand 용량을 충족하는 방식 결정하기

할당 전략으로 EC2 Fleet과 Spot Fleet이 Spot·On-Demand 용량을 충족하는 방식 결정하기

EC2 Fleet이나 Spot Fleet에서 여러 용량 풀(각각 인스턴스 유형과 가용 영역으로 구성)을 사용할 때 할당 전략으로 Amazon EC2가 이 풀에서 Spot·On-Demand 용량을 충족하는 방식을 관리할 수 있어요. 이 절에서 Spot과 On-Demand에 대한 각기 다른 할당 전략을 살펴볼게요.

출처: 문서

본문

EC2 Fleet이나 Spot Fleet에서 여러 용량 풀(각각 인스턴스 유형과 가용 영역으로 구성)을 사용할 때 할당 전략으로 Amazon EC2가 이 풀에서 Spot·On-Demand 용량을 충족하는 방식을 관리할 수 있어요. 할당 전략은 사용 가능한 용량, 가격, 사용할 인스턴스 유형에 대해 최적화할 수 있어요. Spot Instances와 On-Demand Instances에는 각기 다른 할당 전략이 있어요.

토픽

Spot Instances용 할당 전략

내 시작 구성은 EC2 Fleet이나 Spot Fleet이 Spot Instances를 시작할 수 있는 모든 가능한 Spot 용량 풀(인스턴스 유형과 가용 영역)을 결정해요. 하지만 인스턴스를 시작할 때 플릿은 지정한 할당 전략을 사용해 가능한 모든 풀에서 특정 풀을 선택해요.

참고

(Linux 인스턴스만 해당) Spot Instance를 AMD SEV-SNP를 켠 상태로 시작하도록 구성하면 선택한 인스턴스 유형의 On-Demand 시간당 요금의 10%에 해당하는 추가 시간당 사용 요금이 청구돼요. 할당 전략이 가격을 입력으로 사용한다면 플릿은 이 추가 요금을 포함하지 않으며 Spot 가격만 사용해요.

Spot Instances에 대해 다음 중 하나의 할당 전략을 지정할 수 있어요.

가격 용량 최적화(Price capacity optimized) (권장)

플릿은 시작 중인 인스턴스 수에 대해 용량 가용성이 가장 높은 풀을 식별해요. 즉 Spot Instances가 단기간에 중단될 가능성이 가장 낮은 풀에서 요청된다는 뜻이에요. 그런 다음 플릿은 이 풀 중 가장 저렴한 풀에서 Spot Instances를 요청해요.

price capacity optimized 할당 전략은 상태 비저장 컨테이너화 애플리케이션, 마이크로서비스, 웹 애플리케이션, 데이터·분석 작업, 배치 처리 같은 대부분의 Spot 워크로드에 가장 좋은 선택이에요.

AWS CLI를 사용한다면 EC2 Fleet의 매개 변수 이름은 price-capacity-optimized, Spot Fleet은 priceCapacityOptimized예요.

용량 최적화(Capacity optimized)

플릿은 시작 중인 인스턴스 수에 대해 용량 가용성이 가장 높은 풀을 식별해요. 즉 Spot Instances가 단기간에 중단될 가능성이 가장 낮은 풀에서 요청된다는 뜻이에요.

Spot Instances에서 가격은 수요와 공급의 장기 추세를 기반으로 천천히 변하지만, 용량은 실시간으로 변동돼요. capacity optimized 전략은 실시간 용량 데이터를 보고 가장 가용성이 높은 풀을 예측해 Spot Instances를 가장 가용성이 높은 풀로 자동 시작해요. 이는 작업 재시작과 관련된 중단 비용이 더 높을 수 있는 긴 CI(Continuous Integration), 이미지·미디어 렌더링, 딥러닝, HPC(High Performance Compute) 워크로드에 잘 맞아요. 중단이 더 적을 가능성을 제공함으로써 capacity optimized 전략이 워크로드의 전체 비용을 낮출 수 있어요.

또는 capacity optimized prioritized 할당 전략을 priority 매개 변수와 함께 사용해 인스턴스 유형을 높은 우선순위에서 낮은 우선순위로 정렬할 수 있어요. 서로 다른 인스턴스 유형에 같은 우선순위를 설정할 수 있어요. 플릿은 용량을 먼저 최적화하지만 인스턴스 유형 우선순위를 최선 노력(best-effort) 기준으로 존중해요(예: 우선순위를 존중해도 플릿의 최적 용량 프로비저닝 능력이 크게 영향을 받지 않는 경우). 이는 중단 가능성을 최소화해야 하고 특정 인스턴스 유형 선호도가 중요한 워크로드에 좋은 선택이에요. Spot 용량의 인스턴스 유형에 우선순위를 설정하면 On-Demand 할당 전략이 prioritized로 설정된 경우 같은 우선순위가 On-Demand Instances에도 적용된다는 점에 유의하세요. Spot Fleet의 경우 우선순위 사용은 플릿이 시작 템플릿(launch template)을 사용할 때만 지원돼요.

AWS CLI를 사용한다면 EC2 Fleet의 매개 변수 이름은 capacity-optimized와 capacity-optimized-prioritized, Spot Fleet은 capacityOptimized와 capacityOptimizedPrioritized예요.

분산(Diversified)

Spot Instances가 모든 Spot 용량 풀에 분산돼요. AWS CLI를 사용한다면 매개 변수 이름은 EC2 Fleet과 Spot Fleet 모두 diversified예요.

최저 가격(Lowest price) (권장하지 않음)

경고

lowest price 할당 전략은 Spot Instances의 중단 위험이 가장 높기 때문에 권장하지 않아요.

Spot Instances는 사용 가능한 용량이 있는 가장 저렴한 풀에서 제공돼요. AWS CLI 사용 시 이것이 기본 전략이에요. 하지만 기본값을 price capacity optimized 할당 전략으로 지정해 재정의할 것을 권장해요.

최저 가격 전략에서 가장 저렴한 풀에 사용 가능한 용량이 없다면 Spot Instances는 사용 가능한 용량이 있는 다음으로 저렴한 풀에서 제공돼요. 풀이 원하는 용량을 충족하기 전에 용량이 소진되면 플릿은 다음으로 저렴한 풀에서 요청을 계속 충족해요. 원하는 용량이 충족되도록 여러 풀에서 Spot Instances를 받을 수 있어요.

이 전략은 용량 가용성이 아니라 인스턴스 가격만 고려하므로 높은 중단률로 이어질 수 있어요.

최저 가격 할당 전략은 AWS CLI에서만 사용할 수 있어요. EC2 Fleet의 매개 변수 이름은 lowest-price, Spot Fleet은 lowestPrice예요.

사용할 풀 수(Number of pools to use)

대상 Spot 용량을 할당할 Spot 풀 수예요. 할당 전략이 lowest price로 설정된 경우에만 유효해요. 플릿은 가장 저렴한 Spot 풀을 선택하고 지정한 Spot 풀 수에 대상 Spot 용량을 균등하게 할당해요.

플릿은 지정한 풀 수에서 최선 노력으로 Spot Instances를 가져오려고 시도한다는 점에 유의하세요. 풀이 대상 용량을 충족하기 전에 Spot 용량이 소진되면 플릿은 다음으로 저렴한 풀에서 요청을 계속 충족해요. 대상 용량이 충족되도록 지정한 수보다 많은 풀에서 Spot Instances를 받을 수 있어요. 마찬가지로 대부분의 풀에 Spot 용량이 없다면 지정한 수보다 적은 풀에서 전체 대상 용량을 받을 수 있어요.

이 매개 변수는 lowest price 할당 전략을 지정할 때 AWS CLI에서만 사용할 수 있어요. 매개 변수 이름은 EC2 Fleet과 Spot Fleet 모두 InstancePoolsToUseCount예요.

On-Demand Instances용 할당 전략

내 시작 구성은 EC2 Fleet이나 Spot Fleet이 On-Demand Instances를 시작할 수 있는 모든 가능한 용량 풀(인스턴스 유형과 가용 영역)을 결정해요. 하지만 인스턴스를 시작할 때 플릿은 지정한 할당 전략을 사용해 가능한 모든 풀에서 특정 풀을 선택해요.

On-Demand Instances에 대해 다음 중 하나의 할당 전략을 지정할 수 있어요.

최저 가격(Lowest price)

On-Demand Instances는 사용 가능한 용량이 있는 가장 저렴한 풀에서 제공돼요. 이것이 기본 전략이에요.

가장 저렴한 풀에 사용 가능한 용량이 없다면 On-Demand Instances는 사용 가능한 용량이 있는 다음으로 저렴한 풀에서 제공돼요.

풀이 원하는 용량을 충족하기 전에 용량이 소진되면 플릿은 다음으로 저렴한 풀에서 요청을 계속 충족해요. 원하는 용량이 충족되도록 여러 풀에서 On-Demand Instances를 받을 수 있어요.

우선순위 지정(Prioritized)

플릿은 각 시작 템플릿 재정의(override)에 할당한 우선순위를 사용해, 가장 높은 우선순위의 인스턴스 유형부터 시작해요. 이 전략은 속성 기반 인스턴스 유형 선택과 함께 사용할 수 없어요. 이 할당 전략 사용의 예시는 On-Demand 용량의 인스턴스 유형 우선순위 지정을 참고하세요.

적절한 Spot 할당 전략 선택

사용 사례에 적합한 Spot 할당 전략을 선택해 플릿을 최적화할 수 있어요.

최저 가격과 용량 가용성 균형 맞추기

가장 저렴한 Spot 용량 풀과 용량 가용성이 가장 높은 Spot 용량 풀 사이의 트레이드오프를 균형 맞추려면 price capacity optimized 할당 전략을 사용할 것을 권장해요. 이 전략은 풀의 가격과 해당 풀의 Spot Instances 용량 가용성에 모두 기반해 Spot Instances를 요청할 풀을 결정해요. 즉 가격을 고려하면서도 단기간에 중단될 가능성이 가장 낮은 풀에서 Spot Instances가 요청된다는 뜻이에요.

플릿이 컨테이너화 애플리케이션, 마이크로서비스, 웹 애플리케이션, 데이터·분석 작업, 배치 처리 등 회복력 있고 상태 비저장인 워크로드를 실행한다면 최적의 비용 절감과 용량 가용성을 위해 price capacity optimized 할당 전략을 사용하세요.

플릿이 작업 재시작과 관련된 중단 비용이 더 높을 수 있는 워크로드를 실행한다면 애플리케이션이 중단 시 그 지점에서 다시 시작할 수 있도록 체크포인트(checkpointing)를 구현해야 해요. 체크포인팅을 사용하면 price capacity optimized 할당 전략이 높은 Spot Instance 중단률을 제공하지 않는 가장 저렴한 풀에서 용량을 할당하므로 이 워크로드에 잘 맞게 돼요.

price capacity optimized 할당 전략을 사용하는 예시 JSON 구성은 다음을 참고하세요.

중단 비용이 높은 워크로드

비슷한 가격의 인스턴스 유형을 사용하거나 중단 비용이 매우 커서 비용 절감이 미미한 중단 증가와 비교해 부적절한 워크로드를 실행한다면 선택적으로 capacity optimized 전략을 사용할 수 있어요. 이 전략은 중단 가능성이 더 적은, 가장 가용성이 높은 Spot 용량 풀에서 용량을 할당하므로 워크로드의 전체 비용을 낮출 수 있어요.

중단 가능성을 최소화해야 하지만 특정 인스턴스 유형 선호도가 중요하다면 capacity optimized prioritized 할당 전략으로 풀 우선순위를 표현하고 사용할 인스턴스 유형을 가장 높은 우선순위부터 낮은 우선순위 순으로 설정할 수 있어요.

capacity optimized prioritized에 우선순위를 설정하면 On-Demand 할당 전략이 prioritized로 설정된 경우 같은 우선순위가 On-Demand Instances에도 적용된다는 점에 유의하세요. 또한 Spot Fleet의 경우 우선순위 사용은 플릿이 시작 템플릿을 사용할 때만 지원돼요.

capacity optimized 할당 전략을 사용하는 예시 JSON 구성은 다음을 참고하세요.

capacity optimized prioritized 할당 전략을 사용하는 예시 JSON 구성은 다음을 참고하세요.

시간 유연한 워크로드이고 용량 가용성이 요인이 아닐 때

플릿이 작거나 짧은 시간 동안 실행된다면 용량 가용성을 고려하면서도 비용 절감을 극대화하기 위해 price capacity optimized를 사용할 수 있어요.

플릿이 크거나 오래 실행될 때

플릿이 크거나 오래 실행된다면 diversified 전략으로 Spot Instances를 여러 풀에 분산해 플릿의 가용성을 개선할 수 있어요. 예를 들어 플릿이 10개 풀과 100개 인스턴스의 대상 용량을 지정하면 플릿은 각 풀에서 Spot Instances 10개를 시작해요. 한 풀의 Spot 가격이 이 풀의 최대 가격을 초과하면 플릿의 10%만 영향받아요. 이 전략을 사용하면 시간이 지남에 따라 어떤 한 풀의 Spot 가격 상승에 플릿이 덜 민감해져요. diversified 전략에서 플릿은 On-Demand 가격과 같거나 높은 Spot 가격을 가진 풀에는 Spot Instances를 시작하지 않아요.

Spot Instances의 대상 용량 유지

Spot Instances가 Spot 가격 변경이나 Spot 용량 풀의 사용 가능한 용량 변경으로 종료된 후 maintain 유형의 플릿은 대체 Spot Instances를 시작해요. 할당 전략은 대체 인스턴스가 시작되는 풀을 다음과 같이 결정해요.

  • 할당 전략이 price capacity optimized라면 플릿은 가격을 고려하면서 가장 많은 Spot Instance 용량 가용성이 있는 풀에서 대체 인스턴스를 시작하고, 높은 용량 가용성을 가진 가장 저렴한 풀을 식별해요.
  • 할당 전략이 capacity optimized라면 플릿은 가용성이 가장 높은 Spot Instance 용량이 있는 풀에서 대체 인스턴스를 시작해요.
  • 할당 전략이 diversified라면 플릿은 대체 Spot Instances를 나머지 풀에 분산해요.

On-Demand 용량의 인스턴스 유형 우선순위 지정

EC2 Fleet이나 Spot Fleet이 On-Demand 용량을 충족하려고 할 때 기본적으로 가장 저렴한 인스턴스 유형부터 시작해요. On-Demand 할당 전략이 prioritized로 설정되면 플릿은 On-Demand 용량을 충족할 때 우선순위로 사용할 인스턴스 유형을 결정해요. 우선순위는 시작 템플릿 재정의에 할당되며 가장 높은 우선순위가 먼저 시작돼요.

예시: 인스턴스 유형 우선순위 지정

이 예시에서 각각 다른 인스턴스 유형을 가진 세 개의 시작 템플릿 재정의를 구성한다고 가정해 봐요.

On-Demand 가격은 인스턴스 유형에 따라 다릅니다. 이 예시에서 사용하는 인스턴스 유형은 가격 순으로, 가장 저렴한 인스턴스 유형부터 나열하면 다음과 같아요.

  • m4.large – 가장 저렴함
  • m5.large
  • m5a.large

우선순위로 순서를 결정하지 않는다면 플릿은 가장 저렴한 인스턴스 유형부터 시작해 On-Demand 용량을 충족해요.

하지만 사용하고 싶은 사용하지 않은 m5.large Reserved Instances가 있다고 가정해 봐요. 시작 템플릿 재정의 우선순위를 설정해 인스턴스 유형을 우선순위 순서대로 사용할 수 있어요:

  • m5.large – 우선순위 1
  • m4.large – 우선순위 2
  • m5a.large – 우선순위 3

더 알아보기