米Amazon Web Servicesは、イベント発生時のコマンド実行を可能にするAWS Lambdaにおいて、.NET 8ランタイムの提供を開始したことを、2月22日(現地時間)に発表した。
今回、提供が開始された.NET 8ランタイムによって、AWS Lambdaはマネージドランタイムとコンテナベースイメージの両方で.NET 8をサポートするようになり、APIの機能強化、ネイティブAhear of Time(AOT)サポートの改善、パフォーマンス向上といった.NET 8の恩恵を受けられる。
.NET 8ランタイムは、Amazon Linux 2023(AL2023)の最小コンテナイメージに基づいて構築されており、従来のAmazon Linux 2(AL2)ベースのランタイムよりも導入フットプリントが小さく、glibc 2.34、OpenSSL 3など共通ライブラリの更新バージョンを提供する。新イメージは、dnfとしてシンボリックリンクされたパッケージマネージャとしてmicrodnfを使用しており、以前のAL2ベースのイメージで使用されていたyumパッケージマネージャを置き換える。なお、Lambda関数をコンテナイメージとしてデプロイする場合、.NET 8ベースイメージにアップデートする際には、yumではなくdnfを使用するようDockerfileを更新する必要がある。
今回の、.NET 8ランタイム導入にあわせて、AWS Lambdaは.NET 8でのパフォーマンスを向上させるべく、ブループリントとテンプレートのデフォルトのメモリサイズを256MBから512MBに増加した。また、.NET 8アプリケーションでの独自の機能テストとパフォーマンステストの実行が可能になり、パフォーマンスプロファイリングにはAWS Compute OptimizerまたはAWS Lambda Power Tuningを使える。起動時における新しいLambdaランタイムの使用量は、既存のランタイムより少なくなるため、内部Lambdaサブシステム内のキャッシュ常駐性が低下し、コールドスタート時間が長くなる可能性がある。通常、コールドスタート時間は使用量が増加するにつれて数週間で改善されるので、パフォーマンスが安定するまでは他のLambdaランタイムとのパフォーマンス比較はあてにならないという。
ネイティブAOTは、すべての.NET関数に適しているわけではないものの、.NET 8ではトリミングのサポート強化によって、ASP.NET APIをより簡単に実行できるようになっている。トリミングサポートの改善で、実行時エラーの可能性を強調するビルド時のトリミング警告が排除され、ネイティブAOT関数がJITコンパイルされた関数のように動作する。なお、トリミングのサポートは、Lambdaランタイムライブラリ、AWS .NET SDK、.NET Lambda Annotations、および.NET 8自体に追加されている。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です