CS課佐竹です。
虫歯予防にはフッ素、コスト削減には Savings Plans 、ということで今日もSPの話をします。
- はじめに
- Savings Plans の Recommendation を確認する
- Savings Plans を購入する
- Order する
- 購入済のSPを確認する
- Budgets を設定したいが
- まとめ
はじめに
Savings Plans に関するブログ第3弾です。第1弾は「[新機能] Savings Plans のリリースにあわせてIAMの権限を修正した話」で、第2弾は「Savings Plan と Reserved Instance の比較」でした。さて今回は Savings Plans の「推奨」を参考に4種類ほど実際に購入してみましたのでそのレポートです。また4つの運用Tipsも合わせて記載しております。本ブログがSPを買う際のイメージとして参考になれば幸いです。
経緯
サーバーワークスでは、エンジニアは「検証用AWSアカウント」が「社員1人つき1つ」与えられます。また、この各検証用AWSアカウントを統合するマスターアカウント(Payer)があり、このマスターアカウントにおいて Savings Plans の推奨を見てみますと「Savings Plans を買ったら結構コスト削減できるな」ということに気付いたので社長を説得してSavings Plansを買ってもらうことにしました。たまたまですが、本アカウント内ではほとんど Reserved Instance が購入されていなかったのも幸いでした。そういうわけで、検証用AWSアカウント配下で Savings Plans を実際に購入した時の記録をただいまより記載します。
購入を行う Savings Plans の一覧
社内の申請上、購入予定の一覧が必要であっため作成しました。以下の一覧の通りに今回は購入を行います。
※ドル円変換レートは $1 = 110円です
まずは、この4種類の Savings Plans を購入することを決定した背景についてです。
Savings Plans の Recommendation を確認する
Savings Plans には Reserved Instance と同様に、購入の推奨(Recommendations)が行われる機能があります。実際に確認してみましょう。以下は「検証用マスターアカウント」の Savings Plans の Recommendation になります。
Recommendation は設定によって値が変わります。最初に貼った画像のものは 「Compute × 1年 × All upfront × 60日」の設定になります。
Based on the past とは?
「Based on the past」はこの推奨を分析する過去の期間であり、「7日, 30日, 60日」が存在します。7日にしますと、「ここ最近の一週間」だけを分析することになります。「7日」にすることのメリットは「ここ最近の動きを把握できる」のがメリットで、数日前に Instance を Terminate したような場合は、60日よりも7日の方が Recommendation の購入推奨額が低く出ます。反対に数日前に Instance を Launch したような場合は、60日よりも7日の方が Recommendation の購入推奨額が高く出ます。
一般的には「60日」が最も長い期間のため、60日を利用されることを推奨することが多いのですが、先に記載しました通り状況によりますので、3つの値を比較して適切なものを選択されても良いと考えます。
その他の Recommendation
続いて、他3パターンの Recommendation を確認しました。参考まで、比較して見比べてみてください。
Compute × 1年 × No upfront × 60日
Compute Savings Plans は柔軟性が高いが故に、その推奨も非常にシンプルで、最後に出力される Recommended Compute Savings Plans はたった1行だけです。「Estimated monthly savings」を見ると All upfront よりも No upfront の方がコスト削減効果が低くなっていることがわかります。
EC2 Instance × 1年 × All upfront × 60日
EC2 Instance Savings Plans は、「Region と Instance Family」 をそれぞれ選択必須となります。そのため、Region別、Instance Family 別に推奨値が表示されるため、数が多くなっています。
EC2 Instance × 1年 × No upfront × 60日
EC2 Instance Savings Plans でも「Estimated monthly savings」を見ると All upfront よりも No upfront の方がコスト削減効果が低くなっていることがわかります。
Recommendation の比較
以下に簡単に Recommendation をまとめました。上に行くほどコスト削減効果低く、下に行くほどコスト削減効果が高いようになっています。
Type | Term | Payment option | Based on the past | Estimated monthly spend | Estimated monthly savings |
Compute | 1年 | 前払いなし | 60日 | $3,607 ($4.94/h) | $875 ($1.20/h) |
EC2 Instance | 1年 | 前払いなし | 60日 | $3,242 ($4.44/h) | $1,005 ($1.38/h) |
Compute | 1年 | 全額前払い | 60日 | $3,411 ($4.67/h) | $1,071 ($1.47/h) |
EC2 Instance | 1年 | 全額前払い | 60日 | $3,097 ($4.24/h) | $1,115 ($1.58/h) |
比較してみますと、「Compute Savings Plans」 よりも 「EC2 Instance Savings Plans」 の方がコスト削減効果が高いことがわかります。またもちろん「前払いなし」よりも「全額前払い」がよりコスト削減効果が高いとわかります。ただ1点興味深いと思った点は、「EC2 Instance SP × 1年 × 前払いなし」よりも「Compute SP × 1年 × 全額前払い」の方がコスト削減効果が高いことです。私は「EC2 Instance Savings Plans」はRegion×ファミリー固定の点からなるべく買いたくないと考えていたので、この結果は嬉しい誤算でした。
なお「Compute Savings Plans」 はFargateなども対象に入りますので、対象となるEC2以外のサービスを主にご利用されている場合に、「Compute Savings Plans」 の方が効果が高く見えると考えられます。
今回はこの額を参考に「買ったSPを合わせると推奨の 70% 程度カバーされる」ようにしました。具体的な計算ロジックとしては「Compute × 1年 × No upfront × 60日」において、推奨されるコミットメントの額が「$4.2/h」になっていました。$4.2 × 0.7 = $2.94/h ということで、およそ $3.0/h です。また、「全額前払い」を少し検証してみたかったので、それぞれ $0.01/h でコミットすることに決めました。そういうわけで合計は $3.02.h になっています。
運用Tips 1
Savings Plans の推奨は Payerアカウント(今回はマスターアカウント) でのみ確認が可能です。以下は公式ドキュメントよりの抜粋となります。そのため、各メンバーアカウント(子アカウント)では Recommendation を確認できません点ご注意ください。
※2020年11月現在この仕様は修正され、各子アカウントでも確認できるようになっています
Savings Plans » User Guide » Understanding Your Savings Plans Recommendations
Recommendations are calculated at the Payer Account level only.
https://docs.aws.amazon.com/ja_jp/savingsplans/latest/userguide/sp-recommendations.html
また、この Recommendation は Reserved Instance と異なり「特定のAWSアカウントを省く」「Compute SP で特定のRegionだけに絞り込む」などができません。そのあたりの詳細な検索機能は現状ないとご理解ください。
2020年3月26日追記:この点(Linked AccountレベルのSP購入推奨値)については「Reserved Instanceの推奨事項をSavings Planのコミット額に変換する方法」でフォローしております
運用Tips 2
運用Tips 3
Estimated monthly spend には「Savings Plans が適用されない(オンデマンド利用したほうが良い)分のオンデマンド利用料」が加えられています。実際にコミットする額、つまり Savings Plans で購入する額は最下部に出ている額「Recommended commitment」になります。
Savings Plans を購入する
最初に提示しました一覧の通りに、上から順に購入作業を行っていきます。
まずは「Compute × 1年 × 前払いなし」からです。
購入画面ですが、デフォルトで「All Upfront」が選択されていますので、「No Upfront」に変更します。「Hourly commitment」 は $2/h とします。画面右下「Add to cart」から購入を続けます。
無事に買い物カゴに入りました。今回はまとめて買うので「Add another Savings Plan」を選択して続けます。
次は「EC2 Instance × 1年 × 前払いなし」です。
「EC2 Instance」を選択すると「Region」と「Instance Family」マストで選択しなければなりません。Region は東京リージョンで確定として、問題は Family です。今回は「Recommendation」で出てきたうちの利用料が多い t2 Familyにしました。やはり Recommendation はあると参考になりますね。
次は「Compute × 1年 × 全額前払い」です。
「全額前払い」の方がコスト削減効果が高いのに $1/h と額を下げた理由は、「前払いコストが大きいと辛い」という単純な理由からです。全額前払いは購入した月にまとめて請求されるので、今回だと $8,760 が一括で請求されるため、そのまとまった支出を抑えたかったという背景があります。
最後は「EC2 Instance × 1年 × 全額前払い」です。
またしても「Region」と「Instance Family」マストで選択しなければなりません。今回は t3 Familyにしました。Recommendation に表示されているのはもちろんのこと、 t2 & t3 はどちらも比較的よく利用されるためです。
運用Tips 4
Savings Plans で入力を行う 「Hourly commitment」 は現状 $0.001 までしか対応しておりません。また、CLIでも以下の通り 0.001 までしか入力できません状況です。
create-savings-plan
--commitment (string)
The hourly commitment, in USD. This is a value between 0.001 and 1 million. You cannot specify more than three digits after the decimal point.
https://docs.aws.amazon.com/cli/latest/reference/savingsplans/create-savings-plan.html
「Savings Plans の公式料金ページ」では「Savings Plans rate」で $0.0001 の記載があるので、てっきり $0.0001 まで指定できるものと思い込んでいたのですが、指定できる単位は $0.001 までという仕様でした。
Order する
事前に準備した一覧の通り買い物カゴに入れ終わったので、一覧で確認します。
問題がなさそうなので、「Submit order」で購入を行います。
Orderが問題なく処理されると、上記画面が表示されます。
購入済のSPを確認する
Cost Explorer の左上にあるボタンを押下すると、左端が開いてメニューが表示されます(私は、最初メニューがなくて戸惑いました)。
メニューの中から「Inventory」を押下し、購入済の Savings Plans を確認します。
左端に表示されている 「Savings Plan ID」 は念のため隠してあります。各SPの「Status」ですが、購入直後は「Payment pending」になります。
数分ほど待つと、無事に全ての「Status」が「Active」になりました。
Budgets を設定したいが
RI と同様に、購入した SP は AWS Budgets でアラートを仕掛けることができます。
AWS Documentation » Savings Plans » User Guide » Monitoring Your Savings Plans » Using Budgets
https://docs.aws.amazon.com/ja_jp/savingsplans/latest/userguide/sp-usingBudgets.html
ただし、購入した直後に Budgets のアラート設定ができないため、しばし設定まで待つ必要があります。
というわけで、今回のブログはここまでとなります。
Utilization の通知については、後日以下のブログにて設定しました。
また、有効期限切れの通知については以下のブログをご参考ください。
まとめ
今回は実際に Savings Plans を買ってみましたので、その時に行った作業をキャプチャ付きで説明させて頂きました。本ブログが Savings Plans の購入を検討されているお客様の参考になれば幸いです。
そして次回は AWS Budgets でのアラート設定方法、及び「Savings Plans が適切に適用されているか?」を確認するためのレポートについてご説明したいと考えております。ではまたお会いしましょう。
追記
1年後、これらの Savings Plans によって得られたコスト削減効果を確認したブログを記載しました。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。