Microsoftは先頃、同社のファンクション・アズ・ア・サービス(FaaS)製品であるAzure Functions 4.0の公開プレビュー版リリースを発表した。新たにリリースされたランタイムでは、.NET 6.0がサポートされる。
今年初めに同社が提供したNode.JS 4.0と.NET 5のサポートには、.NET関数アプリがAzure Functionホストランタイム外部の分離したワーカプロセス内で動作する分離プロセスモデルが新たに含まれていた。Azure Functions 4.0の公開プレビューリリースでは、以下の言語/ランタイムバージョンがサポートされる予定である。
- .NET 6.0 (インプロセスおよび分離プロセス)
- Node.js 14
- Python 3.7, 3.8, 3.9
- Java 8, 11
- PowerShell 7.0
- カスタムハンドラ
プレビュー版のリリースを伝えるMicrosoft Tech communityのブログ記事では、Azure FunctionsのシニアプログラムマネージャのAnthony Chu氏が次のように述べている。
Azure Functions 4.0は、分離プロセスプログラミングモデルを使用することで、.NET 6もサポートします。分離モデルでは、言語ワーカのスタートアップ構成を完全にコントロールすることが可能な他、依存性注入などの便利な機能やミドルウェアがサポートされています。現時点では、コマンドラインを使って.NET 6分離アプリの生成とデプロイを行うことができますが、Visual StdioやVisual Studio Codeでも近日中にサポートされる 予定です。
Microsoft Azure MVPのMark Heath氏も、Azure Functionsでの.NETの2つのプログラミングモデルについて、自身の最新のブログ記事に書いている。
"インプロセス"モデルは.NET Azure Functionの元々の実行方法で、それ自体も.NETで動作しているAzure Functionsランタイムが、対象関数を同じプロセスにロードする、というものです。一方で、Azure Functionsがサポートする他のすべての言語(JavaScriptやPythonなど)に関しては、別プロセスで動作する関数とAzure Functionsが通信する外部プロセス(out-of-process)モデルを使用します。
Azure Functions 4.0の一般向け(GA)リリースは、.NET 6.0のGAリリースと同じく今年11月に予定されている。
出典(スクリーンショット): https://www.youtube.com/watch?v=Mznk6Emdpu0
Microsoft Azure MVPのWill Velida氏が自身のブログ記事に、.NET Isolated Process Azure Functionsの開発について記している。
個人的に、.NET Isolated Functionsはとても面白いと思っています!.NETのバージョンケイデンスが長くなっているので、.NETのバージョンをAzure Functionsランタイムバージョンから切り離すことによって、最新機能を利用する場合のランタイムによる制限が課せられなり、はるかに高い柔軟性を提供することが可能になるのです。
現時点では、Azure Functions Core Tools 4.0プレビュー版をダウンロードした上で、公開済のドキュメントを活用してローカル環境で試すことが可能である。Microsoftはプレビュー期間中もAzure Functionsのホストや言語ワーカの改善を継続する予定だが、開発者はApp Service Announcementsを購読することで、非互換的な変更の通知やその際のマイグレーション方法を知ることができる。