PerfectScale
AWS Savings Plansのコミットメント、いくらが適正か?サイジング問題と、推測に頼らない方法
このページはEnglish、Deutsch、Español、Français、Italiano、Portuguêsでもご覧いただけます。
About Mohammad Reza Saleh Sedghpour
Mohammad Reza Saleh Sedghpour is a Senior Software Engineer II at DoiT and a Cloud Engineer and Researcher with over a decade of experience in cloud computing and distributed systems. He holds a Ph.D. in Computer Science, specializing in resiliency patterns for microservices, and is an active open-source contributor who regularly publishes research and presents at international conferences. At DoiT, he works on the automation behind cloud cost-optimization tooling, including commitment management — helping businesses use cloud technologies for optimal performance, resilience, and cost.
My personal page私がこれまで交わしてきたAWSコストの議論は、最終的に必ず同じ質問にたどり着きます。財務担当者、エンジニアリングリード、あるいは創業者が身を乗り出してこう尋ねるのです。「で、いくらコミットすればいいの?」
直感としては正しいのですが、問いの立て方が間違っています。多くの人は、サーモスタットの設定温度を尋ねるようにこの質問をします。まるで唯一の正解となる数字が存在し、それを一度見つけて固定すればよいかのように。
そんな数字は存在しません。適正なSavings Plansのコミットメントは、見つけ出す数字ではありません。動き続ける標的であり、使用量が足元で変化し続けるなか、毎月当て続けなければならないものなのです。
そして、この標的を外したときのコストは非対称です。だからこそストレスが大きいのです。コミットが少なすぎれば、得られるはずの節約をみすみす逃します。たとえばCompute Savings Plansはオンデマンド料金を最大約66%割り引くため、カバーされていない1時間は、その分だけ払いすぎた1時間です。コミットが多すぎればさらに深刻です。使わないかもしれないキャパシティに対して、1年または3年の契約を結んだことになります。遊休状態のSavings Planは単にお金を無駄にするだけではありません。置き換えるはずだったオンデマンド使用量よりも高くつくことさえあるのです。
具体的な数字で考えてみましょう。恒常的なベースライン、つまり本当に24時間稼働し続けているコンピューティングが約60ドル/時だとして、70ドル/時をコミットしたとします。この余分な10ドル/時は、月に約7,200ドルを無駄に支払っている計算です。しかも、今日の午後にでも停止できる過剰プロビジョニングされたインスタンスとは違い、Savings Planに与えられる修正の猶予はごくわずか。それを過ぎると、コミットメントのキャンセルも減額もサイズ変更も基本的にできません。残りの契約期間ずっと、その10ドル/時を抱え続けることになります。3年プランなら、この10ドル/時というたった一度のサイジングミスが、最初のレビューを迎える前に25万ドル規模の負債へと膨らみます。
これが罠です。アップサイドは割引額が上限。ダウンサイドは、ほぼ身動きの取れない複数年の負債。だからほとんどのチームは、不確実性のもとで合理的な行動を取ります。少なめにコミットし、ヘッジし、何年も静かに払いすぎ続けるのです。
この記事では、なぜこの数字を正しく決めるのが本当に難しいのか、なぜ手動プロセスではほぼ確実に情報が古くなるのか、そして、より良いメンタルモデルと自動化を組み合わせることで、四半期ごとの推測ではなく継続的に標的を捉え続けられるようになる方法を解説します。(どのコミットメント手段を使うかをまだ検討中なら、まずSavings Plans vs. リザーブドインスタンスの意思決定ガイドと、よくあるAWSコミットメントの7つの失敗のまとめをご覧ください。本記事は、すでにSavings Plansを選択済みで「いくら」という問いに向き合っている方を想定しています。)
短い答え
この記事から1つだけ持ち帰るなら、これです。平均的な週でもピークでもなく、恒常的なベースライン——本当に24時間稼働しているコンピューティング——に対してコミットすること。それを説明可能なカバレッジポリシー(支出のどれだけをコミットメントでカバーしたいか、そして超えない上限)に落とし込み、一度の大きな購入ではなく小さなステップでコミットメントを積み増して目標に近づいていくのです。
以下では、なぜそれが正しい答えなのか、なぜ通常のプロセスではそれが難しいのか、そしてスプレッドシートに張り付かずに継続的に運用する方法を説明します。
なぜ「いくら」が本当に難しいのか
まず、混同されがちだが区別すべき2つの言葉から始めましょう。カバレッジと使用率です。
- カバレッジは、対象となるオンデマンド支出のうち、どれだけがコミットメントでカバーされているか。Savings Plans対象のコンピューティングを約80ドル/時で稼働させていて、そのうち60ドル/時がカバーされていれば、カバレッジは75%です。
- 使用率は、購入したコミットメントのうち、実際に使われた割合。70ドル/時をコミットして、マッチする使用量が60ドル/時しか発生しなければ、使用率は約86%。遊休となった14%に対しても、コミット済みレートを払い続けることになります。
ここが厄介なところです。この2つは、どちらかを押し上げると逆方向に動きます。カバレッジを追求すればコミットメントを多く購入することになり、使用量が落ちたときに使用率が下がりやすくなる。使用率を守ろうと控えめに買えば、カバレッジ——つまり節約額——は低いまま。コミットメントのサイジングとは、まさにこのシーソーのどこに座るかを選ぶ行為なのです。多くのチームはこの選択を明示的に行わず、ただ場当たり的に反応しているだけです。

