Savings Plans の推奨を柔軟に調整し効果を確認できる Purchase Analyzer を試す

記事タイトルとURLをコピーする

マネージドサービス部 佐竹です。
本日は少し前に発表された「Savings Plans Purchase Analyzer」について記載します。

はじめに

2024年11月22日(JST では11月23日)に Savings Plans Purchase Analyzer が発表されました。

Purchase Analyzer

マネジメントコンソール上では、「Billing and Cost Management」→「Savings Plans」以下に「Purchase Analyzer」としてメニューが実装されています。

本機能は、これまで Savings Plans の推奨(Recommendations)では不可能であった「3つの機能」をサポートする新機能となっています。

では「これまで何が不可能で」「これによって何が可能となったのか」を順に見ていきます。

Purchase Analyzer によって可能となったこと

①推奨購入金額のカスタマイズが可能になった

1つ目は「推奨購入金額(コミットメント)のカスタマイズが可能になった」ことです。

これまでの Savings Plans における推奨では、「Recommendation level」×「Savings Plans term」×「Payment option」×「Based on the past」の4つのパラメータを組み替えて推奨を確認することが可能でした。例えば、「1-year」×「All upfront」×「7 days」を選択したとします*1

この場合、最下部に「Recommended Savings Plans」として「最もコスト最適化効果が高くなるコミットメント金額」たった1つだけが表示されます。

Recommendations

今回サンプルとしています上画像においては「$1.95600/hour」となっていることがご確認頂けると存じます。また、この時の「Estimated monthly savings」は「$361.51/month」と表示されています。

View details

続けて「View details」を押下することで、「Recommendation details」として Savings Plans を購入した場合(実際は、もし過去同額の Savings Plans を購入していた場合)のシミュレーションを表示することも可能となっていました。

Recommendation details

上画像は、「Recommendation details」の表示結果です。

ただし、ここまでです。「最もコスト最適化効果が高くなるコミットメント金額」たった1つだけの表示、それが推奨の機能でした。ですが、新機能 Purchase Analyzer を使えばこれがカスタマイズ可能です。

さて、何故カスタマイズをしたいでしょうか?例えば「Savings Plans を推奨通りにフルコミットした後に、インスタンスを削除されることで Savings Plans が無駄となることを避けたい」という懸念から、少し値を下げたコミットメントをされたいお客様もいらっしゃいます

この場合、Purchase Analyzer で以下の通りにカスタムを行うことで、コミットメント金額を引き下げた場合の効果が推定可能となっています。

Enter your preferred hourly commitment

Commitment で「Custom」ラジオボタンを押下後、「Hourly commitment」に値を入力します。推奨コミットメントが「$1.95600/hour」となっていましたが、今回は「$1.0/hour」に値を下げた場合のシミュレーションをしてみます。

Lookback period 等の項目も調整した後「Run analysis」を押下します。

Analysis in progress

「Analysis in progress」となり、推奨生成のためのコスト分析が始まります。一度分析が開始されると、分析を途中でキャンセルができない点に注意してください。

なお、この分析時間ですが、分析対象となる AWS アカウントの数が多ければ多いほど時間がかかる点に注意してください*2

Analysis: $1.00000/hr

分析が完了すると、先にお見せしました「Recommendation details」と同様の画面が表示されますが、こちらはコミットメント金額を「$1.0/hour」に引き下げた推奨となっています。

コミットメント金額を減少させた結果として、コスト最適化効果も「$225.38/month」と値が変更されており、「$1.95600/hour」をコミットした場合の「$361.51/month」から減少していることがわかります。

このように、Purchase Analyzer で推奨購入金額(コミットメント)のカスタマイズが可能となったことで、「推奨よりも引き下げて Savings Plans の購入を行った場合のコスト最適化効果をシミュレートする」こともできるようになりました*3

過去ブログのご紹介と修正について

私は2020年11月に以下のブログを記載していました。「Savings Plan に関するよくある質問」というブログです。

blog.serverworks.co.jp

本ブログには「質問6. 推奨通りに買わない場合の効果予測はできますか?」という問い合わせへの回答を記載しておりました。そして当時は以下のように回答しておりました。

