AWS Lambda SnapStart で Java の起動高速化できるって本当ですか? #javado
by
Kihara, Takuya
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
AWS Lambda SnapStart で Java の起動高速化 できるって本当ですか? JavaDoでしょう#21 ハイブリット開催!Javaもそれ以 外も幅広く聞きたい・話したい! 2023/01/27 木原卓也 / @tacck 1 JavaDoでしょう#21 / #javado
Slide 2
Slide 2 text
JavaDoでしょう#21 / #javado 2 木原 卓也 Kihara, Takuya / tacck 生活協同組合コープさっぽろ ゆるWeb勉強会@札幌 AWS Community Builder デジタル推進本部システム部 主催 Amplify Japan User Group 運営メンバー Q2 2021, 2022 / Category: Front-end Web and Mobile 好きなフィギュアスケートの技 スプレッド・イーグル
Slide 3
Slide 3 text
AWS Lambda で Java を使いたい 3 JavaDoでしょう#21 / #javado
Slide 4
Slide 4 text
AWS Lambda で Java を使いたい でも、起動が遅いよね。。。 4 JavaDoでしょう#21 / #javado
Slide 5
Slide 5 text
そんな常識を打ち破る 新機能が追加されました!! 5 JavaDoでしょう#21 / #javado
Slide 6
Slide 6 text
AWS Lambda SnapStart • re:Invent 2022 で発表 (2022年11月29日) • Lambda のランタイムで Java 11 を選んだ場合に、 コールドスタートを劇的に早くする仕組み。 6 JavaDoでしょう#21 / #javado
Slide 7
Slide 7 text
AWS Lambda Lifecycle • ライフサイクルは三つの状態に大別 • INIT : 初期化関係 (マイクロコンテナ起動、ラインタイム起動、関数初期化) • INVOKE: 関数実行 • SHUTDOWN: マイクロコンテナの終了 7 JavaDoでしょう#21 / #javado https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html#runtimes-lifecycle
Slide 8
Slide 8 text
Lambda 起動における状態 • 関数の実行には二つの状態があり、実行されるライフサイクルの起点 が異なる。 • Cold Start • INIT から実行(コンテナが新規に作成される) • Warm Start • INVOKE から実行(起動済みコンテナの流用) 8 JavaDoでしょう#21 / #javado https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html#runtimes-lifecycle Warm Start Cold Start
Slide 9
Slide 9 text
なぜ Java の起動は遅いと言われるか • ライフサイクルは三つの状態に大別 • INIT : 初期化関係 (マイクロコンテナ起動、ラインタイム起動、関数初期化) • INVOKE: 関数実行 • SHUTDOWN: マイクロコンテナの終了 • 関数初期化時に “JVMの起動” が必要 →ここに一定の時間が必要 • INIT 処理後のスナップショットを撮って、 それを使えば早くなるんじゃね? → Lambda SnapStart 9 JavaDoでしょう#21 / #javado
Slide 10
Slide 10 text
デモ 10 JavaDoでしょう#21 / #javado
Slide 11
Slide 11 text
比較 • 円周率を求める関数を使って、起動の重い処理を表現。 11 JavaDoでしょう#21 / #javado Lambda の設定 円周率関数を呼ぶ場所 Lambda の状態 起動 従来の Lambda 起動 INVOKE Cold Start 重い Warm Start 重い INIT Cold Start 重い Warm Start 軽い SnapStart で Lambda 起動 INVOKE Cold Start 重い Warm Start 重い INIT Cold Start 軽い Warm Start 軽い
Slide 12
Slide 12 text
AWS Lambda SnapStart で Java の起動高速化 できるって本当ですか? 12 JavaDoでしょう#21 / #javado
Slide 13
Slide 13 text
本当です! • Cold Start が重いから Lambda で Java はちょっと、、、 となっていたが、今後は選択肢として十分に選べる。 • 利用できるランタイムは、 Java 11 のみ。 (Java 8 は対象外) • 利用料は無料!! • INIT処理がスナップショット化されるので、 例えば実行ごとにユニークIDを生成したい、という場合 ユニークID生成処理は INVOKE に入れましょう。 13 JavaDoでしょう#21 / #javado
Slide 14
Slide 14 text
終 14 JavaDoでしょう#21 / #javado