SAP-C02-095 · セクション 11 / タスク 2.6
Compute Pricing Modelの選択
オンデマンド / Reserved Instances / Savings Plans / Spot Instances / コミットメント / 使用量の安定性
コンピューティングコストを最適化するとき、
1か月で何時間使うかだけを見ても、適切な料金モデルは決まりません。
重要なのは、
いつ使うのか
↓
毎時間どこまで継続するのか
↓
その使用量が何年間残るのかです。
同じ月間使用量でも、
24時間ほぼ一定と、
1日の一部だけ大量利用では、コミットメントとの適合度が異なります。
ここでは既習の購入オプションそのものを覚え直すのではなく、
使用量モデル
↓
時間単位の安定性
↓
利用継続期間
↓
コミットメント量
↓
コミットメント期間
↓
料金モデルへの割り当てへ変換する方法を扱います。
ゴール
最終的に、
月間総使用量ではなく、
時間単位で残る使用量
+
その使用量が残る期間から、
どこまでコミットできるかを判断し、その結果を既習の料金モデルへ割り当てられることがゴールです。
1. 料金モデルは月間総量ではなく使用量の「形」から選ぶ
例えば、次の2つのワークロードを考えます。
| ワークロード | 使用方法 |
|---|---|
| A | 50台を24時間ほぼ一定で利用 |
| B | 150台を毎日8時間だけ利用 |
1日の合計はどちらも、
1200 instance-hoursです。
しかし時間ごとに見ると、
A
50 50 50 50 50 ...に対し、
B
0 0 0 ... 150 150 ... 0となります。
月間総使用量が同じでも、
毎時間継続する使用量は異なります。
したがって、
月間総量が安定
=
コミットメントに適するとは限りません。
まず、
時間単位で
どこまで使用量が残るかを確認します。
2. 平均値・ピーク・安定ベースラインを分ける
使用量を次のように分解します。
使用量
│ ┌───────
│ ┌───────┘
│ ┌─────┘
│────┴────────────────
│ 安定ベースライン
└──────────────────── 時間見るべき値は、
平均使用量
ピーク使用量
時間単位の安定ベースラインです。
長期コミットメントを考えるとき、
最大でどこまで使うかより、
ほぼすべての時間で
どこまで使用量が残るかが重要になります。
ピークをそのままコミットすると、需要が低い時間に未使用部分が発生する可能性があります。
3. Savings Plansは時間単位のコミットメント
Savings Plansでは、1年または3年の期間について、1時間あたり一定額の使用をコミットします。
特に重要なのは、
ある時間に余ったコミットメント
↓
別の時間には持ち越せないことです。
例えば、
00:00〜16:00
使用量ほぼ0
16:00〜24:00
使用量20 USD/h相当というワークロードについて、
1日の平均
約6.7 USD/hだけを根拠にコミットメントを決めると、
利用しない時間を見落とします。
したがって、
月間平均
↓
コミットメントではなく、
時間帯別使用量
↓
継続する時間単位使用量
↓
コミットメントで判断します。
4. リザーブドインスタンスも時間分布を無視できない
Amazon EC2リザーブドインスタンスは、選択した期間中、インスタンスが実行されているかどうかにかかわらず各クロック時間について課金されます。
そのため、
月に合計720時間使うという情報だけでは不十分です。
例えば、
1台を720時間連続と、
多数のインスタンスを
短時間だけ断続的に利用では、時間ごとの利用分布が異なります。
したがって、
総実行時間だけでなく、
どの時間に
どれだけ対象使用量が存在するかを確認します。
5. 「現在安定している」と「期間中残り続ける」は分ける
コミットメント判断では、
現在の使用量と、
その使用量が将来も残る期間を分けます。
例えば、
現在
80単位を24時間利用
8か月後
システム廃止予定なら、
現在の時間単位使用量
→ 非常に安定でも、
1年間残る使用量
→ 0になる可能性があります。
したがって、
時間単位で安定だけではコミットメント量を確定できません。
どの量が
どこまでの期間
残る確度が高いかまで確認します。
6. 安定ベースラインには「確度」がある
将来の使用量は、1つの数字で確定しているとは限りません。
例えば、
最低でも40
通常は70前後
多いと120と予測されているとします。
このとき、
70が最も可能性の高い値でも、
70を毎時間必ず使うとは限りません。
コミットメント量では、
最も可能性の高い使用量より、
高い確度で
継続して残る使用量を重視します。
例えば、
40
→ ほぼ全時間で必要
40〜70
→ 日によって変動
70〜120
→ 特定期間だけなら、
40が安定ベースラインの有力候補です。
7. 「平均使用量」と「コミット可能量」は一致しない
次のような1日の使用量を考えます。
18時間
20単位
6時間
100単位1日の平均は、
40単位です。
しかし40単位を毎時間コミットすると、
18時間
使用量20
コミット40となり、
20単位分を使い切れない時間が発生します。
したがって、
平均使用量
=
コミット可能量とは限りません。
時間単位で見ると、
ほぼすべての時間で残る20と、
特定時間だけ増える80へ分解できます。
コミットメント量を考えるときは、
月平均
日平均より、
時間単位の下限に近い安定使用量を見ることが重要です。
8. コミットメント期間中にベースラインが変わる場合
利用量が将来変化することが分かっている場合は、現在のベースラインだけを使いません。
例えば、
1〜6か月目
80単位
7〜12か月目
40単位で、7か月目に既存システムの一部廃止が確定しているとします。
現在の、
80だけを見て1年間コミットすると、
後半6か月
40単位分が余る可能性があります。
この場合は、
コミットメント期間
↓
期間内で予定されている需要変化
↓
期間全体で残る安定使用量を確認します。
つまり、
現在のベースラインではなく、
コミットメント期間全体を通して
残るベースラインを見ます。
9. 低需要・基準・高需要シナリオをコミット量へ変換する
コストモデルで、
低需要 40
基準 70
高需要 120というシナリオを作ったとします。
さらに、
40
→ 全時間帯で高い確度
40〜70
→ 日によって変動
70〜120
→ キャンペーン時のみと分かっているなら、
120すべてコミットする必要はありません。
また、
最も可能性が高い70をそのままコミット量にするとも限りません。
見るのは、
シナリオが外れても
高い確度で残る使用量です。
低需要でも残る
+
時間単位でも残る
+
期間中も残るという条件を満たす範囲が、コミットメント候補になります。
10. コミットメント量とコミットメント期間を分けて決める
コミットメントでは、
どれだけコミットするかと、
どれくらいの期間コミットするかを別々に判断します。
例えば、
毎時間40単位
今後18か月は高い確度で必要だとしても、
40単位という量の判断と、
1年
3年という期間の判断は別です。
まず、
時間単位使用量
↓
安定ベースライン
↓
コミット可能量を求めます。
次に、
利用継続の確度
↓
コミットメント期間を判断します。
量
↓
時間単位の安定性
期間
↓
将来利用の確度と分けると判断しやすくなります。
11. 割引率だけで長い期間を選ばない
3年コミットメントの方が割引面で有利になる場合でも、
3年間使う確度が十分とは限りません。
例えば、
18か月
高い確度で継続
その後
システム更改予定なら、
3年間の割引率だけではなく、
19か月目以降も
コミットメントを利用できるかを考えます。
料金モデル選択では、
割引率と、
将来利用の確度を交換条件として評価します。
12. 同じ月間コストでも適切な料金構成は変わる
例えば、どちらも現在月100万円のコンピューティング費用だとしても、
ワークロードA
24時間継続
需要変動小
今後3年間継続ワークロードB
昼間だけ利用
需要変動大
9か月後に再設計予定では、コミットメントの適合度は異なります。
したがって、
現在の月額コストだけから、
何%をコミットすべきかを決めません。
見るのは、
時間分布
+
利用継続期間です。
13. 代表的なアンチパターン
| アンチパターン | 問題 |
|---|---|
| 月間総使用量だけでコミット量を決める | 時間ごとの未使用を見落とす |
| 月間平均をそのままコミットする | 低使用時間の未使用を見落とす |
| 最大ピークまでコミットする | ピーク外の時間に余りやすい |
| 現在のベースラインが期間中ずっと続くと考える | 廃止・縮小予定を無視する |
| 基準シナリオだけでコミット量を決める | 低需要時の未使用リスクを見落とす |
| 未使用コミットメントを別時間へ繰り越せると考える | 時間単位の課金特性を誤る |
| 割引率だけで長期間を選択する | 利用継続期間との不一致を見落とす |
14. SAP-C02での判断フロー
1. 月間総量ではなく
時間単位使用量を確認
↓
平均
ピーク
安定ベースライン
2. ほぼすべての時間で残る量を確認
↓
コミット可能量の候補
3. 低 / 基準 / 高需要でも
その量が残るか確認
4. 期間中に
廃止・縮小・移行予定がないか確認
5. コミットメント期間全体で
残る使用量を求める
6. コミットメント量を決める
7. 利用継続の確度から
コミットメント期間を判断
8. 既習の購入オプションへ割り当てる
↓
高確度で継続する部分
→ Savings Plans / RIを比較
コミットしない・中断不可の部分
→ オンデマンドを評価
中断可能な部分
→ スポットを評価
9. 未使用コミットメントが
発生しないか再確認ここで、オンデマンドやスポットの機能を改めて覚え直す必要はありません。
ここで行うのは、
使用量 Model
↓
コミットできる部分
コミットしない部分
中断可能な部分へ分解した結果を、既習の料金モデルへ割り当てることです。
判断の中心は、
どれが最も割引率が高いかではありません。
どの使用量なら
各時間かつ契約期間中に
使い切れる確度が高いかを先に決め、その後で適切な料金モデルへ割り当てます。
まとめ
Compute 料金モデルを選ぶときは、
月間使用量だけではなく、
時間単位の使用量分布を確認します。
Savings Plansでは各時間のコミットメントを別の時間へ繰り越せず、リザーブドインスタンスも期間中の各クロック時間で課金されます。
そのため、
平均
ピーク
時間単位の安定ベースラインを分離します。
さらに、
そのベースラインが
コミットメント期間中も残るかを確認します。
まず、
時間単位で残る量
↓
コミットメント量
将来利用が続く期間
↓
コミットメント期間を決めます。
その結果を、
高確度で継続する部分
→ Savings Plans / RI候補
コミットしない中断不可部分
→ オンデマンド候補
中断可能部分
→ スポット候補として、既習の料金モデルへ割り当てます。
つまり、
料金モデルを先に選ぶのではなく、
使用量を分類
↓
コミット量と期間を決定
↓
料金モデルへ割り当てという順序で判断します。
主要AWS公式資料
- AWS Certified Solutions Architect - Professional SAP-C02 Exam Guide — Task 2.6
- AWS Savings Plans User Guide — What are Savings Plans?
- AWS Savings Plans User Guide — Understanding how Savings Plans apply to your usage
- Amazon EC2 User Guide — Reserved Instances for Amazon EC2 overview
- Amazon EC2 User Guide — How billing works with Reserved Instances