본문 바로가기

운영경험

Spot Instance 운영 경험 (2020.11.10 ~ 2020.12.03)

본 문서는 2020 2학기 졸업프로젝트 - 오픈소스 기여에서 스팟 인스턴스를 운영한 경험을 문서로 정리한 것입니다.

 

운영 계기

금번 졸업 프로젝트에서는 Spot 인스턴스로 운영하고자 하였다. 일반적으로 사용하는 on-demand는 물론, 기간을 확정하는 대신 저렴하게 사용하는 reserved 인스턴스보다 가격이 저렴하기 때문이다. 또한 한편으로, spaceone팀에서 최근 개발중인 메인 피쳐가 스팟 인스턴스에 관련한 것인 만큼, 피쳐 개발에 도움이 되고자 하는 의도도 있었다.

이에 따라, 모두 3개의 인스턴스를 스팟 인스턴스로 운영하였다.

  • bastion 인스턴스(t3a.micro)

  • node1 인스턴스 (m5.xlarge)

  • node2 인스턴스(m5.xlarge)

운영 결과

두 노드 인스턴스가 대단히 빈번하게 evict되었다. 이와 달리 bastion 인스턴스는 evict되지 않았다.

시사점

1. 인스턴스 유형의 크기에 따른 차이(구체적 수치)

해당 정보는 의미없어 보일 수 있다. 크기가 클수록 evict될 확률이 높다는 점은 주지의 사실이기 때문이다. 그러나 여기서 주목할 점은 차이가 있다는 사실이 아니라, 구체적으로 m5.xlarge 유형의 인스턴스가 얼만큼의 빈도로 evict되는지를 대략적으로 파악할 수 있었다는 점이다.

적게는 2회에서 많게는 5회의 빈도로 evict되었음을 확인할 수 있다.

2. Evict 시점

Evict되는 시점은 두 부분으로 두드러졌는데, 대부분 정각~새벽, 한낮 이었다.

즉, 해당 시간대가 EC2의 자원사용량이 가장 피크치는 시점인 것이다. 스팟 인스턴스 운영을 보수적으로 할 경우에는 해당 정보를 활용해 종료 알림 없이도 사전에 온디맨드로 옮길 수 있을 것이다.

다만 거시적인 사용패턴은 대동소이할 것으로 예상되지만, 엄밀히는 해당 정보가 싱가포르 리전 기준이며, 리전마다 달라질 수 있음은 유념해야 할 것이다.

3. 입찰(bidding) 가격은 큰 의미가 없음

현재 아마존이 밝히고 있는 evict 기준은 두 가지다.

  1. 경매에서 밀릴 경우

  2. 자원이 부족할 경우

그러나 운영 결과 실질적으로 evict가 일어나는 경우는 자원이 부족할 경우밖에 없음을 확인했다. bidding 가격은 evict 사실에 큰 영향을 주지 못한다. 물론, 경쟁이 치열한 리전에서는 결과가 달라질 수 있음을 밝혀둔다.

 

제언

본 단락에서는 스팟 인스턴스를 효율적으로 사용할 수 있는 방향을 제안코자 한다.

1. 이전 세대의 인스턴스 사용

스팟 인스턴스에서 evict되지 않는 방법으로 아마존에서 권장하지 않는 방법은 두 가지다.

  1. 소규모의 인스턴스를 사용할 것

  2. 이전 세대의 인스턴스를 사용할 것

그러나 첫번째 방법은 유효한 방법이라 말하기 어려운데, EKS의 노드로 활용할 경우 internal fragmentation 문제로 너무 작은 인스턴스는 무의미하기 때문이다.

때문에 실질적으로 의미있는 제안 방법은 두 번째로 보인다. 이전 세대의 인스턴스는 성능 대비 가격이 비싸기 때문에 온디맨드로는 선호되지 않는다. 그러므로 스팟으로는 evict되지 않을 가능성이 높음은 개연성이 있는 사실이다.

그러나, 실제로 그러한지는 실험이 필요한 부분이다. 스팟 인스턴스 사용자의 비중에 따라 오히려 경쟁이 더욱 치열할 수도 있기 때문이다.

2. 피크 시간대에는 사전에 이식해놓기

시사점 단락의 2번.evict 시점항목에서 밝혔듯, evict 시점에는 일정한 패턴이 관찰된다.

따라서 어느정도 evict가 예견되므로, 해당 시점에는 온디맨드로 이식해 서비스를 지속하는 것도 하나의 방편으로 보인다.