Amazon Web Services 한국 블로그

EC2 Spot 인스턴스를 통해 가격에 민감한 앱 만들기

지난번에 EC2 Spot 인스턴스의 모범 사례 에 대한 기사를 연재할 계획을 말씀드린 바 있습니다. 그 첫번째로 Spot 인스턴스를 사용하여 어떻게 하면 가격 기반 응용 프로그램을 개발할 것인가? 라는 주제로 EC2 Spot 팀의 2 명의 시니어 개발자와 함께 이야기를 하였습니다. Dmitry Pushkarev (기술 개발 담당)와 Joshua Burgin(제품 관리자)과의 대화를 인터뷰 형식으로 편집해서 제공해 드립니다.



Jeff : Spot 인스턴스 가격의 진정한 의미는 무엇일까요?

Joshua : Spot 기반 무장애 응용 프로그램을 구축 할 때, 현재 가격과 과거 가격 기록은 중요한 고려 사항입니다. 가격을 잘 살펴봄으로서 가장 가능성 높은 용량 풀(Capacity Pool)에 응용 프로그램을 배포하거나, 서비스가 방해 받을 가능성을 줄이고 가격 성능을 전반적으로 향상시킬 수 있습니다.

Spot 시장에서 인스턴스 가격은 수요와 공급으로 정해집니다. 낮은 가격이라는 것은 수요보다 많은 용량이 있다는 것을 의미합니다. 낮은 가격이거나 낮은 변동폭으로 일정한 것은 그 용량 풀은 수요가 적다는 것을 의미합니다. 예를 들어, 이전 세대의 인스턴스가 그런 경향을 가집니다.(m1.small, c1.xlarge, cc2.8xlarge 등)


Jeff : 고객이 어떻게 (가격에 따라 인스턴스가 변동될 수 있는) 환경에서 애플리케이션을 구축할 수 있을까요?

Dmitry : (Spot 인스턴스를 이용하여) 장애가 나지 않도록 응용 프로그램을 설계할 때 ‘가격 기록’을 잘 사용하는 것은 중요합니다. 고객에게도 각각 배치 전략이있습니다만 일반적으로 두 가지 개의 성공 패턴이 있습니다. 하나는 가격 변동폭이 적은 용량 풀 (인스턴스 유형 및 가용 영역)을 선택하거나, 여러 용량 풀에 필요한 용량을 분산 배치하는 것입니다.

주식 시장이라는 좋은 예가 있습니다. “가장 좋은 성능”의 용량 풀을 찾아 정기적으로 그 선택에 대해 다시 확인 할 수 있으며, 관련이 없는 풀에 걸쳐 분산시켜 장애 위험을 크게 줄일 수 있습니다.


Jeff : 용량 풀의 배치 전략에 대해 자세히 알려주세요.

Joshua : 가격 변동 폭이 안정적인 풀을 찾기 위해 최근 Spot 가격 기록을 분석하는 아이디어가 있습니다. 용량 풀에서 입찰 희망 가격(매 시간에 지불한 최대 가격)을 초과 한 최근 시점부터 현재까지 기간으로 분석하는 방법입니다. 과거의 경향이 결코 미래의 결과를 보장하는 것은 아니지만, 처음 패턴을 보기에 좋은 방법입니다. 이 전략은 개발 테스트 환경이나 장시간 분석 작업을 하는 인스턴스에 좋습니다. Amazon EMR 클러스터에 용량을 추가하는 방법으로도 좋구요. 이익을 극대화하면서 용량 풀을 계속 사용하실 거라면, 입찰 후 어느 정도 경과 한 후에는 가격을 재검토하는 것도 추천합니다.

