確約利用割引(Compute Engine)を解説。AWSとの違いも確認

記事タイトルとURLをコピーする

G-gen の杉村です。 Google Cloud(旧称 GCP)の仮想サーバーサービスである Google Compute Engine(GCE)等には、確約利用割引(Committed use discounts)という割引の仕組みがあります。本記事では確約利用割引の仕組みを分かりやすく解説します。また、Amazon Web Services(AWS)の類似制度である Reserved Instance や Savings Plans との違いについても言及します。

確約利用割引の基本

確約利用割引とは

確約利用割引とは、一定の利用を Google にコミット(確約)することと引き換えに、通常よりも割引された料金で Google Cloud リソースを利用できる割引プランのことです。英語で Committed Use Discounts と表記されるため、CUD と略称されることもあります。

ポイントをまとめると、以下の通りです。

  • 1年間または3年間 の利用を確約することで割引を得られる
  • 前払いはなく、支払いは毎月
  • Google Compute Engine や Cloud SQL、Google Kubernetes Engine で利用できる
    • ただしそれぞれの確約利用割引の間で融通はできない(別々で購入する必要がある)

当記事では、Compute Engine の CUD について解説します。Compute Engine の CUD は、2種類存在します。

1つ目は、リソースベースのコミットメントです。一定の Compute Engine リソースを1年間または3年間使用することの確約と引き換えに、最大57%の割引料金が適用されます。リソースベースのコミットメントは、プロジェクト単位で購入します。

2つ目は、Flexible CUDです。別名として、費用ベースのコミットメントとも呼ばれます。Flexible CUD はリソースベースのコミットメントとは異なり、「いくら金額を使うか」をコミットすることで、最大46%の割引を受けることができます。Flexible CUD は、その名の通りリージョンやマシンシリーズに縛られない柔軟性があります。Flexible CUD は、請求先アカウント単位で購入します。

料金

確約利用割引の料金は、公式ページに記載があります。

確約利用割引の料金はオンデマンド料金(通常料金)やプリエンプティブル料金(「売れ残りインスタンス」の安売り料金)とともに併記されています。また公式の料金計算ツールである「Google Cloud's pricing calculator」でも算出することができます。

確約利用割引を購入すると、月単位で料金の支払いが発生します。AWS の Reserved Instance や Savings Plans とは異なり、Google Cloud の確約利用割引には前払いはありません

金額の例

e2-standard-2(vCPU 2 cores、8 GB RAM) でリソースベースのコミットメントを購入する場合を例に取ります。

このマシンタイプのオンデマンド(通常料金)の月額は、東京リージョンでは $62.75372 / 月です(2024年9月現在。ストレージ料金は計算に入れていません)。

1年コミットメントの場合、これが $33.8876872 となり、約37%オフになります。

2種類の確約利用割引

リソースベースのコミットメント

仕組み

2種類ある確約利用割引のうちの1つ目は、リソースベースのコミットメントです。vCPU、メモリ、GPU、ディスクなどに対してそれぞれ確約利用割引を購入できます。リソースベースのコミットメントは、プロジェクト単位で購入し、そのプロジェクトの中で適用されます(後述しますが、別のプロジェクトに共有することもできます)。

なお購入は「コミットメント(commitment)」を「作成する(create)」と表現することもあります。

コミットメントの作成はコンソールや CLI、 API 経由で可能です。コンソールの場合は「Compute Engine コンソール>確約利用割引」から購入します。

以下の例では Google Cloud コンソールで「東京リージョンE2タイプvCPU を4コアRAM を 8 GB 購入する。期間は1年間のコミット。」といった指定の仕方をしています。

リソースベースのコミットメントの購入画面

購入・適用方法

コンソールの場合は「Compute Engine コンソール>確約利用割引」から購入します。

購入時には「利用するリソースの量・期間の確約」を指定します。購入すると、リージョン内に存在しているそのスペックを持ついずれかの VM に、自動的に割引が適用されます。

そのため、当初に割引対象として想定していた VM の設定を変更して、別のインスタンスタイプに変えたとしても、同じタイプのインスタンスが他に存在していれば、自動的にそちらに割引が適用されます。

また、確約利用割引では「カスタムマシンタイプ」と「事前定義のマシンタイプ」は区別されません。

購入方法の例として、公式ドキュメントの記述を引用します。

例として 8 コアのコミットメントを購入し、その月に 24 コアを実行した場合、8 コア分のみ確約利用割引が適用されます。
残りの 16 コアは標準料金 (確約利用でない料金) で課金されます。

8コアの確約を購入。実際使ったのは24コア