さらに、それぞれ計算を左右するレバーが存在します:
| 選択項目 | 選択肢 | トレードオフ |
|---|---|---|
| 期間 | 1年 vs. 3年 | 3年は割引が深くなる一方、ロックインされる期間は3倍になります。 |
| 支払い方法 | 前払いなし / 一部前払い / 全額前払い | 前払いを増やすとレートはわずかに良くなりますが、キャッシュが拘束され、間違えたときの痛手が大きくなります。 |
| プランの種類 | Compute SP vs. EC2 Instance SP | Compute SP(最大約66%オフ)はインスタンスファミリー、サイズ、リージョン、OS、テナンシー、さらにはFargate/Lambdaまで柔軟に対応。EC2 Instance SP(最大約72%オフ)は割引が少し深い代わりに、リージョン内の特定インスタンスファミリーに固定されます。ここでも柔軟性 vs. 割引です。 |
これらの選択にどれだけの価値があるかは、1つのインスタンスの価格への影響を見ればわかります。同じc6a.8xlargeを同一リージョンで、Compute Savings Planの期間と支払いオプション(およびオンデマンド)ごとに価格比較したものです:

その差は歴然です。同じマシンが、オンデマンドの約1.22ドル/時から、3年のCompute Savings Planでは約0.54ドル/時まで下がります。約56%もの差が、どう買うかだけで決まるのです。しかも差分は均等ではありません。1年から3年に移るとレートはほぼ半減しますが、前払いの選択(なし/一部/全額)は数パーセント動く程度。細則に見えるレバー——期間の長さ——こそが、実際にお金を動かすレバーなのです。
これらの選択はすべて、契約期間全体にわたってworkloadsがどうなるかを知っている前提に立っています。3年・全額前払い・EC2 Instanceプランでは、コミットメントのサイジングをしているのではなく、2028年のアーキテクチャを予言しているのです。これが本当の難しさです。数字を計算するのが難しいのではありません。その数字が依存する未来を知るのが難しいのです。
標的を動かし続ける5つの力
使用量が水平な直線なら、これはスプレッドシートの演習問題で済みます。しかし、そうであった試しはありません。コミットした後も「適正な」数字を引きずり回す、5つの力があります。

