Microsoftは最近、Azure Functionsを提供するFunction as a Service(FaaS)がNode.js 14と.NET 5をサポートすることを発表した。開発者は最新の長期サポート(LTS)バージョンのNode.jsと最新バージョンの.NETを活用したファンクションアプリケーションを開発およびデプロイできるようになる。
両方のランタイムの同時リリースにより、Microsoft Faas製品がさらに進化する。開発者は次のメリットを享受できる。
- Node.js 14では、NULL合体演算子およびオプショナルチェイニング演算子、国際化および診断レポートAPI、ECMAScriptモジュールなど、より多くの機能が提供される
- .NET 5は、Azure Functionsホストランタイムとは別のワーカープロセスで.NETファンクションアプリを実行する新しい分離プロセスモデルを導入している
.NET 5リリースは、別のプロセスで.NETを実行するMicrosoftの最初のイテレーションである。そのリリースにより、開発者はアプリケーションの起動とそれが消費する依存関係を完全に制御できる。ほとんどのAzure Functionsトリガーと分離モデルとのバインドがサポートされているが、Durable Functionsとリッチタイプはサポートされていない。Microsoft MVPでXpiritの主任AzureコンサルタントであるMarc Duiker氏は、InfoQに次のように語っている。
.NET向けAzure Functionsインプロセスモデルは特殊な状況下にあります。他のサポートされているすべての言語が既に分離されたプロセスで実行されているためです。インプロセスモデルは、祝福であると同時に呪いでもあると思っています。私のような多くの.NET開発者にとって、この新しいサーバーレステクノロジーを試して、タスクをより安価でよりスケーラブルな代替手段に移行するための迅速な方法であることが証明されました。ただし、ファンクションコードはランタイムと同じプロセスで実行する必要があるため、互換性のない依存関係が必要な場合や、プロセスをより細かく制御する必要がある場合(その場合サーバーレスのままにしますか?)には、ファンクションエクスペリエンスが煩わしくなることがあります。
また、彼は次のように述べた。
私は強く型付けされたバインディングをいくつか見逃すと思います。しかし、起動とすべての依存関係をより細かく制御できるというアイデアは魅力的です。.NETベースのファンクションの記述方法がより柔軟になるためです。
Microsoftは、競合他社のAWSとGoogleを追随している。どちらも最近、Node.js 14をサポートするLamdbaランタイムとFunctionランタイムのバージョンをリリースしている。.NETに関しては、LamdbaとGoogle FunctionsはC#などの.NET言語をサポートしている。Microsoft自体も、Tech Communityブログ投稿でAzure Functionsにおける.NETの将来を示した。同社は、将来のLTSおよび非LTSの.NETバージョンの初期サポートを提供する予定である。
出典: https://techcommunity.microsoft.com/t5/apps-on-azure/net-on-azure-functions-roadmap/ba-p/2197916
将来のロードマップに関して、Duiker氏はInfoQに次のように語った。
発表で最も重要なことは、Azure Functionsロードマップです。重要な.NETバージョンとインプロセスから分離プロセスへの移行に関する大まかなタイムラインを示しています。この透明性を歓迎します。そして、より多くの製品チームがこの例に習うことを願っています。私にとって、Durable Functionsの互換性に対する可視性は、私自身が多用するために不可欠です。
最後に、開発者は、ファンクションについて.NET5で始めるためのより多くのガイダンスと詳細を閲覧できます。そこには、コマンドラインインターフェイスまたはIDEのVisual CodeまたはVisual Studioを使ってMicrosoftのドキュメントページからアクセスできます。