Amazon Web Services 한국 블로그

EC2 Spot Fleet API – 한번에 수천개의 스팟 인스턴스 관리하기

지난 9년간 Amazon Elastic Compute Cloud (EC2)의 서비스 진화를 살펴 보는 것은 매우 흥미롭습니다. 초기에는 단일 인스턴스 타입을 단일 리전에서 사전에 정해진 주문형 가격에서 시작하였습니다. 지금은 다양한 인스턴스 타입이 11개의 리전 (AWS GovCloud (US) 포함)에서 시작할 수 있으며, 예약 인스턴스 및 스팟 인스턴스(현재 9 지역)를 선택할 수 있습니다. 그동안 EC2에 많은 기능을 추가했고, Amazon EMR, AWS Elastic Beanstalk, Amazon WorkSpaces, Amazon EC2 Container Service, AWS Lambda 등 다른 서비스의 빌딩 블록으로 사용되고 있습니다.

신규 스팟 집합 API
오늘 스팟 인스턴스의 집합을 바로 시작하고 제어 할 수 있는 새로운 API를 추가하였으며, 이를 통해 더욱 쉽게 스팟 인스턴스를 사용할 수 있게 되었습니다. (스팟 집합은 분산 응용 프로그램에서 병렬로 작동하는 스팟 인스턴스의 집합입니다. 스팟 집합으로는 일괄 처리 작업 및 Hadoop 워크 플로우, HPC 그리드 컴퓨팅 작업을 할 수 있습니다.) 많은 AWS 고객은 가장 낮은 비용으로 다양한 업무 영역(분자 생물학 시뮬레이션 연구에서 지속적인 통합 환경에 이르기까지)을 수행하기 위해 여러 인스턴스 유형과 가용 영역에서 사용 가능한 컴퓨팅 용량을 찾고, 시장 가격을 모니터링하여 입찰 가격을 관리하는 자체 코드를 만들어 적게는 몇 백에서 몇 천의 인스턴스 그룹을 시작할 수 있습니다.

새로 공개한 API RequestSpotFleet를 통해 스팟 집합의 대상 용량 시간 당 입찰 가격 및 부팅 인스턴스 유형을 지정하기만 하면 인스턴스를 띄울 수 있습니다. 최저가의 용량을 찾아 스팟 집합의 목표 용량을 유지할 수 있습니다. 일단 API 호출에서 이러한 모든합니다.

API 요청 시작하기

한 리전에서 최대 1000개의 활성 스팟 집합을 가질 수 있습니다. 하나의 스팟 집합과 한 개의 리전에 대해 3000개의 인스턴스 제한이 있습니다 (일반 계정이나 리전마다 있는 EC2의 상한도 그대로 유효하므로, 부팅할 인스턴스 갯수나 만들 수 있는 Amazon Elastic Block Store (EBS) 볼륨 수에도 제한이 걸립니다).

API 및 CLI를 통해 각 요청은 다음 값을 지정 해야 합니다 :

  • 대상 용량 – 스팟 집합에 넣고 싶은 EC2 인스턴스 수 (지정하지 않으면 기본값은 1)
  • 최대 입찰가 – 지불하려고 최대 입찰가
  • 시작 설정 – 시작하려는 인스턴스 수와 인스턴스 유형 및 시작 설정 (AMI Id, VPC 서브넷과 가용영역, 보안 그룹, 블록 디바이스 매핑 사용자 데이터 등). 더 싸고 사용하기 위해서는 일반적으로 부팅 설정에서는 특정 서브넷이나 가용 영역을 지정하지 않습니다.
  • IAM 역할 이름 – EC2가 스스로 종료하기 위해 필요합니다.

각 요청은 다음의 옵션 값을 포함 할 수 있습니다.

  • 클라이언트 토큰 –호출을 식별하는 고유한 문자열 (대소 문자 구분). 스팟 집합 요청을 위한 멱등 보장을 위해 사용할 수 있습니다.
  • 유효 기간 시작 날짜 – 호출 시작 날짜 및 시간
  • 유효 기간 종료 날짜 – 호출 종료 시간
  • 유효 기간 종료시 종결 – TRUE를 지정하면 호출 종료 시간에 스팟 집합의 모든 인스턴스가 종료됩니다. FALSE(기본값)으로 스팟 인스턴스는 그대로 실행을 계속하지만, 새로운 인스턴스를 시작합니다.

RequestSpotFleet API가 성공적으로 호출 되면 스팟 집합 요청 ID를 반환하며, 요청이 이상한 경우는 오류를 반환합니다. 사용할 수 없는 인스턴스 유형을 요청한 경우에도 오류를 받게됩니다.스팟 집합 요청 ID를 사용하여 DescribeSpotFleetRequests, DescribeSpotFleetInstances, DescribeSpotFleetRequestHistory, CancelSpotFleetRequests 등 기타 스팟 집합 API를 호출 할 수 있습니다 (각 API는 명령 줄에서도 동일한 기능이 있습니다).

더 자세히 살펴 보기
일단 호출이 접수된 날짜가 정해지면 EC2 스팟 가격이 달라졌다 해도 요청한 용량을 유지하게 됩니다. 시작 설정에 따라 현재 현물 가격을 모니터링하기 시작합니다. 최저가로 용량을 확보하기 위해 상한에 들어가고 있으며 입찰 제한에 들어가고있는 경우 스팟 인스턴스 시작합니다. 스팟 가격이 상승하면 스팟 집합의 인스턴스는 종료됩니다, 그 시점에서 최저가의 시작 설정으로 교체됩니다.
이 설정은 요청이 만료 될 때까지 또는 취소 할 때까지 활성화됩니다. 스팟 집합의 인스턴스는 의도적으로 종결하지 않는 한 계속 실행됩니다. 앞서 언급 한 바와 같이, IAM 역할을 포함해야 합니다. 이를 통해 EC2는 자신을 종료할 수 있습니다.

고려해야 할 사항
다른 신규 AWS 기능과 마찬가지로 첫 번째 출시한 상태에서 해야 할 많은 기능을 계속해서 구현해 나갈 예정입니다. 예를 들어, 우리는 인스턴스 가중치 시스템을 추가할 계획을 가지고 있습니다. 이것은 각 부팅 설정의 상대적인 우선 순위를 수식으로 표현할 수 있도록 합니다. 대상 용량이라는 기능은 계산에 필요한 스팟 집합의 “마력”을 나타낼 수 단위를 표현합니다. 각 스팟 집합는 특정 AWS 지역에서 실행합니다. 장래 적으로는 두 개 이상의 지역에 걸쳐 스팟 집합을 지원할 예정입니다.

바로 이용 가능
오늘부터 공용 AWS 지역에서 스팟 집합 기능을 출시 할 수 있습니다. 스팟 집합의 기능은 무료로 시작한 EC2 인스턴스 현물 가격과 기타 이용한 자원에 대해서 지불합니다.

Jeff;

이 글은 Amazon EC2 Spot Fleet API – Manage Thousands of Spot Instances with one Request의 한국어 번역입니다.