クラウドとコンテナの基礎
サーバーレスの関数(FaaS)で、しばらく呼び出されていなかった関数の最初の呼び出しだけ、応答が数百ミリ秒から数秒遅くなることがある。この現象の説明として、正しいものはどれか。
- A最初の呼び出しの結果がキャッシュされ、2回目以降は関数のコードが実行されずに、保存した結果だけが返されるため
- B関数を実行する環境を新しく用意し、言語の実行環境の起動や初期化の処理を行う時間がかかるため(コールドスタート)
- C最初の呼び出しでは、関数のコードが利用者の端末に送られ、端末の上でコンパイルされてから実行されるため
答えと解説を見る
正解:B. 関数を実行する環境を新しく用意し、言語の実行環境の起動や初期化の処理を行う時間がかかるため(コールドスタート)
サーバーレスの関数では、事業者が実行環境(コンテナや軽量の仮想マシンなど)を必要に応じて用意し、しばらく使われないと片付けます。片付けられた後の最初の呼び出しでは、環境の用意、言語の実行環境の起動、関数の初期化の処理が必要になり、その分だけ応答が遅くなります。続けて呼び出されると、用意された環境が再利用されるので速くなります(ウォームスタート)。対策として、初期化の処理や読み込むライブラリを軽くする、あらかじめ一定数の環境を用意しておく設定を使う、などがあります。
- A. 関数の結果が自動でキャッシュされることはなく、呼び出しのたびにコードが実行されます。
- B. 正しい。実行環境の用意と初期化の時間が、最初の呼び出しに加わります。
- C. 関数はクラウドの側の実行環境で動きます。利用者の端末に送られて実行されるわけではありません。