ホームページ >Java >&#&チュートリアル >GraalVM ネイティブ イメージを使用したサーバーレス Lambda の最適化
AWS SES、Spring Boot、AWS Lambda を使用したスケーラブルなメール送信サービスの開発に続き、そのパフォーマンスの最適化に着手しました。焦点は、AWS Lambda 上の Java アプリケーションに固有のコールド スタート レイテンシとメモリ使用量に対処することでした。これを実現するために、私は Java アプリケーションをネイティブ実行可能ファイルにコンパイルするように設計されたテクノロジである GraalVM Native Image に注目しました。この記事では、この最適化の実装と結果について概要を説明します。
GraalVM ネイティブ イメージは、Java アプリケーションを事前に (AOT) コンパイルしてスタンドアロンの実行可能ファイルにします。そうすることで、実行時に JVM が必要なくなり、次のような結果が得られます。
コールド スタート時間の短縮: アプリケーションはほぼ瞬時に起動します。これはサーバーレス環境にとって重要な要素です。
メモリ使用量の削減: 不要なコンポーネントを削除することで、アプリケーションのフットプリントが軽量になります。
これらの利点により、GraalVM はサーバーレス アプリケーションのパフォーマンスを向上させるための理想的なソリューションとなります。
私は AWS の pet-store-native プロジェクトから始めました。このプロジェクトは、Spring Boot 3 アプリケーションを GraalVM ネイティブ イメージに変換するためのリファレンス実装を提供します。これは、ネイティブ イメージ機能を電子メール送信サービスに統合するための基盤として機能しました。
私の環境では ARM ベースのアーキテクチャを使用しているため、Dockerfile を変更する必要がありました。
ランタイム環境用のカスタム ブートストラップ ファイルの作成は、アプリケーションの適切な初期化と起動を保証するために不可欠です。このファイルは、Lambda 関数のエントリ ポイントを定義し、ランタイム環境を初期化します。また、アプリケーションパラメータを柔軟に設定できるため、AWS Lambda とのシームレスな統合が可能になります。
また、GraalVM Maven プラグインで HTTP プロトコルのサポートを有効にし、API Gateway イベントを処理するために Spring Boot 用の AWS Java コンテナを統合しました。これらの構成により、アプリケーションは HTTP リクエストとレスポンスをネイティブ イメージ形式で効率的に処理できるようになりました。
AWS サーバーレス アプリケーション モデル (SAM) を使用して、ネイティブ イメージを Lambda 関数としてデプロイしました。主なカスタマイズ内容:
GraalVM ネイティブ イメージへの移行により、大幅な改善がもたらされました。
コールド スタート時間: JVM の初期化を排除することで短縮されました。
メモリ使用量: ネイティブ実行可能ファイルのコンパクトな性質により、最小限に抑えられます。
パフォーマンスのスケーリング: 応答時間が短縮され、同時リクエストの処理が改善されました。
ネイティブ画像
スプリングブート 3
さらに、API ゲートウェイの統合により、アクセスと使用に対する堅牢な制御が提供され、サービスが安全でスケーラブルなエンドポイントとして機能できるようになりました。
この実装を通じて、GraalVM、Spring Boot、AWS Lambda 間の相互作用についてより深く理解できました。このプロセスでは、次の重要性が強調されました:
このプロジェクトは、サーバーレス Java アプリケーションの強力な最適化ツールとしての GraalVM Native Image の可能性を強化し、運用環境でのパフォーマンスの向上とコスト削減のための魅力的な道筋を提供します。
このプロジェクトの GitHub リポジトリ
更新された AWS サーバーレス Java コンテナによる Java アプリケーションの再プラットフォーム化
クイック スタート ガイド: Spring Boot 3
GraalVM ネイティブ イメージ: より高速、よりスマート、よりスリム
AOT へ: Java アプリケーション向け GraalVM の包括的なガイド by Alina Yurenko | SpringIO
ネイティブへ: GraalVM を使用した高速かつ軽量の Spring Boot アプリケーションの構築 (Alina Yurenko 著)
以上がGraalVM ネイティブ イメージを使用したサーバーレス Lambda の最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。