Jeff : 고객들이 Spot 가격 기록을 어떻게 볼 수 있습니까?
Dmitry : 콘솔 또는 SDK 및 AWS 명령어 인터페이스 (CLI) 프로그램에서 볼 수 있습니다.
또한, Spot 페이지에서 접근 가능한 웹 기반 Spot Bid Advisor을 새롭게 만들었습니다. 이 도구는 여러 가용 영역 평균 통계를 표시하고 가격 변동이 작은 인스턴스 유형을 찾아기 쉽습니다. 리전, 운영 체제, 입찰 가격 (온 디멘드의 25 %, 50 %, 100 %)을 선택하면 지난 주 또는 매월 변화, 과거 빈도를 표시합니다.

GitHub의 저장소 aws-spot-labs 에 또 다른 예가 있습니다. get_spot_duration.py 스크립트로 Spot 가격 정보를 취득하여 입찰 희망 가격을 초과한 기간에 근거하여 인스턴스 유형 및 가용 영역을 사용할 수 있습니다.


Jeff : 그렇군요. 큰 인스턴스 풀을 선택하고 정기적으로 다시 살펴봐야 하는군요.

Dmitry : 네. 그게 좋은 출발점입니다. Spot을 보다 쾌적하게 사용하는 다음 단계로는 동시에 여러 풀을 사용하는 용량을 분산하는 것입니다. 왜냐하면 각 용량 풀은 물리적으로 분리되어, 가격에 관련된 이슈가 거의 없기 때문입니다. 여러 용량풀이 단기간에 동시에 가격이 상승하는 일은 매우 드뭅니다. 이를 통해 문제가 발생할 영향을 줄일 수 되고, 필요한 용량을 확보하는 데 충분한 시간을 얻을 수 있습니다.

Joshua : 이러한 용량 분산 방법은 장기적인 가격 대비 성능도 개선합니다. 만약 여러 인스턴스 유형 및 가용 영역에 균등하게 용량을 분산하고 시간 단가는 여러 풀에서 과금되므로 결과적으로 좋은 가격 대비 성능입니다.


Jeff : 너무 좋네요. 그 다음 단계가 될 입찰 전략은 어떨까요?
Joshua : 지불하고자하는 가격에 적절하게 입찰하는 것이 중요합니다. 부당하게 높은 Spot 입찰을 하는 것보다 여러 용량 풀을 신중하게 선택하고 거기에 애플리케이션을 분산 배치하여 고가용성을 제공하는 것이 좋습니다. 현재 용량 풀 가격이 상승하고 있다는 것을 발견하면, 그것은 수요가 증가하고 있다는 의미입니다. 문제를 피하기 위해 더 저렴한 풀에 업무를 마이그레이션하거나 높은 가격으로 놀고 있는 인스턴스를 종료할 것을 추천합니다.


Jeff : 더 정교한 입찰 전략을 사용하는 고객이 있습니까?

Dmitry : 많은 고객이 Spot을 사용할 수록 경쟁력 면에서 중요합니다. 프로덕션 환경을 모두 Spot에서 실행하는 고객도 있습니다. 물론 그들의 SLA를 충족하도록 추가 엔지니어링이 필요하지만… Spot에 대한 생각에 대해 의미 있는 이야기는 “클라우드 친화적” 응용 프로그램이 Spot에 의한 효과를 얻고 있다는 것입니다. 설계에 의한 복원력, 유연성, 가격을 인식하고 있다는 것을 의미합니다. 가격을 인식하고 가장 비어있는 용량 풀에 응용 프로그램을 배포 할 수 있습니다. 특히 신생 기업은 빨리 확장시키고 보다 저렴 컴퓨팅 인프라를 사용하기 위해 독창적으로 Spot을 사용하고 있습니다.

Joshua : Auto Scaling, Spot 모음, Elastic MapReduce와 같은 도구는 Spot을 조합 할 수 있으며, 특별한 추가 개발을 하지 않고 여러 용량 풀을 동시에 사용할 수 있습니다.

Spot 인스턴스에 대한 정보를 얻기 위해 앞으로도 블로그를 계속확인해 주십시오! 언제든지 여러분의 Tips(과 질문)을 댓글에 써주세요.

– Jeff ;

이 글은 Building Price-Aware Applications Using EC2 Spot Instances의 한국어 번역입니다.