Google Cloud FunctionsやCloud Runのコールドスタートを高速化する「startup CPU boost」登場

Google Cloudは、Cloud FunctionsやCloud Runにおけるコールドスタートで時間がかかる起動時間を短縮する「startup CPU boost」を発表しました

fig

Cloud RunやCloud Functionsなどの、いわゆるサーバレス基盤により提供されるサービスでは、まったくインスタンスが存在しない状態から、リクエストの発生によりインスタンスを起動する、「コールドスタート」が発生する場面がしばしばあります。

サーバレスであってもあらかじめ最小のインスタンス数を指定しておき、リクエストがない状態でも最小インスタンスでリクエストを待ち構えていれば、リクエストがあったときに瞬時にインスタンスの処理を開始させることは可能です。

この状態をウォームスタートと一般に呼びますが、ウォームスタートは迅速なレスポンスの一方で待ち時間にもインスタンスを起動しておくため、そのコンピュータリソースの消費による一定のコストが発生します。

一方、コールドスタートではリクエストが発生していないときにはインスタンスをゼロにしておくため、リクエスト待ちのコストをゼロに抑えることができます。しかし、リクエストが来たタイミングでまずインスタンスを起動する必要があるため、リクエストから処理開始までのレスポンスタイムが大きく遅くなるという欠点があります。

startup CPU boostは、このコールドスタートの欠点を改善できるサービスです。

fig

Google Cloudによると、特に起動に時間がかかるJavaアプリケーションでの効果は高く、最大でコールドスタートのレスポンスタイムを半分に減らせたとのことです。またNode.jsアプリケーションでもレスポンスタイムを30%改善したと説明されています。

startup CPU Boostの仕組みは説明されていませんが、起動時のメモリイメージを保存して高速にロードさせる、などの技術が使われているのではないかと想像します。

startup CPU boostは現時点でプレビュー機能として提供されており、Cloud Runでは管理画面からオンにすることで利用可能。Cloud Functionsではデフォルトでオンになっているとのことです。