G-gen の佐々木です。当記事では、Google Cloud (旧称 GCP) のサーバーレスコンテナサービスである Cloud Run の Startup CPU boost 機能について解説します。Startup CPU boost は、Cloud Run の弱点とも言える コールドスタート による影響を軽減することができる機能です。
前提知識
Cloud Run とは
Cloud Run はサーバーレスな環境でコンテナを実行できるサービスです。
Startup CPU boost は、Cloud Run のうち、HTTP リクエストをトリガーとしてコンテナアプリケーションを実行する Cloud Run services に関する機能となります。
Cloud Run services の詳細については以下の記事で解説しています。
Cloud Run におけるコールドスタートについて
Cloud Run の大きな特徴として、リクエストがないときには、アプリケーションの実行基盤であるコンテナインスタンスを 0 までスケールインするように設定することができます。
このように、コンテナインスタンスの最小数が 0 に設定されている場合、Cloud Run はリクエストを処理しているときに使用した CPU / Memory リソースのぶんだけ料金が発生するため、リクエストがないときには料金を節約することが可能です。
そのトレードオフとして、コンテナインスタンスの数が 0 になっているときにリクエストがあると、Cloud Run がコンテナインスタンスを起動するまでの数秒間だけ、リクエストの処理にレイテンシが発生してしまいます(コールドスタート)。
これを回避するために、最小インスタンス数を 1 以上にすることで、常に 1 台以上のインスタンスを起動した状態でリクエストを待ち受けることはできますが、その場合、Cloud Run の料金はコンテナインスタンスに割り当てた CPU / Memory のぶんだけ常に発生するようになります。
ここまで説明した Cloud Run の CPU / Memory に関する課金方式をまとめると以下のようになります。
最小インスタンス数 | CPU / Memory の課金方式 |
---|---|
0 | リクエストを処理している時間だけ課金 |
1 以上 | 起動しているインスタンスのぶんは常に課金 |
つまり、最小インスタンス数を増やしてコールドスタートを回避しようとすると、Cloud Run がもつサーバーレスの強みが損なわれてしまうことになります。
また、最小インスタンス数が 1 以上に設定されていても、リクエスト数が急激に増加した場合、コンテナインスタンスのスケールアウトがリクエスト数の増加に間に合わないと、新しく起動されるコンテナインスタンスでは同様にコールドスタートが発生するため、根本的な解決にはなりません。
Startup CPU boost とは
Startup CPU boost は、Cloud Run services におけるコンテナインスタンスの 起動中に追加の CPU を割り当てる ことで、インスタンス数が 0 のときにリクエストがあった場合や、インスタンスがスケールアウトする場合に、コールドスタートによるレイテンシを軽減する ことができる機能です。
起動時に追加で割り当てることができる CPU 数は、コンテナインスタンスに設定した CPU 数の上限値に依存しています。
設定した CPU 上限 | ブースト時の CPU 数 |
---|---|
0-1 | 2 |
2 | 4 |
4 | 8 |
6 | 8 |
8 | 8(ブーストされない) |
料金
Startup CPU boost の料金は、ブースト時間中に使われた CPU 数で計算されます。
たとえば、ブーストを有効にした CPU 数 2 のコンテナインスタンスの起動時間が 10 秒の場合、起動中の 10 秒間だけ CPU 数 4 のときの料金が発生します。
ユースケース
Startup CPU boost ではコールドスタートによるレイテンシの軽減が見込めるものの、コンテナインスタンス起動中は追加の CPU 利用料が発生する点に注意が必要です。コールドスタートのレイテンシを許容できるアプリケーションであれば、料金の節約のためにブーストを使用しないほうが無難です。
ブーストはレスポンス速度が求められるアプリケーションにおいて有用であり、最小インスタンス数を 1 以上にする前に、まずはブーストを有効化してパフォーマンス要件が満たせるか検討してみるのがよいでしょう。
設定方法
Startup CPU boost は Cloud Run services のサービス作成時、もしくは更新時に有効化 / 無効化することができます。
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2024に選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805