비용 효율적으로 EC2 구매하기 – SP 구매 전략

EC2의 Savings Plan을 효율적으로 구매하기 위한 모놀리식 구매와 롤링 구매에 대해 설명한 글입니다.
2023.09.12

안녕하세요 클래스메소드의 수재입니다.
저번 글에서 EC2의 RI 와 SP 에 대해 비교해보았습니다.

결과적으로 RI는 SP에 비하여 비교적으로 제약이 있는 반면에 구매 비용을 추측하기 쉽다는 장점이 있었습니다.
반대로 SP는 제약사항이 적은 반면에 결제금액을 추산해서 미리 지불하기 때문에 알맞은 구매량을 판단하기 어렵다는 점과 반영이 제대로 되고 있는지를 확인하기 어렵다는 단점이 있었습니다.

만약 인스턴스의 타입 변경이 예상되거나 EC2만을 이용할 때 AZ에 상관없이 더 높은 할인율을 적용받고 싶다면 EC2 Instance Savings Plan을 채택하게되는 경우가 많을 것입니다.
이번 글에서는 구매하기 까다로운 SP를 효율적으로 구매할 수 있는 전략에 대해 설명하고자합니다.

이 글은 다음 기사를 바탕으로 작성되었습니다.

결론부터

이 글에서 설명할 구매 방법은 single monolithic Savings Plan(이하 모놀리식 구매 방식)과 rolling Savings Plans(이하 롤링 구매 방식)입니다.
쉽게 말해서 [한 번에 다 사기] 와 [예상되는 전체 금액을 나눠서 사기] 입니다.
각 방식에 대해 자세히 알아보면서 어떤 상황에서 어떤 전략을 취하는게 좋을지 알아보겠습니다.

모놀리식 구매 방식

SP는 1년 혹은 3년의 사용량을 구매할 수 있습니다.
이 때 전체 선결제/부분 선결제/선결제 없음 중 선결제 방식을 골라 할인율과 선결제 금액의 트레이드 오프를 할 수 있습니다.
모놀리식 구매 방식은 1년이나 3년간의 예상 발생 금액을 추산하여 한번의 구매에서 전체 금액을 지불하는 방식입니다.

예로 들자면 1년 기한으로 700만원을 선결제로 지불하면 최대의 효율을 얻을 수 있는 상황입니다.
앞으로 1년간 별 문제 없이 처음에 정했던 리전, 인스턴스 클래스 및 사이즈, 전체 가동 시간 등이 앞으로도 변경되지 않는다면 첫 결제에서 700만원을 전부 선결제하는 것은 가장 효율적인 선택이 될 것입니다.
하지만 첫 예상보다 EC2의 가동시간이 적어지거나 예상보다 더 작은 사이즈를 사용해도 상관없어진다면 처음 지불한 700만원을 다 쓰지 못하는 상황이 발생할 것입니다.
그리고 코로나 등 예상할 수 없는 이벤트가 발생할 수도 있습니다. 그러면 이미지와 같이 실제 사용량이 예측량 보다 떨어지는 경우 구매한 SP를 모두 소모하지 못하는 경우가 발생할 수 있습니다.(그래프 1)

따라서 아무런 변수없이 1년 동안 사용한다는 것은 기업의 입장으로 보자면 쉬운 일이 아닙니다.

롤링 구매 방식

그래서 한번에 구매하는 것이 아니라 나눠서 구매하는 방법을 고려할 필요가 있습니다.
전체적인 평균 비용은 한번에 구매하는 것 보다 높아진다는 기회비용이 발생하지만 리스크를 관리할 수 있다는 장점이 있습니다.

롤링 구매 방식은 말그대로 롤링 방식으로 점차 확대/축소를 해나가는 방식입니다.
1년의 계약 기간을 일정하게 나누어 해당 기간마다 사용량을 평가하여 다음 기간까지의 사용량을 구매하는 방식입니다.

예를 들자면 다음과 같습니다.

조건
1년 동안 시간당 $10.00 의 약정 수준이 발생할 것으로 예상되고 있습니다.
이를 롤링 구매 방식으로 구매하기 위해 분기 별로 기간을 나누어 구매를 진행하려 합니다.
현재는 아무런 SP도 구매되어 있지 않습니다.