1. 使用量は一定ではない。 実際のコンピューティング支出は、バッチジョブ、ローンチ、季節的なトラフィック、大口顧客のオンボーディングなどで週ごとに変動します。好調な週に合わせてサイジングしたコミットメントは、静かな週には過剰コミットメントになります。恒常的なベースラインが実際には60ドル/時なのに、忙しい週に合わせて70ドル/時でサイジングすれば、落ち着いた瞬間から余分な10ドル/時は遊休コミットメントとなり、使っていないキャパシティに年間約87,600ドルを支払うことになります。追い求めていた割引よりも、生み出した無駄のほうが大きいのです。
2. ライトサイジングと移行がベースラインを縮める。 これが最も静かに、最も多くのお金を宙に浮かせる要因です。今日の使用量に合わせてコミットした後、チームは本来の仕事として、過剰プロビジョニングされたインスタンスをライトサイジングし、サービスをGravitonに移し、モノリスをリファクタリングします。使用量は下がり、コミットメントは下がりません。60ドル/時のベースラインにコミットした後、チームがGravitonに移行してベースラインが50ドル/時に落ち着いたとします。一夜にして、約10ドル/時分のコミットメントの行き場がなくなります。3年プランの残り約2年で、およそ17.5万ドルが宙に浮く計算です。エンジニアリングとして正しいことをしたのに、罰を受けたわけです。正しい順序はその逆で、まずライトサイジングし、その後にスリム化された定常状態にコミットすること。しかし、ほとんど誰もそうしません。コミットメントとライトサイジングが、別々のチームのバックログに存在しているからです。
3. コミットメントは失効し、失効は固まってやってくる。 1年前に購入したSavings Planは、特定の日に消滅します。まとめて購入していれば、まとめて失効し、カバレッジは一夜にして急落します。更新にはサイジング作業全体のやり直しが必要で、しかもそれは最も注意が向いていないタイミングでやってきます。見逃せば、失効した分は完全なオンデマンド料金に逆戻りです。
4. カバレッジの目標は使用率という結果を保証しない。 80%のカバレッジを目指していても、購入後に使用量が軟化すれば使用率は低迷します。目標は過去に基づいて設定され、使用率は未来に実現される。その間のギャップは純粋な無駄であり、請求書が届くまで見えません。
5. 時間そのもの。 「十分な確実性」を待つ1日1日が、オンデマンド料金で過ごす1日です。訪れることのない確信を追い求めて何カ月もコミットメントを先送りするチームは多く、先送りした割引は二度と戻ってきません。コミットメントの失敗に関する記事でも述べたとおり、移行中や不確実な状況でも、一部でもコミットするほうが、何もコミットしないより優れています。
これらはどれも計画の失敗ではないことに注目してください。単なる現実です。インフラは変化するのが当然なのです。問題は標的が動くことではなく、ほとんどのコミットメントプロセスが、標的は動かないという前提で作られていることです。
なぜ手動のアプローチは破綻するのか
実際のサイジングは、たいてい次のように行われます。
四半期に一度、誰かがAWSのSavings Plans購入推奨を開きます。AWSは一定期間——7日、30日、最大60日から選択——を振り返り、最大の節約に最適化された時間あたりコミットメント額を1つだけ提示します。誰かがそれを眺め、「念のため」少し割り引き、承認を取り、購入する。
このフローには、3つの問題が組み込まれています。
第一に、単一の振り返り期間から出た単一の数字であること。最大節約の推奨は、直近の過去がそのまま未来であると仮定し、カバレッジを高く押し上げます。使用量が安定していれば素晴らしいですが、そうでなくなった瞬間に高くつきます。
第二に、一括購入であること。四半期分のコミットメント判断を、1日の1回の取引で実行します。その日がたまたま使用量スパイクの頂点だったら、1年分のコミットメントをピークに固定してしまったことになります。
第三に、すでに古いこと。推奨がレビューされ、承認され、購入されるまでに数日から数週間が経ち、使用量は動いています。現在の現実にコミットしているのではなく、すでに過ぎ去った現実のスナップショットにコミットしているのです。
より深い問題は、サイクルの頻度です。使用量は連続的に変化するのに、手動プロセスは四半期ごとにしか動きません。動き続けるシグナルを年に4回サンプリングし、各サンプルに数週間遅れで対応している。スプレッドシートをどれだけ厳密にしても、サンプリングレートの問題は解決できません。
より良いメンタルモデル:ベースラインに合わせてサイジングし、段階的に近づく
解決策は実は2つの別々の仕事に分かれており、名前を付けると理解しやすくなります。サイジング(適正な数字を選ぶこと)とラダリング(そこへ安全にたどり着くこと)です。それぞれの考え方を2つ変えましょう。
変更その1 — サイジング:恒常的なベースラインを基準にする。 これは数字を選ぶ仕事です。「適正なドル金額はいくらか」ではなく、対象支出のどれだけをカバーしたいかを、恒常的なベースライン——24時間稼働している部分——を基準に決め、ドル金額はそこから自然に導き出します。これにより、際限のない推測が、理屈で判断できるポリシーに変わります:
- 保守的(カバレッジ約65%)。 使用率を守り、柔軟性を確保します。意図的に一部の節約を諦めます。変動が大きい、または変化の速い使用量に適しています。
- バランス型(カバレッジ約80%)。 安定した本番workloadsの大半にとってのデフォルト。落ち込みへの十分なバッファを保ちつつ、意味のある節約が得られます。
- 積極的(カバレッジ約90%)。 最大の節約、最小のバッファ。ベースラインが本当に安定していて予測可能な場合にのみ適切です。
では、なぜ常に積極的を選ばないのか?カバレッジには収穫逓減があり、最後の一切れこそが危険だからです。使用量の底、つまり24時間365日稼働している部分はカバーするのが最も安全で、そこでの割引は実質的にタダで手に入るお金です。カバレッジを高く押し上げるほど、使用量の変動する上層部、つまりスパイク時にしか存在しない時間帯に対してコミットし始めます。この限界的な支出こそ最も消えやすい支出であり、約80%を超えて追加するカバレッジは、最も信頼性の低い節約しか生まないのに、過剰コミットメントリスクの大半を抱え込みます。正しい姿勢は「すべてをカバーする」ではありません。「安定した基盤は積極的に、変動する上層部は慎重にカバーする」です。
変更その2 — ラダリング:小さなステップで到達する。 これは別の仕事です。何をコミットするかではなく、どうやってそこに到達するか。1回の大きな購入ではなく、目標までの距離を、時間をかけた小さな段階的コミットメントの連続に分割します。ラダリングは、5つの力のうち複数を同時に解決します:
- 小さく頻繁なステップにより、単一の購入がピークに固定されることがなくなります。投資でドルコスト平均法を使うように、コミットメントを平均化しながら積み上げていくのです。
- 開始日がずれることで失効時期もずれ、更新時の急落がなくなります。プランが一度にではなく、少しずつロールオフしていくからです。
- 段階的にコミットすることで、使用量が軟化した瞬間に停止または減速でき、ロックされた契約の1年後に過剰コミットメントを発見する事態を避けられます。

