Savings Plansの何がすごいのか。リザーブドインスタンスとの違いは？

## はじめに
2019/11/7 突如 Savings Plans なるComputeサービスのための新しい価格モデルが登場しました。

**New – Savings Plans for AWS Compute Services**
https://aws.amazon.com/jp/blogs/aws/new-savings-plans-for-aws-compute-services/

リザーブドインスタンスのように定期的な交換や修正を行わずとも利用料金の節約ができます。
更にRIでは対応していない AWS Faragte の利用料に適用することも可能です！！

## Saving Plansの特徴
1時間毎の一定の費用を1年 or 3年でコミットメントすることで割引が適用されます。
例えば1時間あたり \$20 をコミットメントすると、この \$20 は実際のEC2の使用に関係なく
支払いを行う必要がありますが、実際のオンデマンド料金よりも低価格なレートが適用されます。
支払いの方式はRIと同様に、全額前払い、一部前払い、前払いなしを選択できます。
（割引率が異なります。全前払い＞一部前払い＞前払いなし）
コミットメントを超えた分の使用は、通常のオンデマンド料金で請求されます。

更にSaving Plans は2つの価格モデルが提供されています。

### Compute Savings Plans
オンデマンドインスタンスと比較しコストを最大66％削減できます（コンバーチブルRIと同率）
特筆すべきはこれまでのRIより高い柔軟性です。
EC2(EMR、ECS、EKSクラスターの一部となるインスタンスも含む）およびFargateが対象となり
リージョン、AZ、インスタンスファミリー/サイズ、OS(Linux/Windows)、
テナンシー(共有/専有)に関係なく自動的に適用されます！

**2020/2/21追記**
Compute Savings Plansの対象にAWS Lambdaが追加されました。
割引はオンデマンドまたはProvisioned Concurrencyの実行時間料金に対して適用され、
最大17%割引になります。リクエスト数料金は適用対象外です

Savings Plan Update: Save Up to 17% On Your Lambda Workloads
https://aws.amazon.com/jp/blogs/aws/savings-plan-update-save-up-to-17-on-your-lambda-workloads/

Compute Savings Plansを利用するとコミットメント期間中に
インスタンスファミリーをc5からm5に変更しても！
リージョンをバージニア北部から東京リージョンに移行しても！
ワークロードをEC2からFargateへ移行しても！
自動的にSavings Plansによる価格レートが適用されます。
re:Inventで新しいインスタンスタイプが発表されたとしても安心です。

ただしリージョンに関しては中国は対象外になっています。
中国以外なので、GovCloudも対象です。

### EC2 Instance Savings Plans
オンデマンドインスタンスと比較しコストを最大72％削減できます（標準RIと同率）
このタイプは時間単位のコミットメントに加えて、例えば東京リージョンのc5といった形で
リージョンとインスタンスファミリーを指定する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/0e87e295-7d27-05a2-1d3a-8587e9380d3f.png)
最大割引率が高くなる一方で柔軟性が落ちますが、
AZやインスタンスファミリー内のサイズ、OS、テナンシーは関係なく適用されます。
こちらはFargateは対象外です。

### 簡単な比較
||Compute Savings Plan|EC2 Insntace Savings Plans|
|---|---|---|
|最大割引率|66%|72%|
|リージョンの柔軟性|Yes|No|
|AZの柔軟性|Yes|Yes|
|インスタンスファミリーの柔軟性|Yes|No|
|インスタンスサイズの柔軟性|Yes|Yes|
|テナンシーの柔軟性|Yes|Yes|
|OSの柔軟性|Yes|Yes|
|Fargateのサポート|Yes|No|Yes|No|

## Savings Plans の推奨事項について
AWS Cost Explorerで現状の利用量と選択するオプションに応じた推奨購入量および
オンデマンド料金と比較したコスト削減率を確認することができます。
過去7/30/60日の利用状況をベースラインとして選択することができるため、
一時的なスパイクを考慮して見積を行うことができます。超便利！
※冒頭のAWSブログより引用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d0977f3d-b137-b41f-44f6-0318042429d2.png)
推奨されるコミットメント量($/時間)が確認できます。
更に現状の月別オンデマンド使用量および
Savings Plansを購入後の推定月別支出額、および削減額がわかります。
使用状況の変動を考慮して、一定のオンデマンド利用分を残して推奨値が算出されているようです。

注意点としては 現状 AWS Organizationsでリンクされているアカウント(子)では
Savings Plans の推奨事項機能を利用することができません。
マスターアカウント(親)で確認する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/bf722b90-9793-11ac-b686-e0c09029266f.png)

## Savings Plansの適用範囲について
* RIを購入済みの場合はRI購入分が適用された後の使用量に適用される
    * つまり購入済みのRIが無駄になることはない
* オンデマンド料金と比較して最高の割引率となるリソースから適用される
* 同じ割引率となる場合は、より低いレートのリソースから適用される
* Savings Plansを購入したアカウントで計算、適用される
* 組織での利用の場合、余った分が組織内の別アカウントにも適用される   

具体的にどのように計算されるかはドキュメントに例が記載されています。
**Understanding How Savings Plans are Applied to Your Usage**
https://docs.aws.amazon.com/savingsplans/latest/userguide/sp-applying.html

## FAQ（となりそうな観点）
* 購入後、1時間あたりのコミットメント利用額を変更できるか
変更できません。ただし追加購入は可能です。

* キャパシティ予約はされるか
されません。ただし利用者自身でオンデマンドキャパシティ予約機能を
割り当てている環境でも購入したSavings Plansが適用されます。

* リザーブドインスタンスはどうなるのか
引き続き利用可能、購入可能です。前述のとおりまずはRI購入分が適用されてから
Savings Plansの計算が行われます。
ただしRIの交換や定期的な見直しを行いつつ、並行してSavings Plansを購入する
というのはという運用は計画や見積の労力を考えると大変なのではと個人的には思います。
既にRIでコスト最適化が達成できている環境の場合は、
Savings Plansによる恩恵は少ないと言えそうです。


## まとめ
Savings Plansを使用すると、特定のインスタンス構成ではなく
一定のコンピューティング使用量（\$/時間）をコミットすることにより請求額を削減できます。
RIのようにワークロードの変化に応じた交換や見直しを行う必要がないため、
大量のアカウントを管理している場合やグローバルリージョンに展開しているような
大規模な利用環境では管理、最適化の工数が大幅に削減できそうです。
これまで様々な事情や制約によりRIの購入に踏み切れていなかった方も
利用を検討されてみてはいかがでしょうか。



## 参考
**AWS Documentation » Savings Plans**
https://docs.aws.amazon.com/savingsplans/latest/userguide/what-is-savings-plans.html