Compute Engine の費用を節約するためのさらなる 5 つの方法
Maciej Strzelczyk
Developer Programs Engineer
※この投稿は米国時間 2024 年 6 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。
前回の投稿では、Google Compute Engine を使用する際に費用を節約する 5 つのヒントをご紹介しました。それで終わりではありません。さらに 5 つの節約方法をご紹介します。
1. 外部 IP を手放す
gcloud または Google Cloud コンソールで Compute インスタンスを作成すると、デフォルトで、エフェメラル外部 IP アドレスが設定されます。簡単なプロトタイプをセットアップする場合や、ダイナミック DNS を使用してサービスの仮想マシン(VM)インスタンスを 1 つホストする場合などは、この外部 IP アドレスが必要です。しかし、VM をロードバランサとともに使用する場合は、それでも外部 IP が必要なのかどうかを検討する価値があります。クライアントはロードバランサのパブリック IP アドレスを使用してサービスと通信するからです。一方、サードパーティのサービスと通信する場合などは、インターネットに接続できると非常に便利です。外部 IP を持たない VM は、そのままではインターネットに接続できません。
これについては、Cloud NAT が Public NAT 構成によってこの問題を解決します。Cloud NAT が行うのは、多くのインターネット サービス プロバイダが顧客に対して行っているのと同じことです。ネットワーク アドレス変換を提供して、1 つの外部 IP アドレスの後ろに複数のマシンを隠します。外側からは、すべてのリクエストがこの 1 つの IP から送信されているように見えますが、実際には、複数の異なるマシンがリクエストを行っています。ちなみに、これは Google Kubernetes Engine(GKE)でも機能します。
フリートに含まれる VM がほんの数台であれば、外部 IP を無効にしても毎月の請求書でさほどの違いは感じられないでしょう。しかし、節約額はフリートのサイズに比例して増加します。また、Cloud NAT を使用するとさらに 2 つのメリットがあります。セキュリティの向上(VM がインターネットに公開されない)と、プロジェクトの IP アドレス割り当てを消費しなくて済むことです。
2. マシンのオンとオフの切り替えを自動化する
cron(UNIX のジョブ スケジュール ユーティリティ)は、多数の自動化された、周期的バッチ処理システムの柱です。cron を使用すれば、手動でトリガーする手間をかけずに、一定のパターンに従ってアクションをスケジュールできます。cron を使用して構成された VM は、適切な時間まで待ってから、時間のかかるタスクを開始します。数時間、VM は非常に活発にこのタスクを処理しますが、ジョブが完了した後は何の処理も行わず、ただ cron ジョブが再度開始されるのを待ちます。つまり、VM が会社に価値を生み出しているのは 1 日のうちわずか数時間で、残りの時間はコストが発生しているということです。この「コストが発生している」部分をなくせたら、素晴らしいと思いませんか?実際、ある程度は実現できます。
VM では、vCPU、メモリ、ディスク、アクセラレータ(画像処理装置(GPU)と Tensor Processing Unit(TPU))、外部 IP といったリソースを消費するときに、コストが発生します。VM は電源がオンのときには、これらすべてのリソースを使用しますが、電源がオフであれば、発生するのはディスクのコストのみです(静的外部 IP を使用していない場合)。使用していないコンピュータの電源をオフにするのは(節電して地球環境を守るために)自然なことです。残念ながら、電源がオフになっているマシンでは cron ジョブを開始できません。ただし、代わりに cron のようなシステムを使用してマシンを起動できます。
どういうことでしょうか。プロジェクトで cron のようなスケジュールを作成して、自動的にマシンを起動できるということです。後は、マシンの起動時に自動的に開始するように cron ベースのプロセスを変更すれば、それで完了です。同じ機能(ナイトリー ビルド / 夜間処理)を実現しながら、必要のないときに VM を実行し続けて浪費することがなくなります。夜間処理が終了すると、マシンは自ら電源をオフにして、次回必要になるまでその状態で待機します。
3. Spot VM の使用を検討する
Spot VM は、大幅に費用を節約できるプリエンプティブル インスタンスの一種です(標準の VM よりも最大 90% 低価格です)。継続的に実行される通常の VM とは異なり、Spot VM は Google Cloud の予備容量で実行され、プリエンプションの対象となります。つまり、Google がリソースを取り戻す必要が生じると通知が届き、その 30 秒後にご使用の Spot VM が終了します。
だからと言って一切使用しないというのは早計で、Spot VM はバッチ処理やステートレス ワークロードなど、中断を許容できるワークロードには最適です。また通常の VM より大幅に料金が安いため、クラウド コンピューティングの費用を大きく節約できます。
Spot VM の最大の長所の一つが、通常の VM と同様に使用できることです。同じツールと API を使用して作成でき、同じオペレーティング システムとアプリケーションを実行できます。唯一の違いは、料金が安い(そして最小限の通知で無効にできる)ことです。マネージド インスタンス グループ(ステートレス)または GKE インスタンスの Spot VM への切り替えは、ほぼシームレスに行われます。これら 2 つのシステムでは、プリエンプトされたマシンが自動的に再作成されるからです。
4. 比較して最適なリージョンを見つける
Google Cloud でソフトウェアをホストすることには多数のメリットがありますが、その一つに、自社サービスを実行するマシンの物理的なロケーションを自由に選べることがあります。ロケーションを選ぶ際の決め手となるものには、地域の法律の遵守、機能の可用性、ユーザーベースへの近接性(とサービスのレイテンシ)といった、ビジネスに関わる要因があります。
料金もそのような要因の一つです。コンピューティング料金のページを見れば、プロダクトの費用がどれだけになるかをリージョン間で簡単に比較できます。レイテンシや主権が重要な要因ではない場合は、より費用対効果の高いリージョンを選ぶことが理にかなっています。料金の異なるリージョンが近くにある場合は特にそうです。お客様がこのような要因すべてのバランスを考慮して最適なリージョンを選べるよう、Google は Google Cloud リージョン選択ツールもご用意しています。
5. 自動の時間制限を導入する
VM のことを忘れてしまった場合に、費用を節約できる新機能があります。これは、制限時間を設けて、その時間が過ぎると VM を自動的にオフにするか、削除できる機能です。
現在はプレビュー版であるこの機能は、さまざまなシナリオで役立ちます。たとえば、次のような場合です。
-
長時間実行オペレーションがある場合。オペレーションが特定の時間数を超えて実行された場合、その時間を過ぎると自動的に VM を停止するように設定することで、浪費をなくせます。また、VM を実行したままにせず、後で確認してデバッグできます。
-
チームでテストを実施する必要がある場合。一定期間が過ぎると停止する一時 VM を設定すれば、VM を手動で終了することを誰かが覚えている必要がなくなります。
-
使用量が急激に増加する場合。限られた期間(クリスマス シーズンなど)にのみコンピューティング能力を増やす必要がある場合は、指定した日付に自動的に削除される VM を作成して、リソースを解放できます。
考えれば考えただけ、この機能の使い道が見つかるでしょう。常にこの機能を使用できるわけではありませんが、日常のインフラストラクチャ オペレーションを設定する際には、常に留意することをおすすめします。
まとめ
Google Cloud の費用を最適化するさまざまな方法を多数ご紹介しました。ディスクサイズのファインチューニングから確約利用割引の使用、Cloud NAT の活用、インスタンスのスケジュール、Spot VM の利用に至るまで、さまざまな費用の節約方法があります。
クラウドの費用を監視するのは、個人的な財布の中身を管理するのと同様です。1 円も無駄にはできません。これらの戦略をご検討のうえ、クラウドへの投資を最大限に活用してください。
皆様のプロジェクトが成功し、クラウドの費用を手頃に抑えられるよう、Google は皆様をサポートいたします。



