Public cloud에 시스템을 운영하면 사용에 따른 즉각적인 비용이 반영되므로 사용하는 자원의 크기나 효율적인 사용에 대한 많은 고민이 동반된다. 사용량에 따라 그 크기를 조절하는 autoscaling이 일반적으로 변화하는 사용량에 대응하도록 활용되고 있다. 그렇다면 기본적으로 개별가격을 적절하게 조정하는 방법은 없을까? 클라우드 제공자들은 다양한 하드웨어를 가상화 크기별로 나누고 이에 따른 타입을 정의하여 서비스를 제공하며 각 타입의 가격을 다르게 측정하여 사용자들이 적절한 자원을 선택하도록 하고있다. (아래는 아마존에서 제공하는 타입의 일부)
추가적으로 가상자원 풀을 여유있게 보유하면서 사용자의 요청에 대응하는 클라우드 제공자의 특성에따라 나오는 자원의 제공형태가 있다. 본 페이지에서는 aws 기준으로 이러한 자원에 대해 간단하게 알아보고 이를 활용하여 kubernetes 클러스터를 운영하는 방법에 따라 다뤄보도록 한다.
클라우드 제공자들은 다양한 컴퓨팅 자원을 보유하고 있으면서 사용자에 요청에 따른 자원을 즉각 제공하는 것을 업의 본질로 하고 있다. 따라서 항상 일정수준의 버퍼을 유지하고 있어야 하며 이는 항상 여유자원이 있다는 것을 의미한다. 이에 대한 효율적인 운영을 하기위해 만들어진 개념이 spot instance이다.
Amazon EC2 스팟 - 온디맨드 요금에서 최대 90% 절약
단순하게 말하면 매우 저렴한 가격에 인스턴스를 제공하지만 클라우드 제공자의 자원이 부족해지는 경우 가장 먼저 삭제할 수 있다는 조건을 붙이는 것이다. spot 인스턴스의 가격은 시간별 위치별로 달라지며 가격에 따른 사용자의 선택을 강요한다. (시간 당 $xx 인데 쓸건가?)
상시 가용성이 필요하지 않은 배치작업 등에 주로 사용되고 테스트나 개발을 위해서도 많이 활용된다. 또한, EC2 Auto Scaling 기능과 연동을 통해 일반 인스턴스와 함께 배포하여 성능 및 워크로드 비용 최적화에 사용될 수도 있다.
ec2의 ‘Spot Requests’ 메뉴를 통해 간단하게 spot instance를 사용하는 방법을 살펴보자.
‘request spot instance’ 선택
Create Spot Fleet Request