1 분기(Q1) 첫 분기에는 첫 번째 SP(SP1)는 전체의 1/4인 금액을 구매합니다.
- SP 1: ($10.00/4) = $2.50/시간 따라서 SP1은 시간당 $2.5의 약정 수준으로 구매를 합니다.

2 분기(Q2) 3개월째가 되기 전 다음 SP(SP2)의 구매를 진행합니다.
사용량을 측정해보니 시간당 $10.40 의 약정 수준이 발생할 것으로 예상됩니다.
SP2는 SP1의 금액을 제외한 1/3 만큼 구매합니다. - SP 2: ($10.40 – $2.50)/3 = $2.63/시간

3 분기(Q3) 마찬가지로 3개월 후 다음 SP(SP3)의 구매를 진행합니다.
사용량이 증가하여 시간당 $10.82 의 약정 수준이 발생할 것으로 예상됩니다.
SP3는 SP2 까지의 금액을 제외한 1/2 만큼 구매합니다. - SP 3: ($10.82 – $2.50 – $2.63)/2 = $2.84/시간

4 분기(Q4) 마지막으로 3개월 후 다음 SP(SP4) 구매를 진행합니다.
예상 되는 사용량이 감소하여 시간당 $10.49 약정 수준이 발생할 것으로 예상됩니다.
SP4는 지금까지의 금액을 제외한만큼 구매합니다. - SP 4: ($10.49 – $2.50 – $2.63 – $2.84) = $2.52/시간

결과적으로 4분기 시점에는 $2.50 + $2.63 + $2.84 + $2.52 = $10.49/시간 의 약정 수준의 계약이 구매되어 있습니다.
이러한 분기별 구매를 매 분기마다 진행한다면 SP의 구매를 사용량에 가장 근접하게 지불할 수 있을 것 입니다.
이런 구매를 그림으로 나타내면 다음과 같습니다.(그래프 2)

만약 예시의 상황에서 처음부터 $ 10.00 의 약정을 전부 구매해버린다면 최대 SP 효율을 내기 위해서 2분기,3분기에는 추가적인 SP를 구매하게 될 것입니다.
그럼 사용량이 감소한 4분기에는 감소된 사용량에 비해 많은 비용을 지불하게 될 것입니다.

반대로 처음에 $ 10.00 를 모두 구매한 후에 2분기에 예상보다도 사용량이 감소해버린다면 지불한 비용이 낭비될 것입니다.

롤링 구매 방식의 단점

예시에서는 분기마다 사용 수준을 평가해서 구매하였고 4분기에 와서야 전체 구매 금액에 가까운 사용 비용을 지불하였습니다.
그래서 위의 이미지에서 보이듯이 3분기 까지는 전체 금액을 지불한 상태가 아니기 때문에 전체 금액을 SP가 대응하고 있지 않습니다. 즉, 할인 효율이 낮습니다.
그러므로 SP의 최대 효율은 4분기까지 모두 구매한 이후부터 발생합니다.
결과적으로 1년 이후로 계속하여 SP를 구매할 예정이 아니라면 전체적인 비용 효율은 모놀리식 구매 방식보다 낮아질 가능성이 있습니다.(그래프 3)

위의 그래프는 1년 비용을 모놀리식으로 구매한 경우를 나타낸 것입니다.
그래프 2에서는 Q3 까지 전체 사용량에 비해 부족한 SP가 구매되어 있습니다. 반면 그래프 3에서는 그래프 2와 비교해서 Q3 까지의 사용량을 어느정도 대응하고 있는 것을 볼 수 있습니다.

이러한 단점을 상쇄하기 위해서는 구매하는 기간을 분기가 아닌 4개월 6개월 등으로 늘리는 방식을 채택할 수 있습니다. 하지만 기간을 늘리는 경우엔 1년 이후의 전체 기간에도 영향을 주게 되므로 비용 검토가 필요할 것 입니다.

결론

1년 동안의 사용량이 일정하며 장기적인 영향을 끼지는 변수가 없다면 한번에 1년/3년의 SP를 구매하는 것이 최대의 비용 효율을 가집니다.
반면 사용량의 변동이 심하고, 장기간 SP를 구매할 예정이라면 SP를 일정한 기간으로 나누어 구매하는 것이 최대의 비용 효율을 가집니다.
이러한 비용 계산이 힘든 경우라면 다소의 할인율을 감안하더라도 조건에 따라 RI를 구매하는 것이 좋을 수도 있습니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940지메일로 보내주시면 감사합니다.