米Amazon Web Servicesは、Pythonおよび.NET関数向けのAWS Lambda SnapStartの一般提供を、11月18日(現地時間)に開始した。
Lambda SnapStartは、1回限りの初期化コードまたはLambda関数が最初に呼び出されたときのみ実行されるコードの、スナップショットされたメモリとディスクの状態をキャッシュして、再利用することで機能している。Lambdaは、初期化された実行環境のメモリとディスクの状態の、Firecracker microVMスナップショットを取得するとともに、そのスナップショットを暗号化して低レイテンシなアクセスのためにキャッシュする。
関数バージョンをはじめて呼び出して、その後呼び出しがスケールアップしていく中で、Lambdaは最初から初期化されるのではなく、キャッシュされたスナップショットから新たな実行環境を再開して、起動レイテンシの改善を行う。Lambda SnapStartでは、AWS Lambdaを使用してPythonおよび.NETで、高度にスケーラブルで応答性の高いアプリケーションを簡単に構築できるようになる。
Python関数の場合、初期化コードからの起動レイテンシは数秒に達する場合がある。レイテンシが発生する可能性があるシナリオとしては、依存関係のロード(LangChain、Numpy、Pandas、DuckDBなど)や、フレームワークの使用(FlaskやDjangoなど)が含まれる。また、多くの関数はLambdaを使用して機械学習推論も実行し、初期化中に機械学習モデルをロードする必要がある。このプロセスには、使用するモデルのサイズに応じて数十秒かかる場合があるが、Lambda SnapStartを使用すれば起動レイテンシの1秒未満への低減が可能になる。
.NET関数の場合、.NET JITコンパイルに最大数秒かかるので、ほとんどのユースケースで恩恵を受けられる。Lambda関数の初期化に関連するレイテンシの変動は、長らくAWS Lambdaで.NETを使用する上での障壁だった。Lambda SnapStartによって、メモリとディスクの状態のスナップショットをキャッシュすることで、関数を迅速に再開できるため、ほとんどの.NET関数ではLambda SnapStartによってレイテンシの変動が大幅に改善される。
Pythonおよび.NET関数向けのAWS Lambda SnapStartは、米国東部(バージニア北部、オハイオ)、米国西部(オレゴン)、アジアパシフィック(シンガポール、シドニー、東京)、欧州(フランクフルト、アイルランド、ストックホルム)のAWSリージョンにて利用可能となっている。
Lambda SnapStartを有効にした状態で公開する関数バージョンごとにスナップショットをキャッシュするコストと、関数インスタンスがスナップショットから復元されるたびにかかるコストがあるため、Lambda SnapStartキャッシュコストを削減するには、未使用の関数バージョンを削除する必要がある。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です