例えば推奨が $3.00/hour であった場合に $2.00/hour コミットしたら、どのようになるのかというのは計算できないものとなります。「Savings Plan の推奨通りにコミットしなかった場合どの程度のディスカウント効果が期待できるか」という計算ができるツールは現状提供されておりません。

先のブログの記載から約4年後、ついに「Purchase Analyzer」というツール(機能)が実装され、これが可能になりました。つまり今現在は「Savings Plan の推奨通りにコミットしなかった場合どの程度のディスカウント効果が期待できるか」という計算ができる機能が提供されています。これを受け、先のブログも合わせて修正を行っています。

②期限が近い Savings Plans を除外した推奨を表示可能になった

2つ目は「使用期限が近い Savings Plans を除外した購入推奨金額を表示することが可能になった」ことです。

まず、Savings Plans は1年もしくは3年の有効期限のため、1年もしくは3年毎に期限切れの対応(更新作業)が必要です。

Savings Plan と Reserved Instance ライフサイクル

上記スライドは、過去の私が主催しましたウェビナー資料からの抜粋です。

適用対象の選定を再度行う場合の注意

この「既存の Savings Plans の期限切れ」の時に困るのが、既存の Savings Plans によって推奨値が引き下がって少額になっていることです。

例えば、Savings Plans に$50.0/hour の推奨が表示されている場合に、$40.0/hour の購入を行った場合、推奨はおよそ $10.0/hour に引き下がると予想されます

しかし実際に、購入した Savings Plans の期限切れ時点で「$10.0/hour」の推奨が表示されるとしても、既存の「$40.0/hour」に加えて単純計算で「$50.0/hour」として Savings Plans を更新していいのかどうかは不安が残ります。ですがこれまで、既存の Savings Plans の期限切れを見越して、それを除外した推奨金額のシミュレーションは不可能でした

期限を迎えた後、推奨値が回復するまで待つ

もしこれを行いたい場合、これまでは既存の Savings Plans が期限切れした後に、推奨が回復するまで一定期間の待機が必要でした*4。ですがこの方法を採用すると、一定の間 Savings Plans によるコスト最適化が行われていない期間が発生する点が懸念となっていました。

このような利用シーンに対応するために、Purchase Analyzer では「使用期限が近い Savings Plans を除外した購入推奨金額を表示することが可能」になりました。これによって、既存の Savings Plans が期限切れした場合をシミュレーションし「期限切れ時点で Savings Plans を新たなコミットメント金額で更新する」ための事前の準備が容易となりました

実際にこれを Purchase Analyzer で試す方法は以下の通りです。

Exclude expiring Savings Plans

Purchase Analyzer の項目の1つ「Exclude expiring Savings Plans」には、90日以内に期限切れとなる Savings Plans を除外対象として選択が可能となっています。

このように「使用期限が近い Savings Plans を除外した購入推奨金額を表示する」ことが可能となったことで、Savings Plans の更新対応がやり易くなったと感じます。

オーバーコミット時のコミットメント金額引き下げ計算に有用

「使用期限が近い Savings Plans を除外した購入推奨金額を表示する」機能に関連して、少々込み入った話をします。

具体的な使用例として、Savings Plans を「結果的に」購入しすぎた(これを Savings Plans のオーバーコミット状態と表します) AWS アカウントがあるとします*5

No recommendations

この場合、Savings Plans の推奨は上画像の通りに「なし (No recommendations)」となります。何故このように表示されるかですが、Savings Plans を適用すべき AWS 利用料が全く存在しない状況のためです。

そしてこの状況において、先の通り「$60.0/hour」の 3年 Compute Savings Plans が90日以内に期限切れをすることがわかっているとします。ここで、1つ疑問が生まれます。

「Savings Plans の期限切れ後に、本来は何 USD のコミットメント金額で Savings Plans を購入すべきなのだろうか?」という疑問です。これまではこの計算はできませんでしたが、Purchase Analyzer ではこれを計算することが可能になります。実際にやってみました。

Analysis: $34.94000/hr

画像の通り「$60.0/hour」の 3年 Compute Savings Plans を「Exclude expiring Savings Plans」で除外し、推奨を分析してみると「$34.94000/hour」となることがわかりました。

