Amazon Web Services 한국 블로그

EC2 스팟 인스턴스에서 자원 중심 입찰 기능 제공

올해 초에 EC2 Spot 집합 API를 소개했습니다. 이전 글에서 언급했듯이 한번의 API 요청으로 Spot 집합 인스턴스를 시작하고 관리 할 수 있습니다. 스팟 인스턴스 집합 구성을 필요로 하는 용량 시간 당 입찰 가격 인스턴스 유형을 지정하면, Spot 집합은 최저가의 EC2 용량을 찾아 내고 그 용량을 유지 합니다.

오늘은 기존 입찰 방식에 가중치를 적용하여 Spot 집합 API 기능을 더욱 강화했습니다. 새로운 기능을 통해 인스턴스 유형 및 가용 영역 안에서 애플리케이션에 가장 적합한 입찰을 진행할 수 있습니다. RequestSpotFleet API를 호출 할 때 (인스턴스 당) 입찰 가격을 지정합니다. 하지만, 요구하는 자원에 대한 자세한 조건을 주면 더 좋을 것입니다. 예를 들어, 최소 488GiB 메모리를 2개 이상의 R3(메모리 최적화) 인스턴스를 원하거나 최소 128vCPU을 C3와 C4(컴퓨팅 최적화) 인스턴스 조합으로 원하는 경우 등입니다.

신규 자원 중심 입찰 방식
새로운 자원 중심의 입찰 모델은 이러한 종류의 스팟 집합 인스턴스 요청이 가능합니다. 각 인스턴스는 만들어질 집합 크기에 영향을 주는 여러 가지 자원을 “용량 단위(capacity units)”로 유지합니다. 앞의 예제처럼 몇 GB의 RAM 또는 얼마의 vCPU 자원이 필요한가? 또는 EBS 최적 대역폭 계산 능력, 네트워크 성능 및 기타 응용 프로그램 고유 단위 등이 많습니다. 이러한 용량 단위 Spot 인스턴스 집합의 요청 매개 변수로 사용 용량 단위 전체에 대한 각 인스턴스 비율도 알려드립니다.

이를 통해 각 인스턴스 유형을 실제로 사용할 수 있는지 여부에 신경 쓰지 않고, 여러 인스턴스 유형의 자원을 경우에 따라서는 여러 가용 영역에 걸쳐 사용할 수 있습니다. 각 RequestSpotFleet 요청에는 여러 시작 설정 (launch specification)을 지정할 수 있고, 요청한 인스턴스 유형에 따라 AMI를 지정할 수 있습니다. 각 시작 설정 (launch specification)에는 다음과 같은 값을 지정할 수 있습니다 :

  • WeightedCapacity – 지정된 인스턴스 유형이 전체 용량 중 얼마나 차지하게 할지를 지정합니다. Spot 인스턴스 입찰을 할 때 유닛마다 입찰 가격을 계산합니다. 예를 들어, 15.25GB 메모리 r3.large 인스턴스에 비해서, 30.5GB 메모리를 탑재 한 r3.xlarge 인스턴스에 대해 2배의 비용을 지불한다는 입찰이 가능합니다.
  • SpotPrice – 특정 유닛 단위의 입찰 가격으로 인스턴스의 입찰가보다 우선합니다. 이 값을 사용하면 특정 인스턴스 유형, 가용 영역이나 서브넷을 선택하거나 하지 않도록 하는 것이 가능합니다.

아래는 메모리 기반의 시작 설정의 한 사례입니다.

Instance Type Instance Weight
 r3.large  15.25
 r3.xlarge  30.5
 r3.2xlarge  61
 r3.4xlarge  122
 r3.8xlarge  244

먼저 원하는 용량인 488GB를 지정하고 이에 대한 대상 용량에 대한 입찰 가격 (GB/시간)을 RequestSpotFleet를 실행하면, 이 경우 r3.large에 비해 r3.8xlarge는 16배 높은 가격을 지불하고 선언 한 것입니다.

EC2 서비스에서는 이 정보를 바탕으로 유닛 당 Spot 가격이 최저에서 사용 가능한 인스턴스를 찾아 가장 경제적인 조합의 스팟 인스턴스 집합을 구축합니다. 다음과 같이 단일 인스턴스 유형을 사용한 간단한 구성이 가능합니다 :

  • 2 x r3.8xlarge
  • 4 x r3.4xlarge
  • 8 x r3.2xlarge
  • 16 x r3.xlarge
  • 32 x r3.large

조금 더 복잡하게 한다면 다음과 같습니다.

  • 1 x r3.8xlarge and 2 x r3.4xlarge
  • 2 x r3.4xlarge and 8 x r3.xlarge
  • 8 x r3.xlarge and 16 x r3.large

시간이 지남에 따라 스팟 가격 상승으로 인스턴스가 중단 된 경우, 필요한 자원을 보충하기 위한 대체 인스턴스가 시작됩니다. 이 경우, 여러분의 애플리케이션은 인스턴스 유형 (및 사용할 수 있는 메모리 용)을 감지하여 조정해야 합니다. 스팟 집합에서는 사용 가능한 리소스를 사용하여 지정된 용량을 달성하기 위해 최대 인스턴스를 추가로 확보하게 됩니다. 이전 예제에서는 512GiB 전체 집합 인스턴스의 용량을 요청했을 때 발생합니다. 또한, 작은 요청이나 용량이 큰 인스턴스가 최저가(유닛 당) 가격인 경우에도 비슷한 일이 발생합니다.

용량 단위에 대해
용량 단위는 사전에 정해져 있으며, 인스턴스의 물리적 특성과 직접 매핑할 필요는 없습니다. 몇 가지 벤치 마크 테스트를 하여 인스턴스 유형별 트랜잭션 비율(TPS)을 측정하고 있다면, 필요한 TPS를 처리 할 수​​있는 전체 용량을 요청하는 그 시점에서 가장 경제적인 EC2 인스턴스 유형을 제시합니다. 사실 스팟 인스턴스 기법은 기술과 비즈니스의 교차점에 있습니다. 여러분의 비즈니스 경제성을 개선할 수 있고, (온디멘드 인스턴스 가격보다 90% 이상 비용 절감하기 위해) 창의적이고 혁신적인 여지가 많이 있습니다.

이러한 입찰 메커니즘을 사용하면 원하는 가용 영역의 WeightedCapacity 값을 높이고, 우선 순위를 제어할 수 있습니다. 예를 들어, 동일한 인스턴스 유형으로 여러 설정을 해두고, 다른 가용 영역에 서로 다른 가중치를 설정 할 수 있습니다.

API 요청은 AWS Command Line Interface (CLI)를 사용하거나 RequestSpotFleet API를 호출하십시오.

이 기능은 모든 리전에서 스팟 인스턴스를 사용할 때 사용 가능합니다.

Jeff;

PS – EC2 스팟 인스턴스에 대한 자세한 사항은 스팟 인스턴스 분류글을 참고하시기 바랍니다.

본 글은 New – Resource-Oriented Bidding for EC2 Spot Instances의 한국어 번역입니다.