ITmedia NEWS > 企業・業界動向 >

AWS Lambdaのコールドスタートを劇的に速くする「AWS Lambda SnapStart」発表 AWS re:Invent 2022

» 2022年11月30日 10時22分 公開
[新野淳一ITmedia]

この記事は新野淳一氏のブログ「Publickey」に掲載された「[速報]AWS Lambdaのコールドスタートを劇的に速くする「AWS Lambda SnapStart」発表。AWS re:Invent 2022」(2022年11月29日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。

 米Amazon Web Services(AWS)の年次イベント「AWS re:Invent 2022」が米ラスベガスで開幕しました。

 毎年恒例となった月曜日夜に行われるイベント最初の大型セッション「Monday Night Live」には、Peter DeSantis氏(AWS Utility Computing担当SVP)が登壇。

 AWSのインフラに関わる最新情報の1つとして、「AWS Lambda」のコールドスタートを劇的に速くする「AWS Lambda SnapStart」を発表しました

 AWS Lambda SnapStartは今日から追加費用なしで利用可能。

コールドスタートを劇的に速くする

 AWS Lambdaはいわゆるサーバレスコンピューティングの基盤を提供するサービスです。

 あらかじめAWS Lambdaに登録した関数が何らかのイベントをトリガーとして起動され、関数の終了とともにそのインスタンスも終了する、という仕組みを備えています。

 AWS Lambdaでは、起動した関数の内容がキャッシュされている状態で再度関数を起動する場合など「ウォームスタート」では迅速に関数が実行されますが、まっさらの状態で関数が起動される「コールドスタート」の場合には関数の起動時間がかかってしまうという課題がありました。

 DeSantis氏はコールドスタートのプロセスの中でもっとも時間がかかっているのが初期化だと説明します。

 「コールドスタートでは、マネージドランタイムとしてまず新しいMicroVMを起動する。すべての言語ランタイムがプリインストールされ初期化される。最適化されたFirecrackerではこれはすぐに終わる。

 次に顧客の関数をランタイム環境で実行するための変換が行われる。これにかかる時間は言語や関数の大きさによるが、コールドスタート全体からすれば非常に小さな割合でしかない。

 関数がロードされると初期化(Initialization)が行われる。これは実行する言語によって行われる非常に時間のかかる処理だ。Javaを例に挙げると3つの大きなパートに分かれる。JavaVMを起動し、クラスのコードをロードして圧縮を解き、初期化コードを実行する。これが時間のかかる処理の典型例だ」(DeSantis氏)

 しかし興味深いことに、この初期化が終わると同じ状態に落ち着くとDeSantis氏は指摘。「この初期化が終わった状態のスナップショットをとるとどうなるか、考えてみよう」(DeSantis氏)

 「初期化のプロセス全体を省略することができるようになるではないか」(DeSantis氏)

 DeSantis氏はこれによってコールドスタートが劇的に速くなると説明。これを利用した「AWS Lambda SnapStart」を発表しました

 AWS Lambda SnapStartは、コールドスタートにかかる時間を最大90%削減するとのことです。

 AWSはスナップショットをセーフにするために行ったランタイムやコモンライブラリなどへの変更を、各オープンソースコミュニティーにコントリビュートしたことも合わせて発表しました。

 AWS Lambda SnapStartを紹介したAWSのブログ 「New - Accelerate Your Lambda Functions with Lambda SnapStart」によると、JavaVMはAWSによるCorrettoを利用しているとのことです。AWS自身がJavaディストリビューションを提供していることが、ここで生かされたようですね。

 We are launching with support for Java functions that make use of the Corretto (java11) runtime, and expect to see Lambda SnapStart put to use right away for applications that make use of Spring Boot, Quarkus, Micronaut, and other Java frameworks.

 今回、Corretto(java11)ランタイムを利用するJava関数のサポートを開始します。これでSpring Boot、Quarkus、MicronautなどのJavaフレームワークを利用したアプリケーションで、すぐにLambda SnapStartが活用されることが期待されます。

Copyright © ITmedia, Inc. All Rights Reserved.