これはつまり、本来は「$34.94000/hour」で済むところを「$60.0/hour」というオーバーコミット状態に陥っていることがわかります。よって、Savings Plans でコスト最適化が行われるサービスの利用傾向がこの先も変わらない前提であれば、「$60.0/hour」の期限切れ時に「$34.94000/hour」で更新を行うことが推奨される、ということが判明します。

Add Savings Plan to cart

なお、この分析結果の推奨通りに Savings Plans を購入したい場合は「Add Savings Plan to cart」を押下することですぐさま cart に入れることも可能となっています。

その他の使い道

その他の使い道ですが、具体的には「1-year × All upfront」の Compute Savings Plans を、次回の更新時には「3-year × No upfront」の Compute Savings Plans に切り替えたい、という利用シーンにおいても本 Purchase Analyzer の機能は有効です。

1年の Savings Plans と3年の Savings Plans ではコスト最適化効果が大きく異なりますので、このような切り替え(買い換え)を行う場合においても、これまでは「既存の Savings Plans が期限を迎えた後、推奨値が回復するまで待つ」方法を選択せざるを得ませでした。

③Lookback period を60日以内なら自由に指定が可能になった

最後に3つ目として「Lookback period を60日以内なら自由に指定することが可能になった」ことです。

Lookback period 1

例えば上画像のように、分析期間を「45日間」とすることも可能になりました。

Lookback period 2

他にも、特定の期間だけを「Absolute range」としても指定が可能となっています。上画像では「11月1日~11月15日」を選択していますが、これは例えば「毎月の後半ではワークロードの負荷が高くなり、一時的に EC2 インスタンスのスペックを向上させる必要がある」ような場合に適しています。

この場合、オフピーク分析を前提とするにあたり、月の後半は分析対象外とされたいでしょう。

注意点として、分析期間の最大幅は60日間で、最低幅は2日間(Start date と End date は別日を指定する必要がある)となっています。61日以上を入力した場合、もしくは「たった1日だけ」を選択した場合はそれぞれエラーとなります。

Failed to fetch StartCommitmentPurchaseAnalysis

Failed to fetch StartCommitmentPurchaseAnalysis
ValidationException: The number of days between Start and End must be within the range of 1 to 60 days.

AWS 公式ドキュメント等

Savings Plans Purchase Analyzer の発表

aws.amazon.com

AWS Billing and Cost Management が Savings Plans Purchase Analyzer を発表

aws.amazon.com

Deciding which Savings Plans to purchase

docs.aws.amazon.com

Document history (Savings Plans Purchase Analyzer)

Document history

Added a new feature to help you estimate the cost, coverage, and utilization impact of the Savings Plans you plan to purchase.

November 21, 2024

https://docs.aws.amazon.com/savingsplans/latest/userguide/doc-history.html

まとめ

本ブログでは、AWS における Savings Plans の推奨を「柔軟に調整して効果を確認することが可能となる」新機能 Purchase Analyzer について、具体的な利用例をあげながら詳しく解説してみました。

以下にポイントをまとめます。

  1. 推奨購入金額(コミットメント)のカスタマイズが可能になった
  2. 使用期限が近い Savings Plans を除外した購入推奨金額を表示することが可能になった
  3. Lookback period を60日以内なら自由に指定することが可能になった

特に2点目については具体例として「オーバーコミット時のコミットメント金額引き下げ計算に有用」という点と「1年の Savings Plans を期限切れ時に3年の Savings Plans に買い替えるような場合の、組み合わせ変更時にも有用」である点について掘り下げました。

これまでできなかった「痒い所に手が届く」アップデートとなっている新機能 Purchase Analyzer によって、Savings Plans の運用保守の利便性が向上したと確信しています。

以上で本ブログは終了となります。

それでは、またお会いしましょう。

*1:Recommendation level を選択しない場合は自動的に Payer になります

*2:数百アカウントが分析の対象となる組織で実行した場合、数分の待ち時間が発生しました。ただ2度目の分析からは前回の分析結果を再利用するのか、速度アップするようでした

*3:補足ですが、推奨よりも引き上げた購入シミュレーションも可能です。ただしそのように利用されることは稀だと考えています

*4:他にもいくつか対応パターンがありますので、1つの方法としてのご案内です

*5:例えば Savings Plans を推奨通りに購入後に、利用料の多いメンバーアカウントの解約があったり、巨大な EC2 インスタンスが削除されたりした場合を想定してください

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。