このように、購入したコア数を超える分については、自動的に標準料金で請求されるようになります。

逆に、購入したコミットメントに対しては、たとえ使用していなくても毎月請求があります。8コアのコミットメントを購入したとして、実際には Compute Engine を4コア分しか使っていなくても、必ず8コア分が請求されます。

無駄になるパターン

Flexible CUD

仕組み

2種類目の Flexible CUD(フレキシブル CUD)は費用ベースのコミットメントとも呼ばれます。Flexible CUD は、請求先アカウント単位で購入し、同じ請求先アカウントを共有するプロジェクト間で共有されます。

「1年または3年の長期利用をコミットして割引を享受する」「前払いなしで毎月支払い」という点はリソースベースのコミットメントと同様です。しかし Flexible CUD の場合は、以下の特徴があります。

  • vCPU 数やメモリ量ではなく、費用ベース(いくら分、利用するか)でコミットする
  • 費用をコミットしたら、リージョン、プロジェクト、マシンシリーズに関係なく適用される
  • 1年コミットメントは28%割引、3年コミットメントは46%割引される

例で説明します。Flexible CUD を以下の条件で購入したとします。

  • オンデマンド費用 $100 / 時間でコミット
  • 3年コミットメント

3年コミットでは 46% の割引が適用されます。毎時の vCPU/Memory の利用料金のうち、通常料金で $100 消費した分までが、$54 の支払いで済みます。

ある時刻の利用が $100 を超えなかった場合でも、最低 $54 の支払いが発生します。逆に $100 を超えて $150 使った場合、$100 までが CUD でカバーされ $54 になり、残りの $50 は定価で支払うことになります。

なお、残った $50 は「継続利用割引」の対象にはなります。継続利用割引は、自動的に適用される Compute Engine の割引の仕組みです。以下の記事も参照してください。

blog.g-gen.co.jp

購入・適用方法

Flexible CUD は請求先アカウント単位で購入します。コンソールでは「お支払い>確約利用割引」の画面から購入することができます。

同じ請求先アカウント内であればリージョン、プロジェクト、マシンシリーズに関係なく適用されます。

ただし、Flexible CUD を適用できるマシンタイプは以下のみです。

  • General purpose : C3、C3D、C4、E2、N1、N2、N2D、N4
  • Compute-optimized : C2、C2D
  • Storage-optimized : Z3

なお上記のリストは2024年9月現在のものです。最新の対応リストは以下をご参照ください。

Flexible CUD がどのリソースに適用されるかはユーザー側で選択できず、自動で適用されます。自動適用のロジックは以下の通りです。

  1. まずリソースベースの CUD(通常の CUD)が各リソースに適用される
  2. 残りのリソースに、Flexible CUD が適用される
  3. 残りのリソースに継続利用割引が適用される

GKE や Cloud Run への適用

Flexible CUD は、2024年7月のアップデートにより、Google Kubernetes Engine(GKE)の Autopilot モードや Cloud Run(CPU always allocated の Cloud Run services と Cloud Run Jobs)にも適用されるようになりました。

GKE Standard はインフラとして Compute Engine を使っているため、従来から Compute Engine の CUD で割引の適用が可能でしたが、このアップデートにより GKE Autopilot も Compute Engine の Flexible CUD でカバーされるようになります。これに伴い、もともと存在していた GKE Autopilot 用の CUD は廃止になります。

詳細は以下の公式ドキュメントをご参照ください。

どんなときに購入すべきか

購入すべきとき

確約利用割引は「最低限必要なリソース量が、長期に渡ってある程度予測できるシステム」において購入すべきです。

例えば「基本的に24時間稼働であり、利用者数が概ね決まっていて、稼働開始から3ヶ月程度経過してワークロードが安定化した社内システム」などが最も分かりやすいでしょう。

購入すべきではないとき

逆に、以下のようなケースでは購入すべきではありません

  1. 立ち上げたばかりのビジネスであり先行きが不明な場合
  2. 稼働したばかりのシステムであり本番利用の負荷の様子を見たい場合
  3. 平日昼間しか稼働させない開発用 VM など特定時間だけ起動する VM の場合

確約利用割引は1年または3年の利用を確約する必要があり、途中で解約や変更はできません

例 1. は、ビジネスが確約した期間より短いスパンで撤退になったり、縮小になる可能性があるケースです。購入した確約利用割引が無駄になってしまうかもしれません。

例 2. は、撤退は考えられないまでも、新設/移行からカットオーバーしたばかりで本番利用して間もないケースです。もしかしたら思っていたよりも小さいインスタンスタイプで十分かもしれません。本番稼働開始から 3 〜 6 ヶ月程度は様子見の期間を設けるのが定石です。

