SP 구매 시 약정 금액이 부족하다면?

Savings Plans 의 약정 금액이 필요 금액보다 부족해지는 경우에 대해 정리한 글입니다
2023.10.13

안녕하세요 클래스메소드의 수재입니다.
이번에 SP를 구매하기 위해 견적을 짜야 할 일이 있었습니다.
그러다보니 약정 금액이 부족해진다면 어떻게 되는지 알고 싶었는데 공식 문서에 간략하게 기재되어 있어서 관련 내용을 정리해보았습니다.

SP 구매에 필요한 금액은 어디서?

SP의 구매 방식 및 인스턴스 타입마다 필요한 약정 금액은 공식 페이지에서 확인할 수 있습니다.

표에는 해당 인스턴스 타입을 SP 구매시 1시간당 금액(Savings Plans 요율), 온디맨드와 비교한 할인율(온디맨드 대비 절감액), 온디맨드로 구매시 1시간당 금액(온디맨드 요율), 운영 체제 등을 확인할 수 있습니다.

Compute Savings Plans 와 EC2 Instance Savings Plans

Compute Savings Plans는 EC2 이외에 Lambda, Fargate 등 서버 리소스를 이용하는 다른 서비스에도 SP 할인을 적용할 수 있습니다.
또한 EC2에 SP를 적용할 때 특정 인스턴스 패밀리에 한정되지 않고 사용하고 있는 EC2에 전체가 대상으로 지정됩니다.

반면 EC2 Instance Savings Plans는 EC2에만 SP가 적용되며 특정 인스턴스 패밀리를 설정하여 구매하기 때문에 해당 패밀리만 SP가 적용됩니다.

좀 더 상세한 내용은 아래 블로그를 참고해주세요.

약정 금액은 얼마가 적당한가?

적당한 약정 금액을 알기 위해서는 필요 금액을 하루 중 사용 시간으로 나누면 해당 인스턴스에 적당한 약정 금액을 계산할 수 있습니다.

  • {약정 금액} / 24 X {하루 중 인스턴스 사용 시간)

인스턴스의 사용 시간은 대략적으로 계산할 수 있지만 아무래도 해당 사용 시간을 계약 기간인 1년이나 3년 동안 유지할 수 있는지가 확신할 수 없는 경우가 많습니다.
그래서 불필요하게 비용이 낭비되는 것을 방지하기 위해 분기를 나누어 SP를 구매하는 방식도 고려할 수 있습니다.

예상보다 많은 인스턴스를 사용하게 된다면?

만약 한번에 구매하거나 나눠서 구매한 후 처음 예상보다 더 많은 인스턴스를 사용하게 된다면 SP는 어떻게 적용될까요?
우선 SP가 적용되는 우선 순위를 알아볼 필요가 있습니다.

  • Reserved Instances 가 적용된 후에 Savings Plans가 적용
  • Compute Savings Plans 가 EC2 Instance Savings Plans 보다 먼저 적용
  • 통합 결제 패밀리가 활성화되어 있다면 Savings Plans 소유자 계정의 사용량에 먼저 적용된 다음 다른 계정의 사용량에 적용
  • Savings Plans 요금을 현재 온디맨드 요금과 비교하여 할인율이 가장 높은 대상부터 Savings Plans가 적용
  • 동일한 할인 비율을 가진 여러 사용량이 있는 경우 Savings Plans는 가장 낮은 Saving Plans 비율을 가진 첫 번째 사용량에 적용

해당 내용은 공식 문서에 정리되어 있습니다.

마지막으로 문서에 기재되어 있듯이 예상보다 많은 인스턴스를 사용하게되어 약정 금액이 부족하게 되면 우선 약정 금액을 모두 소진할 때 까지 SP가 적용되며 부족한 금액은 온디맨드 비용으로 청구됩니다.

예시

EC2 Instance Savings Plan 으로 SP를 구매한 후 약정 금액이 부족한 경우를 예로 들어 설명하자면 다음과 같습니다.

예시의 전제는 다음과 같습니다.

  • 서울 리전, 1년 선결제, EC2 Instance Savings Plan 으로 SP 구입
  • 24시간 365일 가동되는 m6i.large 인스턴스 1대와 하루에 8시간 가동되는 m6i.large 인스턴스 1대가 대상

