サーバーレス

新しい CPU 割り当てコントロールにより Cloud Run 上でさらに多様なワークロードを実行

Cloud Run.jpg

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

Google Cloud のサーバーレス コンテナ プラットフォームである Cloud Run には非常にきめ細かい従量課金制の価格設定が用意されており、アプリがリクエストまたはイベントを処理したときにのみ、CPU とメモリの料金が請求されるようになっています。デフォルトでは、Cloud Run はリクエスト処理以外には CPU を割り当てません。バックグラウンド処理が想定される種類のワークロードの場合、これが問題になる可能性があります。そこで本日、リクエスト処理以外の Cloud Run コンテナ インスタンスにも CPU を割り当てられる機能を紹介します。

cloud run container.jpg

この機能により、これまで Cloud Run では対応できなかった多くのユースケースに可能性が広がります。

  • 応答を返した後にバックグラウンド タスクとその他の非同期処理作業を実行する

  • バックグラウンド スレッドでの CPU アクセスが想定される可能性のある OpenTelemetry などのモニタリング エージェントを利用する

  • Go の Goroutine または Node.js async、Java スレッド、Kotlin コルーチンを使用する

  • 組み込みのスケジューリング / バックグラウンド機能を使用する Spring Boot アプリを動かす

  • Firestore の変更をリッスンしてメモリ内キャッシュを最新に保つ

CPU が常に割り当てられている場合でも、Cloud Run の自動スケーリングは引き続き有効であり、受信トラフィックの処理に必要ないコンテナ インスタンスは停止できます。リクエスト処理後 15 分を過ぎるとインスタンスのアイドル状態は解除されます(ただし、最小インスタンス数を使用してアクティブ状態が保持されている場合は除きます)。

Cloud Run の最小インスタンス数と組み合わせることで、CPU リソースにフルアクセスした状態で一定数のコンテナ インスタンスを稼働させ続けることも可能です。これらの機能を合わせると、Cloud Pub/Sub でのストリーミング pull の使用またはサーバーレス Kafka コンシューマ グループの実行など、新しいバックグラウンド処理ユースケースが有効になります。

「CPU 常時割り当て」を有効にすると、コンテナ開始時から停止時までコンテナ インスタンス使用期間全体に対して料金が請求されます。Cloud Run では、CPU が常時割り当てられている場合の料金が次のように変わりました。

  • リクエストごとの料金はありません

  • CPU は 25%、メモリは 20%、価格が引き下げられます

もちろん、Cloud Run の無料枠も引き続き適用され、確約利用割引によって 1 年間の確約で最大 17% の割引が可能です。

常時稼働 CPU を割り当てる方法

Google Cloud Console から既存の Cloud Run サービスを変更して CPU を常時割り当てることが可能です。

cpu allocation and pricing.jpg

コマンドラインからでも変更可能です。

  gcloud beta run services update SERVICE-NAME --no-cpu-throttling

この変更によって、運用負荷が小さいという特性を活かしながらさらに多様なワークロードを Cloud Run で実行できるようになれば幸いです。

Cloud Run の CPU 割り当てに関する詳細については、Google のドキュメント料金ページをご覧ください。Cloud Run に関する詳細については、スタートガイドをご覧ください。

-シニア プロダクト マネージャー Steren Giannini