GoogleCloud(GCP)のコスト最適化方法をご紹介
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
クリエーションラインは2023年度からクラウドサービスを提供するチーム「クラウドソリューションチーム」を発足致しました。
クラウドソリューションチームは、お客様に対してクラウドインフラの設計~構築~運用を幅広くカバーするクラウドエンジニアリングサービスを提供し、クラウド利用に関する様々な課題を解決するソリューションとサービスを提供させていただくチームです。
「クラウドソリューションチーム」については、今後ブログ等で詳細をご紹介させていただく予定です。
今回はクラウドソリューションメニューの一つでもあるコスト最適化についてGoogle Cloud(GCP)を例にしてご紹介させていただきます。
GCPとは
Google Cloud(GCP)は、Googleが提供するパブリッククラウドサービスです。
コンピューティング、ストレージ、データベース、ネットワーク、機械学習、AI、分析、モバイル、デベロッパーツール、管理ツールなど、幅広いサービスを提供しています。
しかし、Google Cloud(GCP)のサービスは従量課金制が採用されているため、闇雲に使っていると知らず知らずのうちに予算を超えてしまうことが考えられます。
クラウドソリューションチームでも現在GCPを利用した案件に参画させていただいておりますが、コスト最適化はお客様にとって非常に大きな関心事であると感じています。
そこで、Google Cloud(GCP)を運用する上で、コスト最適化に有効な方法をいくつかご紹介します。
1.予算アラートの設定
予算アラートとは、あらかじめ予算を設定し、実際の Google Cloud の費用が予算に近づいてきたら通知(アラート)を発行するという仕組みです。
GCPは従量課金型であるため、高額請求のリスクがつきものです。予算アラートを設定することで、高額請求を未然に防ぐことが可能になり、適切なコスト管理が実現できます。
設定方法
通知(アラート)を発行する構成要素としては「予算」と「しきい値」があります。予算は簡単に言うとひと月に使用できる金額の設定で、しきい値はアラート通知を出す条件です。
GCPコンソールからの設定方法は以下になります。
1.Google Cloud コンソールの [予算とアラート] ページにログイン
2.プロンプトで、予算を設定する Cloud 請求先アカウントを選択
3.[予算を作成] をクリック
4.[名前] フィールドに、予算の名前を入力
5.予算の [範囲] を設定し、[次へ] をクリック
6.予算の [金額] を設定し、[次へ] をクリック
7.予算の [アクション] を設定し、[完了] をクリック
8.[完了] をクリックして予算を保存
[例:予算10万円・50%,90%,100%に達したらアラート発行の設定画像]
例として、請求先アカウントに対して予算10万円、アラートを発行する条件を50%,90%,100%に設定した画面を載せています。この設定により想定外の請求が発生する事態を回避することができるはずです。
ただし、予算を設定しても Google Cloud の使用量/支出に対する上限は自動的には設定されません。費用を自動的に制御する 1 つの方法としては、予算通知を使用してプロジェクトの Cloud Billing をプログラムで無効にすることです。
また、費用の発生を防ぐために API 使用量の上限を設定する場合は、API 使用の上限設定をご覧ください。
2.VMの自動起動・停止設定を導入する
Google Cloud(GCP)では、VMインスタンス(Compute Engine)「インスタンススケジュール」機能を使ってVMインスタンスの起動・停止を自由にスケジューリングすることができます。
VMインスタンスは起動しているだけで課金が発生しています。そのため、起動したままだと使用していない業務時間外も常に課金が発生している状態なので、使わないときは停止するということが重要になります。
設定方法
インスタンススケジュール機能は、サービス エージェント(Compute Engine がプロジェクトでサービス作業を実行するための専用のアカウント)から実行されます。まずはサービス エージェントに実行のための必要な権限を付与します。
・必要な権限
compute.instances.start
compute.instances.stop
権限を付与した後、インスタンススケジュールの設定をします。
GCPコンソールからの設定方法は以下になります。
1.Google Cloud コンソールの [VM インスタンス] ページに移動
2.ページ上部にある [インスタンス スケジュール] タブをクリック
3.[スケジュールを作成] をクリックします。[スケジュールの作成] ペインが開く
4.[名前] を入力
5.[リージョン] プルダウン メニューで、このインスタンス スケジュールのロケーションを選択
6.インスタンス スケジュールが、接続された VM インスタンスの起動と停止を行う時間を定義する
7.[タイムゾーン] プルダウン メニューで、[起動時間] と [停止時間] のタイムゾーンを選択
8.[送信] をクリック
[例:対象のGCE3台が毎日朝8時に起動し、夜9時に停止するインスタンススケジュール]
例として、GCE3台を毎日朝8時に起動し、夜9時に停止するインスタンススケジュールに設定した画面を載せています。11時間停止状態になるので、設定を入れていない場合と比較し大幅なコスト削減が見込むことができます。
3.確約利用割引(CUD)を活用する
確約利用割引 (Committed use discounts)は、確約利用契約(コミットメントとも呼ばれます)の購入を条件に適用される割引のことです。
リソースの使用が長期(1年または3年)に予測可能である場合に最適ですが、コミットメント購入後はキャンセルや変更ができないといった点が注意です。また、割引率は期間が長いほど高くなっています。
確約利用契約ができるリソースは幅広く、リソースコストの最適化にはうってつけだと考えられます。
現時点では、確約利用割引は2種類(費用ベースまたはリソースベースの割引)存在します。
費用ベース
次の Google Cloud サービスで利用可能
Cloud Run,Cloud Spanner,Cloud SQL,Compute Engine,Google Cloud VMware Engine,Google Kubernetes Engine,Memorystore
プロダクトやサービスに最小限の使用量分の費用を支払うことのコミットメントと引き換えに、割引料金が適用。
リソースベース
次の Google Cloud サービスで利用
Compute Engine
特定のリージョンで最小限の Compute Engine リソースを使用することのコミットメントと引き換えに、割引料金が適用。
購入方法(Compute Engine のリソースベースの確約利用割引を購入する場合)
1.Google Cloud コンソールで [確約利用割引] ページに移動
2.[コミットメントを購入] をクリックして、新しいコミットメントを購入
3.コミットメントに名前を付ける
4.適用するリージョンを選択
5.コミットメント タイプを選択
6.[期間] で、コミットメントの期間(1 年または 3 年)を選択
7.[コア数] と [メモリ] に、購入するコア数とメモリ量をそれぞれ入力
8.購入条件を確認
9.[購入] ボタンをクリックして、コミットメントを購入
[例:N1 マシンタイプ リソースのコミットメントを購入]
例として、N1 マシンタイプ リソースGCEのコミットメントを購入した画面を載せています。マシンタイプや GPU など、ほとんどのリソースタイプに最大 57% の割引が適用されます。詳細についてはこちらをご覧ください。
4.BigQuery Reservation を導入する
BigQuery Reservationは 2023/07/05 で販売が終了の予定ですので、ご注意ください。今後はBigQuery Editionsが代替として用意されています。BigQuery Editionsについて今後ブログでご紹介する機会がありましたら解説します。
BigQuery Reservationとは
BigQuery Reservationは、前もってクエリ処理容量を購入し、一定期間にわたって支払うことでクエリ料金を定額にすることができる機能です。
料金モデルは次の 2 つがあり、それぞれ課金体系が異なります。
オンデマンド料金は各クエリによって処理されたバイト数に基づいて費用が決定するのに対し、容量ベースの料金は、事前にクエリ処理容量を購入します。
デフォルトではオンデマンド料金が採用されていますが、Reservationを使用することで容量ベースの料金に切り替えられ、割引された容量コミットメントを購入できます。
メリット
Reservationのメリットとしては以下が挙げられます。
- 予測可能性 : 容量ベースの料金は、費用が固定されるためコストの予算感が予測可能になります
- 柔軟性 : ワークロードに割り当てる専用の容量を選択するか、ワークロードの要件に基づいて BigQuery が自動的に容量をスケーリングするようにします。最低 1 秒単位で消費されるスロットの使用で課金されます。
- ワークロード管理 : 各ワークロードには、使用可能な BigQuery 計算リソースの指定されたプールがあります。それと同時に、ワークロードが指定されたスロットを一部しか使用していない場合、未使用のスロットは他のワークロード間で自動的に共有されます。
- 一元購入 : スロットをまとめて購入し、組織全体に割り当てることが可能
ただし、Reservationを導入したら確実に今までの費用より安くなるというわけではありません。オンデマンド料金と、容量ベースの料金どちらが安くなるかはクエリの使用状況によって異なります。
一般的には、定期的なクエリ発行がされている使い方などに向いていると考えられますが、Reservationを利用するにあたってはどちらが最適かを検討する必要があります。
BigQuery Reservationは販売が終了するため設定方法は記載しませんが、BigQuery Reservationに替わる機能のBigQuery Editionsのご利用を検討している方はぜひそちらを参考にしてみてください。
まとめ
本記事ではGCPで比較的容易に導入することができるコスト削減について簡単にご紹介しました。
クラウドサービスを運用していく上で、コスト管理は必要不可欠であると考えています。
クラウドベンダーが提供している仕組みは他にも様々あります。それらを活用することで、柔軟性のあるコストの最適化が実現できます。
本記事を参考にして、Google Cloud(GCP)のコスト最適化に取り組んでみてはいかがでしょうか。
クリエーションラインは、クラウドインフラの設計~構築~運用を幅広くカバーするクラウドエンジニアリングサービスを提供しています。導入を検討されている方はお気軽にお問い合わせください。
お問合せはこちらから。