Upgrade to Pro — share decks privately, control downloads, hide ads and more …

al2023のカスタムランタイム使ってみた

Sho
January 28, 2024

 al2023のカスタムランタイム使ってみた

Lambdaのal2 ランタイムからal2023への移行とJava11からJava21への移行の実践話

Sho

January 28, 2024
Tweet

More Decks by Sho

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前: 桑名 翔(クワナ ショウ) • 年齢: 27歳 •

    会社: エムオーテックス株式会社 • 趣味: スノーボード、ゲーム
  2. 前提 • native-imageについて ◦ native-imageは、GraalVMの機能の1つで、Javaアプリケーションをネイティ ブイメージにコンパイルするためのツール ◦ ネイティブイメージは、実行にJVMを必要とせず、起動時間が短く、メモリ 使用量が少ないという利点がある •

    al2023のカスタムランタイムについて ◦ 去年の11月に新しく出たal2023をベースイメージにしたlambdaのランタイム ◦ 自分でLambda Runtime Apiを呼び出してランタイム部分の実装もしないとい けない
  3. 前提 • native-imageについて ◦ native-imageは、GraalVMの機能の1つで、Javaアプリケーションをネイティ ブイメージにコンパイルするためのツール ◦ ネイティブイメージは、実行にJVMを必要とせず、起動時間が短く、メモリ 使用量が少ないという利点がある •

    al2023のカスタムランタイムについて ◦ 去年の11月に新しく出たal2023をベースイメージにしたlambdaのランタイム ◦ 自分でLambda Runtime Apiを呼び出してランタイム部分の実装もしないとい けない
  4. 概要 • 以下の変更を試した ◦ before: ▪ GraalVM: vm-22.3.3(java11) ▪ ランタイム:

    al2 ◦ after: ▪ GraalVM: jdk-21.0.2 ▪ ランタイム: al2023
  5. 嬉しいなと思った点 1. native-imageのコンポーネントをインストールする必要がなくなった ◦ シンプルに楽になって嬉しい 2. ほとんど変更なくビルドできた ◦ そもそも実装がシンプルなlambdaだったのもあるかもしれない 3.

    –strict-image-heapオプション ◦ 新しく追加されたオプションで、今回はビルドコマンドの変更が不要だったので恩恵を受け ることはなかったが、今後新しくイメージをビルドする際にはうまく使いたい ◦ jdk22からデフォルトになるらしい
  6. おまけ: ランタイム毎の初回の実行速度の違い init duration total JVM11 618.69 ms 14202.69 ms

    14821.38ms JVM21 461.43 ms 8371.08 ms 8832.5ms al2 327.13 ms 612.06 ms 939.19ms al2023 312.93 ms 640.32 ms 954 ms
  7. 参考情報 • GraalVM: ◦ https://www.oracle.com/jp/java/graalvm/what-is-graalvm/ • GraalVM JDK21: ◦ https://www.graalvm.org/release-notes/JDK_21/

    • native-image: ◦ https://docs.oracle.com/cd/F44923_01/enterprise/21/docs/reference-manual/native-image/#native- image • Lambda カスタムランタイム: ◦ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-custom.html • al2023: ◦ https://docs.aws.amazon.com/linux/