ただし、この2つの仕事は分けて考えてください。ラダリングが管理するのはタイミング——購入の集中と失効の崖——であって、サイジングではありません。積極的すぎる目標を救うことはできないのです。間違った数字に向かってゆっくり階段を上っても、数週間遅れで過剰コミットに至るだけです。まずベースラインを正しく捉え、その後にラダリングで近づきましょう。
問題はここです。動くベースラインへのサイジング、毎週のカバレッジ確認、失効への調整、下降局面での一時停止は、正真正銘の継続的な仕事です。手作業でやれば、誰も担っていないパートタイムの役割になります。このギャップこそ、自動化が埋めるために作られたものです。
PerfectScale for Commitmentsによる自動化
PerfectScale for Commitmentsは、サイジング問題に対するDoiTの答えです。上記すべての継続版——サイジング、ラダリング、購入——を実行します。積極的な戦略のカバレッジと保守的な戦略の安全性を、誰もスプレッドシートに張り付くことなく手に入れられるのです。各課題にどう対応するかを見ていきましょう。
常に最新の推奨エンジン。 四半期ごとのスナップショットではなく、PerfectScale for Commitmentsは直近の使用量に対して分析を継続的に更新します。すでに他でカバーされている支出——既存のカバレッジや間もなく失効するプランなど——は意図的に除外するため、二重計上ではなく、真の新規ニーズをサイジングします。
カバレッジ目標そのものとしてのリスクプロファイル。 上述の保守的/バランス型/積極的というフレームは、選択可能なプロファイル(Conservative ≈ 65%、Balanced ≈ 80%、Max Savings ≈ 90%)として組み込まれています。姿勢を選べば、エンジンがそれを目標コミットメントに変換し、達成に向けて購入を調整します。デフォルトはBalancedです。ほとんどの本番workloadsにとって、それが正解だからです。
毎週実行されるラダリング——確定するのは次のステップだけ。 PerfectScale for Commitmentsは、目標を小さな週次ステップのスケジュールに変換します。重要なのは、コミットするのは常に次のステップだけだということ。ラダーの残りは予測にすぎず、計画は毎サイクル、最新の使用量に対して再計算されます。使用量が増えればラダーの傾斜は急になり、減れば緩やかになります。数週間前に描いた計画に縛られることは決してありません。
下降局面での購入を防ぐガード。 対象支出が前週比でしきい値を超えて下落した場合、PerfectScale for Commitmentsはそのサイクルの購入をスキップし、下降局面へのコミットを避けます。これは手動運用で過剰コミットに陥る最も一般的なパターンであり、それが自動的に処理されます。
自動更新——急落なし。 失効するプランは事前に検出され、独立したスケジュール購入として更新されるため、プランのロールオフ時にカバレッジが落ちません。更新は失効分に比例してサイジングされ、新たな当て推量に上乗せされることはありません。
購入後の無駄の監視。 サイジングは購入で終わりません。PerfectScale for Commitmentsは使用率を監視し、意味のある低下を検知して警告します。過剰コミットメントは、更新時に初めて気づく費目としてではなく、数日以内のアラートとして表面化します。
主導権はあなたに。 デフォルトでは、PerfectScale for Commitmentsは承認必須モードで動作します。各購入を準備し、実行前に確認を求めるため、人間の承認なしには何も起こりません。完全に手離れさせたいチームは、自律モード(近日提供予定)に切り替えられます。いずれの場合も、システムが決して超えないコミットメント上限を設定でき、いつでも一時停止と再開が可能です。承認済みのコミットメント水準を超えるステップは、素通りせず再承認をトリガーします。
自動購入はすべて、実行前に検証ゲートを通過する必要があります。選択した期間、支払いオプション、上限に一致し、許可された購入ウィンドウ内に収まらなければなりません。また、システム外で別のコミットメント購入がすでにキューにある間は実行されないため、誤った二重購入が積み重なることはありません。PerfectScale for Commitmentsが購入した各プランにはその旨のタグが付くため、インベントリには、どのコミットメントが自動化されたもので、どれが自身で購入したものかが常に正確に表示されます。購入が行われたとき、または承認が必要なときには、通知が届きます。
結果として、サイジングの意思決定は、ストレスの大きい四半期イベントではなく、継続的に維持されるポリシーになります。カバレッジの姿勢と上限を一度選べば、あとはシステムが毎週、標的を捉え、下落を避け、失効を安全に更新する作業を、完全な監査証跡付きで実行してくれます。
理想の運用とは:シンプルな意思決定フレームワーク
サイジングについて正しく考えるために自動化は不要です。しかし、毎週正しく行動するには必要です。状況ごとの姿勢の合わせ方は、次のとおりです:
| あなたの状況 | カバレッジの姿勢 | 自動化すべき? |
|---|---|---|
| 安定した予測可能なベースライン、成熟したworkload | 積極的(約90%) | はい。アップサイドは大きくリスクは低いですが、行き過ぎずに高カバレッジを維持し続けられるのは自動化だけです。 |
| 通常の週次変動がある安定した本番環境 | バランス型(約80%) | はい。ここがスイートスポットで、ラダリングが変動を平準化します。 |
| スパイクが多い、季節性がある、または急成長中の使用量 | 保守的(約65%)、ラダリングで | 強くおすすめします。標的の動きが最も速い領域であり、手動サイジングが最も古くなりやすい領域です。 |
| 移行中またはライトサイジング進行中 | 保守的、小さなステップ、まずライトサイジング | はい。縮小していくベースラインに段階的にコミットすること。一括購入は決して行わないでください。 |
| 誤った推測が安く済む、少額・横ばいの支出 | どれでも | 任意。まだ手間に見合わないかもしれません。 |
一貫した法則はこうです。使用量が動くほど、コミットするメリットは大きくなり(節約額が大きい)、手動でのサイジングは難しくなります(標的がじっとしていない)。この「高い価値 × 高い難度」の組み合わせこそ、自動化が真価を発揮する場所なのです。
TL;DR
- 「適正な」コミットメントは動く標的であり、固定された数字ではありません。 使用量は意図的に変化していくもの。サイジングプロセスも一緒に変化する必要があります。
- 恒常的なベースラインに対してコミットすること。 24時間稼働しているコンピューティングであり、平均的な週でもピークでもありません。上限付きのカバレッジポリシーとして表現しましょう。
- カバレッジと使用率は、互いにトレードオフの関係にある別々の指標です。 サイジングとは、「節約を取り逃がす」と「遊休コミットメントに支払う」の間のどこに座るかを選ぶことです。
- サイジングとラダリングは別の仕事です。 サイジングは適正な数字を選び、ラダリングは小さなステップでそこに到達して、タイミングリスクと失効の崖を減らします。ラダリングは、積極的すぎる目標を修正できません。
- ドル金額を推測するのではなくベースラインに向かってラダリングし、PerfectScale for Commitmentsのような自動化に週次の作業を任せましょう。継続的なサイジング、下落を考慮したラダリング、自動更新、無駄の監視、そしてあなたが管理する厳格なコミットメント上限が揃っています。
推測をやめる準備はできましたか?
四半期ごとに手作業でAWS Savings Plansをサイジングしているなら、ほぼ確実に、節約を取り逃がしているか、使わないコミットメントを抱えているか——たいていは請求書の別々の場所で、その両方が起きています。PerfectScale for Commitmentsは、それを一度設定すれば済むポリシーと、それを維持し続けるシステムに変えます。上限と承認の主導権は、あなたの手にあります。