AWS Lambda、.NET 7の新機能であるネイティブコンパイラによる実行形式のバイナリに対応
今回は「AWS Lambda、.NET 7の新機能であるネイティブコンパイラによる実行形式のバイナリに対応」についてご紹介します。
関連ワード (初期化時間、搭載、説明等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Amazon Web Services(AWS)は、サーバレスコンピューティング基盤として提供している「AWS Lambda」で、.NET 7の新機能であるネイティブコンパイラによって生成される実行形式のバイナリファイルに対応したことを発表しました。
基本的に.NETアプリケーションは、C#などで書かれたソースコードがコンパイルによって中間言語に変換され、この中間言語が.NETのランタイムによって実行されます。Javaの実行がJavaVMによって行われるのに似ています。
この.NETのランタイムやJava VMには高性能なJIT(Jut-in-Time)コンパイラが搭載され、次々にネイティブバイナリを生成しながら実行することで、高速にアプリケーションを実行することが可能になっているわけです。
しかし、いかにJITコンパイラが優秀であったとしても、アプリケーションを実行しながらバイナリを生成するよりも、事前にコンパイルを行って実行可能なネイティブバイナリを生成し、それを実行する方が起動時間も短く実行速度も速くなります。この事前コンパイラをAOT(Ahead-of-Time)コンパイラと呼びます。JITコンパイラが普及する前は、コンパイラと言えばこのAOTコンパイラのことでした。
今月リリースされた.NET 7では、事前にソースコードをネイティブコードによってそのままターゲットとなるOS上で実行可能なバイナリに変換するAOT(Ahead-of-Time)コンパイラの機能が搭載されました。
参考:マイクロソフト「.NET 7」正式リリース。パフォーマンス改善、Linux対応向上、コンテナ生成、ネイティブコンパイラ搭載など新機能
AWS Lambdaでは小さな関数の実行を繰り返して連携させることでアプリケーションを構成するため、それぞれの関数のより高速な起動と実行が求められます。
今回の.NET 7のAOTコンパイラ対応は、こうしたAWS Lambdaの特性に合ったバイナリファイルの生成にぴったりだったわけです。そしてそれに呼応するように、AWS Lambdaが迅速にその対応を発表したことになります。
発表の中でAWSは以下のようにその効果を説明しています。
By using native AOT with AWS Lambda, you can enable faster application starts, resulting in improved end-user experience. You can also benefit from reduced costs through faster initialization times and lower memory consumption of native AOT applications on AWS Lambda.
ネイティブAOTコンパイラをAWS Lambdaで利用することで、より高速なアプリケーション起動が可能となり、ユーザー体験の向上につながります。また、AWS Lambda上におけるネイティブAOTアプリケーションの初期化時間の短縮やメモリ消費量の低減により、コスト削減のメリットも得られます。