コンピューティング

Google Cloud の予測サービスによるインフラストラクチャの自動スケーリング

#compute

※この投稿は米国時間 2021 年 7 月 2 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud では、クラウドのメリットを最大限に活用できるのは、需要の変動に基づいてインフラストラクチャをスケールする際であると考えています。Compute Engine を使用することで、自動スケーリングを構成して、需要が低いときには費用を抑え、負荷のピーク時には容量を増やして対応することができます。

マネージド インスタンス グループ(MIG)を使用すると、オートスケーラーが負荷の増減に基づいて仮想マシン(VM)インスタンスを自動的に作成したり削除したりできます。ただし、アプリケーションの初期化に数分かかる場合は、負荷の増加に応じて VM を作成しても、アプリケーションの容量をすぐに増やせないことがあります。たとえば、負荷が大幅に大きくなった場合(ユーザーが最初に朝目覚めたときなど)、新しいインスタンスでアプリケーションを初期化している間に一部のユーザーが遅延を経験することがあります。

この問題の解決に有効なのが、需要の増加に備えて事前に VM を作成する方法です。そうすることで、アプリケーションの初期化に必要な十分な時間をあらかじめ確保することができます。ただし、これを行うためには今後の需要を把握していなくてはなりません。この将来的な需要の予測を実現したのが「予測自動スケーリング」です。

予測自動スケーリングのご紹介

予測自動スケーリングは、Google Cloud の機械学習機能を使用して必要な容量を予測します。これは需要の増加に先立って VM を作成し、アプリケーションの初期化にかかる時間を十分に確保します。

Figure 1.jpg
図 1. 自動スケーリングは需要の増加に応じて VM を作成するため、アプリケーションの初期化時にバッファを必要としません。予測自動スケーリングは需要に先駆けて VM を作成するため、アプリケーションの初期化や新しい負荷への対応に十分な時間をかけることができます。

仕組み

予測自動スケーリングは、インスタンス グループの CPU 使用率の履歴を使用して将来の負荷を予測し、目標の CPU 使用率を達成するために必要な VM 数を計算します。そして Google の機械学習が、各 MIG の繰り返しの負荷パターンに基づいて予測を調整します。

アプリケーションの初期化期間を構成することで、オートスケーラーが新しい VM を作成するまでの時間を指定できます。たとえば、アプリの初期化に 5 分かかる場合、オートスケーラーは予想される負荷の増加が発生する 5 分前に新しいインスタンスを作成できます。これにより、CPU 使用率を目標値内に抑え、需要が急増してもアプリケーションの応答性を維持できます。

多くのお客様が、1 日の時間帯や曜日によってそれぞれ異なる容量を必要としています。このような違いに対応するために、予測モデルは週単位および日単位でパターンを把握します。たとえば、いつも週末にアプリが必要とする容量が少ない場合、予測はそれを反映し、業務時間内に多くの容量を必要とする場合は、それに対応できるようにします。

予測自動スケーリングを試すべき理由

予測自動スケーリングは、予測される容量を継続的に適応させて今後の需要に最も一致できるようにします。オートスケーラーは 1 分間に予測を数回確認し、その予測に合わせて VM の作成や削除を行います。予測は最新の負荷の傾向に合わせて数分ごとに更新されるため、増加率が通常よりも高かったり低かったりする場合でも、それに合わせて予測が調整されます。この機能により、ピーク時の負荷に必要な容量を確保しつつ、需要が低下した際にはコストを抑えることができます。

予測自動スケーリングは現行のオートスケーラーと完全な互換性があるため、安心して使用を開始できます。オートスケーラーは、予測された CPU 負荷でもリアルタイムの CPU 負荷でも、いずれか高いほうに合わせて VM 数を計算します。これは他の自動スケーリング機能でも同様で、スケジュール、ロードバランサのリクエスト ターゲット、Cloud Monitoring の指標に基づいてスケールできます。オートスケーラーはすべての目標を達成するために必要な最大 VM 数を取得することで、構成全体に十分な容量を提供します。

開始方法

予測自動スケーリングは Google Cloud Console で有効にすることができます。[インスタンス グループ] ページから自動スケーリングを行う MIG を選択して、[グループを編集] をクリックします。予測自動スケーリングの構成を、[オフ] から [可用性重視で最適化] に変更します。

compute google console.jpg

予測自動スケーリングがアプリケーションに適しているかどうかの詳細を理解するには、リンクをクリックして予測自動スケーリングで可用性を最適化できるかどうかをご確認ください。現在の自動スケーリング構成と予測自動スケーリングを有効にした場合の、過去 7 日間の比較が表示されます。

instance group autoscaling.jpg

上の図の説明は次のとおりです。

  • 1 日あたりの平均 VM オーバーロード(分): VM が CPU 使用率の目標値を超えた頻度を示します。利用可能な容量を需要が超えると、過負荷が発生します。予測自動スケーリングを使用すると、予想される負荷が発生する前に VM を起動することで過負荷を軽減できます。

  • 1 日あたりの平均 VM 数: 費用のプロキシとして使用できます。これは、設定した目標値内に CPU 使用率を保つために必要な追加の VM 容量を示しています。以下で説明するように、最小インスタンス数と CPU 使用率を調整することで、コストを最適化できます。

構成の最適化

クールダウン期間に、アプリケーションの初期化にかかる時間(VM の起動時から負荷の処理に対応できるようになるまで)が反映されるようにします。予測自動スケーリングは、この値を使用して予測される負荷が発生する前に VM を起動します。クールダウン期間に 10 分(600 秒)を設定した場合、負荷の増加が予想される 10 分前に VM が起動します。

自動スケーリングの CPU 使用率の目標値とインスタンスの最小数を確認します。予測自動スケーリングでは、VM の起動に必要な時間を補うためのバッファが不要となります。CPU 使用率が 70% のときにアプリケーションが最適に動作する場合、予測自動スケーリングが通常の負荷が発生する前に VM を起動するため、目標値をそれほど低く設定する必要はありません。CPU 使用率が高く、インスタンスの最小数が低ければ、需要の増加に備えて容量を追加する必要がないため、コストを削減できます。

予測自動スケーリングを今すぐ試してみる

予測自動スケーリングは、すべての Google Cloud リージョンで一般提供されています。予測自動スケーリングの構成、シミュレーション、モニタリングの方法について詳しくは、ドキュメントをご参照ください。

-プロダクト マネージャー Pawel Wenda