例 3. は、こまめに停止・起動したほうが安くなるパターンです。確約利用割引を購入した場合の費用と、こまめに停止した場合の費用を比べて、どちらが安くなるかを正しく見定めましょう。公式の料金計算ツールや料金ページを見ることで、自分で計算できます。

また一般的には、3年間の確約の購入には慎重になるべきです。3年が経つと、より安価で高性能なマシンタイプが発表される可能性がありますし、ワークロード(利用のボリュームや性質)が変化する可能性も高くなるからです。

コミットメントの更新

コミットメントは1年または3年で作成しますが、期限が切れると割引が終了し、その日からは通常料金での請求となります。

再度手動で購入することもできますが、リソースベースのコミットメントでは、コミットメントの自動更新機能を利用することもできます。

コミットメントの自動更新を設定すると、更新後のコミットメントの期間は、元のコミットメントと同じになります。

自動更新をオンにすると、自動更新をキャンセルしない限り、コミットメントの終了日に自動的に更新されます。なおキャンセルは、更新日の午後12時(太平洋標準時間 = PST)までに行う必要があります。

ゾーンリソースの予約(reservation)

確約利用割引を購入したとしても、これはキャパシティが必ず確保されることを意味しません。まれではありますが、Google 側のコンピュートリソースが物理的に足りない場合、必要なときに VM を起動したり、ストレージを追加したりできないことがあります。このような状態をキャパシティ不足と言います。

確約利用割引とは別の概念として、ゾーンリソースの予約(reservation of zonal resources)を行うことで、予めキャパシティを予約することができます。予約時は、ゾーンやマシンタイプなどを指定します。

リソースの予約を行うと、その分のリソースを利用できることが確定しますが、予約しただけで実際には使っていなくても、料金が発生します。リソースの予約は、確約利用割引と組み合わせることで、キャパシティを確保しつつ割引料金の適用が得られます。

特定の VM に関して言えば、VM を常時起動したままにしておけば原則的にリソースの予約は必要ありませんが、何かの機会に VM を一時的に停止したときに、再び起動する際にキャパシティ不足の状態であり、起動できないという可能性はゼロではありません。

常時起動は確約利用割引の割引を最大限活かせる使い方であるため、必ずしも予約は必要ありません。しかしながら、GPU やローカル SSD の場合、確約利用割引の購入時にリソース予約が必須という仕様になっています。GPU とローカル SSD の確約利用割引の購入の際は、同時にリソース予約も作成する必要があります。

また、将来の予約リクエスト(future reservation requests)によって、最長で1年先までの予約を予めリクエストできます。リクエストが Google Cloud によって審査され、承認されると、将来の特定日付以降に、指定した容量が確保されます。多数の VM を移行する際や、新規システムの開発スケジュールに備える際などに利用できます。

確約利用割引の応用

推奨の確認

Google Cloud コンソールの「お支払い > 費用の最適化 > CUD 分析」などから、どれくらいの確約利用割引を購入するべきか、などの推奨事項を見ることができます。

これは Google Cloud のサービスである Recommender API により、機械学習等を用いて生成された推奨事項です。参考にしたうえで、購入の判断に活用しましょう。

プロジェクト間で確約利用割引を共有する

リソースベースのコミットメントの場合

リソースベースのコミットメントはプロジェクト単位の購入であるものの、明示的に指定することで同じ請求先アカウントを共有する複数のプロジェクト間で、購入した確約利用割引を共有できます。

請求先アカウントについては、以下の記事も参照してください。

blog.g-gen.co.jp

これにより、例えば大規模に Google Cloud を利用している会社等では、組織として確約利用割引を購入しておき、利用者の意識しないところで割引を適用し費用の全体最適を図ることができます。Flexible CUD でも同様のことが簡単に実現できますが、割引率はリソースベースのほうが大きくなります。

またアトリビューションという仕組みで、確約利用割引がどのプロジェクトに割り当てられるかを制御することができます。

デフォルトでは 比例アトリビューション モードとなっており、各プロジェクトで消費された対象リソースの合計使用量に応じた割合で、確約利用割引がプロジェクトに配分されます。

一方の 優先アトリビューション では、明示的に割当の優先順位を指定できます。

Flexible CUD の場合

Flexible CUD においては同じ請求先アカウント内でコミットメントが共有・分配されます。

そのため「プロジェクト間で共有する」ことはそもそも考える必要がありません。

コミットメントの結合・分割

リソースベースのコミットメントは購入後に結合・分割が可能です。

