【要約】AWS Lambdaをコンテナイメージで動かす際、SnapStartが利用可能になったよ [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
コンテナイメージを利用する開発者は、Lambdaのコールドスタートによる遅延に直面している。特に、コンテナイメージを用いた実行環境では、起動時のオーバーヘッドが無視できない。
- ・コンテナの起動に体感で約2秒を要する。
- ・リクエストスパイク時のスケーリングが遅れる。
- ・INITフェーズがレイテンシの要因となる。
- ・シビアな性能要件において課題となる。
// Approach
開発者はコンテナイメージのLambdaでSnapStartを有効化するために、以下の手順を実施する。コンテナイメージ特有の設定が必要となるため、手順の正確な理解が求められる。
- ・AWSコンソールでSnapStartを有効化する。
- ・Published Versionsを発行する。
- ・Dockerfileに
LABEL com.amazonaws.lambda.feature.snapstart="Allow"を追記する。 - ・これにより、カスタムイメージでもSnapStartが利用可能となる。
- ・INITフェーズがRESTOREフェーズに置き換わる。
// Result
筆者がSnapStartを適用した結果、初期化フェーズの所要時間が大幅に改善された。
- ・INITフェーズ(~1000ms)がRESTOREフェーズ(200~700ms)に変わる。
- ・平均で約500msの短縮が見込まれる。
- ・リクエストスパイク時の性能向上が期待できる。
- ・ただし、SnapStartは追加料金が発生する。
- ・費用対効果の検討が必要である。
Senior Engineer Insight
> コンテナでのSnapStart対応は、サーバーレスの弱点を補う進展だ。ただし、INITフェーズを完全にスキップするわけではない。RESTOREフェーズへの置換である点に注意が必要だ。追加コストが発生するため、レイテンシとコストのバランスを精査すべきである。実戦では、初期化処理を適切に設計し、機能を最大限に活用すべきだ。