要約

  • AWS Savings Plansは、1年または3年の時間当たり金額コミットメントと引き換えに、対象となるコンピューティング利用へ低い料金を適用する。AWSは、容量予約を提供せず、期間中に解約できないと明記している。
  • EC2 On-Demand Capacity Reservationは、特定のアベイラビリティーゾーンで属性が一致する容量を確保する。利用中でも空きでも、On-Demand相当の料金が発生する。
  • Savings PlansまたはリージョンRIの割引をCapacity Reservationへ適用できる。価格と容量を別々に重ねられるが、アプリケーションの健全性やデータ復旧までは保証しない。
  • コミットメント利用率、割引カバレッジ、予約枠の占有、起動結果、サービス可用性は別々の証跡である。

「No Upfront」でも時計は止まらない

AWSの Savings Plansの説明は、インスタンス台数ではなく、1時間当たりのコンピューティング利用額から始まる。顧客は1年または3年の金額を約束し、All Upfront、Partial Upfront、No Upfrontから支払い方法を選ぶ。対象利用には契約期間を通じて低い料金が適用される。

No Upfrontは出口ではない。初期支払いがないだけで、AWSはSavings Plansを期間中に解約できないとしている。需要が落ちても、時間当たりコミットメントは残る。

Compute Savings PlansはEC2のファミリー、サイズ、OS、tenancy、リージョンをまたぎ、FargateやLambdaの対象利用にも適用できる。EC2 Instance Savings Plansは、リージョン内の一つのインスタンスファミリーへ範囲を狭める。公表される最大割引はそれぞれOn-Demand比で66%、72%だが、実現額は利用の形、期間、支払いと適用先で変わる。

この商品の確認票は利用率レポートである。AWSの例では、1時間10ドルのコミットメントに対し、Savings Plans料金で9.80ドルの利用があれば98%となる。ほぼ全額が対象利用に吸収されたことは分かる。しかし、あるゾーンで必要なインスタンスが起動できるかは分からない。

使わない枠にも意味と費用がある

On-Demand Capacity Reservationは、特定のアベイラビリティーゾーンで、インスタンスタイプ、プラットフォーム、tenancyが一致する容量を押さえる。稼働中で未使用の予約枠も、アカウントのOn-Demand上限に数えられる。

料金は枠の価値をそのまま表す。予約がプロビジョニングされている間、AWSはOn-Demand相当額を請求する。20枠のうち15インスタンスを動かせば、15台の実行分と5つの未使用枠を支払う。利用枠に二重料金はないが、空き枠は無料にならない。

空き枠を直ちに無駄と呼ぶのも早い。大規模イベント、規制対応、災害復旧では、平時に使わないこと自体が設計どおりの場合がある。評価すべきは、どの失敗を避ける権利なのか、定期的に起動を試したか、別の復旧手段より安いかである。

価格契約は容量契約へ重ねられる。AWSは、Savings PlansやリージョンRIの適用可能な割引をCapacity Reservationに使えるとしている。割引だけ、容量だけ、両方という三つの購入状態が成立する。どれも、それだけでアプリケーション稼働を意味しない。

枠を取るには属性が一致しなければならない

予約枠は、存在するだけでは使われない。起動条件では、インスタンスタイプ、プラットフォーム、アベイラビリティーゾーン、tenancyの一致、active状態、利用可能数が必要となる。

openの予約なら、一致する通常の起動が自動的に入ることがある。一致する予約がなければ、設定によっては通常のOn-Demand容量へ進む。targetedの予約を指定した場合、対象に十分な枠がなければ起動が失敗し得る。起動テンプレートのゾーンやプラットフォームが違えば、予約は空いたまま、別の要求が通常容量を探すという逆転が起きる。

Savings Plansだけでは、この起動順位は変わらない。AWSはInsufficientInstanceCapacityを、要求を満たすOn-Demand容量が現時点で不足している状態と説明する。価格契約が正しく機能していても、容量権がなければ新しい起動は失敗し得る。

一方、予約枠でインスタンスが立っても、利用者のサービスが復旧したとは限らない。ヘルスチェック、データの鮮度、ネットワーク、外部依存、フェイルオーバーは別の試験である。Capacity Reservationは必要条件を一つ満たすだけだ。

Reserved Instanceは範囲で読む

AWSのリージョンRIとゾーンRIは、商品名だけで判断できない典型例である。リージョンRIは容量を予約しない。選択リージョン内の複数ゾーンへ割引を適用でき、条件次第でサイズ柔軟性も持つ。ゾーンRIは指定ゾーンの容量を予約する代わりに、ゾーンと対応するサイズの柔軟性を失う。

しかもAWSは、scopeによってRI価格は変わらないとしている。同じ価格と名称でも、容量権は異なる。調達台帳には、割引率だけでなくregionかzoneかを残さなければならない。

比較軸は三つになる。金額コミットメントを何年固定するか、割引がどこまで移動できるか、容量権がどの場所と属性に限定されるか。柔軟なワークロードにゾーン固定を買えば空きが増えやすい。固定場所で必ず起動したい復旧系に価格だけを買えば、必要な時刻の容量が残らない。

割引は購入理由とは別の利用へ動く

AWSはSavings Plansの恩恵を自動適用する。まずReserved Instances、次にEC2 Instance Savings Plans、最後にCompute Savings Plansが使われる。対象利用の中では節約率が高いものからコミットメントを当て、残りはOn-Demand料金になる。

一括請求では、所有アカウントの利用が先で、共有が有効なら他のアカウントも恩恵を受ける。あるサービスを根拠に買ったプランを、後に別サービスが吸収することもある。ポートフォリオの利用率は高くても、当初のサービス需要が維持された証拠にはならない。

カバレッジは、対象利用額のうちどれだけがSavings Plansで覆われたかを見る。利用率は買ったコミットメント側、カバレッジは発生した利用側の指標である。どちらも容量の空きやサービス状態を示さない。

情報源