23년 10월 기준 위의 조건으로 m6i.large 인스턴스를 SP로 구매하려면 시간 당 USD 0.07203 의 약정 금액이 필요합니다.
계산을 쉽게하기 위해 시간당 USD 0.07 로 계산하도록 하겠습니다.

처음 2대의 인스턴스에 대해 SP를 적용하기 위해 필요한 약정 금액은 USD 0.09333 이 됩니다.

  • 0.07 / 24 X 24 = 0.07
  • 0.07 / 24 X 8 = 0.02333...

따라서 처음에는 서울 리전, 1년 선결제, EC2 Instance Savings Plans, m6i 인스턴스 패밀리로 USD 0.09333의 약정 금액을 구매하여 USD 817.57를 납부하게 됩니다.

SP 구매 3개월이 지난 후 24시간 가동하는 m6i.xlarge 를 추가하였습니다.
또한 8시간만 가동할 계획이었던 m6i.large 인스턴스도 24시간 365일 가동하는 것으로 바뀌었습니다.
이런 상황에서 SP 가 적용되는 대상과 3대의 EC2에 대한 비용은 다음과 같은 흐름으로 적용될 것이라 추정할 수 있습니다.

  • RI와 SP 중 SP만 구매했으므로 SP만 적용
  • EC2 Instance Savings Plans 만 구매했으므로 m6i 인스턴스 패밀리에 대해 EC2 Instance Savings Plans가 적용됨
  • m6i.large와 m6i.xlarge 중 할인율이 높은 인스턴스 사이즈에 우선적으로 SP를 적용
  • 할인율이 같다면 Savings Plans 의 비율이 낮은 쪽에 우선 적용

23년 10월 기준 m6i large와 xlarge의 할인율을 보면 동일한 것을 확인할 수 있습니다.

인스턴스 타입 Savings Plans 요율 할인율 온디맨드 요율
m6i.large USD 0.07668 38% USD 0.118
m6i.xlarge USD 0.15337 38% USD 0.236

결과적으로 할인율이 동일하기 때문에 Savings Plans 의 비율이 낮은 m6i.large에 SP가 우선적으로 적용됩니다.1

그럼 이미 구매한 약정 금액인 USD 0.09333 은 다음과 같이 적용될 것입니다.

  • 첫 번째 m6i.large : 전체 비용을 SP로 지불 (약정 금액 중 USD 0.07 소모)
  • 두 번째 m6i.large : 전체 비용 중 일부분을 SP로 지불(약정 금액 모두 소모)
    • 부족한 금액은 온디맨드 요금으로 지불(SP로 지불된 금액이 대략 33%이기 때문에 시간 당 온디맨드 요금인 0.118의 66%인 USD 0.078 이 청구 될 것으로 추정)
  • m6i.xlarge : 전체 비용을 온디맨드 비용으로 지불(시간 당 USD 0.236)

따라서 기존에 구매했던 SP 이외에 온디맨드 요금은 시간 당 USD 0.314(1년 합계 약 USD 2,750.64) 이 발생할 것으로 추정 할 수 있습니다.2

마무리

EC2 비용을 효율적으로 지불하기 위한 Savings Plans 에 대해 알아보았습니다.
아무래도 계약 기간 중 워크로드가 변경될 가능성은 언제나 있기 때문에 적절한 약정 금액의 계산과 계획이 필요하게 되는 것 같습니다.
또한 SP 구매 후 워크로드가 변경되어 추가적인 비용이 발생하게 되었더라도 무조건 SP를 구매하기보다 우선 SP를 구매하는 것이 온디맨드와 비교하여 충분한 효율을 낼 수 있는지를 먼저 검토하는 것을 추천드립니다.

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


  1. m6i.xlarge의 비용은 large 의 비용을 2배 한 것이기 때문에 계산해보면 어느 쪽에 적용이 되어도 전체 금액은 똑같습니다. 
  2. 어디까지나 추정 이므로 확실한 금액은 한달이 지난 후 청구서를 보는 것이 확실합니다.