コミットメントを結合するメリットは、複数のコミットメントを結合することで期限切れになる期間を調整することができる点です。結合されたコミットメント群のうち最も遅い有効期限が、結合後の有効期限になります。

ただし結合するコミットメント同士は、同じプロジェクト・リージョン・期限(1 or 3 years)・マシンタイプ等は同等である必要があります。

コミットメントを分割するメリットも同様に、終了期限を管理しやすくなる点です。大きなコミットメントを分割し、一部は期限が来たら終了させ残りは自動更新させる、といったことができます。

注意点

確約の変更やキャンセルはできない

確約利用割引は一度購入すると、変更やキャンセルはできません。購入時には「購入間違い」「不必要な分まで購入してしまう」などに十分注意する必要があります。

後から足りなくなった分については追加購入が可能ですが、減らしたりキャンセルすることはできない点に、十分注意です。

なお、2023年2月のアップデートで1年コミットを3年コミットに [アップグレードできる ようになりました。コミット期間を伸ばすことでより深い割引を得ることができます。

確約利用割引の適用範囲

リソースベースの確約利用割引はリージョン単位での購入となります。そのためリージョンをまたいでリソースを利用しても、割引が適用されない点に注意が必要です。

一方の Flexible CUD はプロジェクト、リージョン、マシンシリーズをまたいで適用されます。

割り当て(クォータ)の確認

Google Cloud には割り当て(クォータ)という概念があります。

プロジェクトごとやリージョンごとに、使用可能なリソースの最大値が決まっており、誤って大量消費してしまうことを防いでいます。

確約利用割引でもリージョンごとに購入可能な確約利用割引の割り当て (クォータ) が決まっています。コンソールの「割り当て」画面等から、上限緩和をすることが可能です。

常時起動していないインスタンスへは適用されない場合がある

VM を月の中で長期間停止していたり、あるいは1日の中で頻繁に起動・停止しているような場合、そのインスタンスには確約利用割引が適用されない場合があります。確約利用割引は常時起動している VM を対象として想定しています。公式ドキュメントでは以下のように表現されています。

コミットメントはバースト シナリオ用にスタックすることはできません。たとえば、ある月に 10 コア分を購入した後、その月の半分の期間で 20 コアを稼働させた場合、使用量が半分になったという理由だけでは、20 コア全体に対するコミットメントは適用されません。

確約利用割引が適用できないケース

リソースベースのコミットメント

インスタンスタイプの制限としては、f1-micro および g1-small マシンタイプ (N1 共有コアマシン) はリソースベースの確約利用割引の対象になりません。

また、Spot VM やプリエンプティブルインスタンス、VM にアタッチした拡張メモリにも適用されません。

さらに、確約利用割引はバックエンドで Compute Engine を使う Google Kubernetes Engine、Dataproc、Cloud Composer 1 の VM には適用されますが、一方で App Engine、Dataflow、Cloud Composer 2 には適用されません。

Flexible CUD

対象となるマシンタイプは以下のみであり、それ以外には適用されません。

  • General purpose : C3、C3D、C4、E2、N1、N2、N2D、N4
  • Compute-optimized : C2、C2D
  • Storage-optimized : Z3

なお上記のリストは2024年9月現在のものです。最新の対応リストは以下をご参照ください。

AWS との違い

Amazon Web Services(AWS)にも Reserved InstanceSavings Plans といった、類似の割引プランが存在しています。
それぞれ、仮想サーバ等コンピューティングリソースの利用を 1 年または 3 年でコミットし「全額前払い / 一部前払い / 前払いなし」 のいずれかから選択して割引料金の適用を得られるものです。

Reserved Instance と Savings Plans の違いは、サーバーワークス社の以下のブログで非常に分かりやすく解説されています。

blog.serverworks.co.jp

AWS の Reserved Instance / Savings Plans は、 Google Cloud の確約利用割引とよく似た制度ですが、以下のような違いがあります。

  1. 前払いオプション (全額前払い / 一部前払い / 前払いなし) があること
  2. (Savings Plans)インスタンスファミリー(Google Cloud でいうマシンシリーズ)をまたいで柔軟に適用される
  3. (Reserved Instance)購入した Reserved Instance を Marketplace で売却できる

その他にも Reserved Instance ではアベイラビリティゾーン指定の購入オプションがある、など細かい違いは多数あります。

最も大きな違いは、AWS には前払いオプションが存在し、前払い額が大きいほど割引額が大きくなるという点です。

Google Cloud の確約利用割引では前払いオプションがなく、月額での支払いとなるので、この点が大きな違いだと言えます。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。