こんにちは。仕事でAWSの構築し、プライベートでAWSの研究と技術書の執筆をし、Amazonで本を売っているAmazon依存症の佐々木(@dkfj)です。
AWSはお手軽便利で、個々のサービスの利用料はリーズナブルです。一方で、いろいろなシステムを作っていくと、気がつけば月々のコストがそれなりの金額になっている場合もあります。そういった際に検討するのが、コスト削減の施策です。一般的な利用方法だと、一番コストが高くなるのがEC2インスタンスです。EC2の利用料削減の方法として、真っ先に思い浮かぶのがリザーブドインスタンスだと思います。しかし、今ではリザーブドインスタンスをより発展させて柔軟な形で利用できるSavings Plansというものがあります。今回は、これを紹介しようと思います。
2つのタイプのSavings Plans
Savings Plansには、2つのタイプがあります。Compute Savings PlansとEC2 Instance Savings Plansです。
EC2 Instance Savings Plansは、従来のリザーブドインスタンスと非常に近い割引プランです。リージョンやインスタンスファミリーを指定する必用がある代わりに、後述のCompute Savings Plansより高い割引率を享受できます。この割引率はリザーブドインスタンスのスタンダードRIと同等です。リザーブドインスタンスより柔軟な点としては、購入後のOS変更やテナンシーなどを変更可能です。また、インスタンス自体の価格が変動した場合、それに追随します。EC2インスタンスが値引きされたら、その値引きされた金額を基準に計算されるということです。一方で、リザーブドインスタンスとの違いとしては、キャパシティ予約などはできません。
Compute Savings Plansは、今後のコスト削減方法の本流となるべきサービスです。基本的な考え方は、EC2 Instance Savings Plansと同じですが、全リージョンが対象となります。そして、EC2のみならずFargateやLambdaも対象となります。これは、嬉しいですね。ということで、Savings Plansがどこの部分が割引の対象で、どのように購入するのかを見てみましょう。
Savings Plansの仕組み
リザーブドインスタンスは割引させたいインスタンスタイプを指定していましたが、Savings Plansは金額を指定します。単位時間あたりの対象サービス(EC2, Fargate, Lambda)の利用料を合計し、最低限どれくらいを使うかをコミットします。下の図でいうところの、変動の下限の部分です。その金額が単位時間あたり$10としたら、コミットメントとして割引後の金額を指定します。
※EC2 Instance Savings Plansだと、リージョンやインスタンスファミリーの指定も必用です。
文章で説明すると少し難しく感じるかもしれませんが、実際は金額を指定するだけなので簡単です。コンソールに推奨事項というのがあって、現状の利用料を元に推奨の購入額も教えてくれます。
コンソールで数字を入れてみると解るのですが、1時間あたり$1でも1ヶ月で$720、1年だと$8,760と大きな数字になってビックリするかもしれません。指定している金額と実際に払う金額の乖離が、直感とずれていることが解りにくさなのかもしれませんね。
どう使うのか
柔軟性が高くリザーブドインスタンスより有利な条件にも関わらず、まだまだ認知度が低いように思えます。その理由の一つがインスタンスに対してではなく、利用料をコミットメントするという事にあるのかと思います。設計・構築段階では、どのインスタンスファミリーをどれくらい使うというのは、はっきりさせていると思います。一方で、それがどれくらいの料金なのかは、実際に構築している人は気にしていない事が多いのではないでしょうか?
リザーブドインスタンスと同じなのかもしれないですが、そのAWSアカウントを管理する立場の人が定期的に利用状況をチェックし、定量的に利用している部分についてはSavings Plansを適用していくという運用が必用です。また買い方は時間あたりのコミットメントを指定するだけですが、割引率はリージョン・プラットフォーム・OSごとに異なってきます。これを厳密に計算しようとすると大変なので、EC2インスタンスなら20%引きとかざっくりと計算した方が良いです。少しづつ適用し、実際の利用額を見ながら対象を増やすといったような感じですね。
まとめ
リザーブドインスタンスに代わる割引プランとして、Savings Plansの紹介でした。インスタンスファミリーに関わらず利用できるというのは、かなり使いやすいです。リザーブドインスタンスの課題を克服してのサービスなので、今後も拡充が期待できると思います。またリザーブドインスタンスとの併用もできるので、キャパシティ予約が必用なものはリザーブドインスタンスを利用してというような使い方もできます。これを機に、AWSの利用料を一度見直してみてはいかがでしょうか?
なお現状はRDSは対象ではないですが、そのうち対応してくれないかと切に願っています。