Michaelです。
今回は、Microsoft Ignite 2018でGAが発表されたAzure Functions 2.0の変更点とリソースのデプロイについてご紹介します。
Azure Functions 2.0の変更点
Azure Functions 2.0では、1.0から多くの変更が加えられています。
言語とランタイムバージョン
Azure Functions 1.0では、1つのFunction Appで複数の言語の関数を実行することができました。
Azure Functions 2.0では、1つのFunction Appで対応する言語が1つに限定され、言語に合わせたホストの最適化によるパフォーマンス向上が図られています。
また、対応する言語とランタイムバージョンも変更されています。対応言語とバージョンは以下のようになります。
言語 | Functions 1.0 | Functions 2.0 |
C# | GA (.NET Framework 4.7) | GA (.NET Core 2) |
JavaScript | GA (Node 6) | GA (Node 8、10) |
F# | GA (.NET Framework 4.7) | GA (.NET Core 2) |
Java | × | プレビュー (Java 8) |
Python | 試験段階 | Linuxホストでプレビュー (Python 3.6) |
TypeScript | 試験段階 | JavaScript へのトランスパイリングでサポート |
PHP | 試験段階 | × |
バッチ (.cmd、.bat) | 試験段階 | × |
Bash | 試験段階 | × |
PowerShell | 試験段階 | × |
トリガーとバインド
Azure Functions 2.0では、HTTP トリガーとタイマートリガーを除いて、関数で使用するトリガーとバインドを拡張機能としてインストールするように変更されています。これに伴って、関数の function.json やプロパティにいくつかの変更が生じています。
開発/実行環境
Azure Functions 2.0のランタイムは .NET Core 2 で実行されるようになり、macOSやLinuxなど、.NET Core でサポートされるすべてのプラットフォームで実行できるようになりました。Azure Functionsだけでなく、PC、オンプレミス、エッジデバイスといった様々なデバイス上で開発、実行ができるようになっています。
ホスティングプランとSLA
従来、App Serviceプランのみ99.95%のSLAとなっていましたが、新たに従量課金プランでも99.95%のSLAが適用されるようになりました。
また、App Serviceプランのみでしか利用できなかったLinuxホストが従量課金プランでも利用できるようになりました。
Durable Functions
関数のオーケストレーションが可能なDurable FunctionsがGAになりました。
1.0から2.0への移行の注意点
Azure Functions 2.0では大幅な変更が加えられているため、1.0から2.0への移行は、2.0のFunctions Appを新規作成して、手動で関数コードを移植する必要があります。
この時、ランタイムバージョンやトリガー、バインドなど2.0で変更された箇所に関しては、ランタイムバージョンやAPIの互換性に合わせてコードを書き直す必要があります。
リソースの作成
Azureポータルでは、Azure Functions 2.0のリソースを作成できるようになっています。
リソースを作成する場合、「+リソースの作成」、もしくはApp Service画面の「+追加」から「Function App」を検索します。
表示されるペインのテキストボックスに必要事項を入力していきます。
項目の中にAzure Functions 1.0ではなかった「ランタイムスタック」が追加されており、Function Appで使用する言語を選択できるようになっています。
すべて入力したら、「作成」をクリックしてFunction Appを作成します。
作成できたFunction Appを開いて、関数を新規作成するとこれまでとは異なる画面が表示されます。
「JavaScript用のAzure Functions – 作業の開始」とあるようにFunction AppがJavaScript専用に作成されていることがわかります。
まとめ
Azure Functions 2.0では、言語やバインドの扱いなど多くの点で変更が行われており、1.0から2.0への移行には注意が必要です。しかし、変更に伴って最適化が進んでおり、2.0に移行することで関数のパフォーマンス向上が期待できるため、既存のFunction Appも早い段階で2.0に移行していきたいものです。
次回からは、変更になった点を中心にAzure Functions 2.0を検証していきます。