Azure Functions の概要
Azure Functions は、記述するコードと管理するインフラストラクチャを減らし、コストを節約できるサーバーレス ソリューションです。 クラウド インフラストラクチャによって、アプリケーションの実行を維持するために必要な最新のリソースがすべて提供されるので、サーバーのデプロイや管理について心配する必要はありません。
重大なイベントの連続に対応するためのシステムを構築することがよくあります。 Web API を構築する場合でも、データベースの変更に対応する場合でも、IoT データ ストリームを処理する場合でも、さらにはメッセージ キューを管理する場合でも、あらゆるアプリケーションには、これらのイベントが発生したときにコードを実行する方法が必要です。
Azure Functions では、コードの実行を開始する方法である トリガーと、入力データと出力データのコーディングを簡略化する 方法であるバインドがサポートされています。 Azure には他にも統合および自動化サービスがあり、いずれも統合の問題を解決し、ビジネス プロセスを自動化するために使用できます。 これらはすべて、入力、アクション、条件、および出力を定義できます。
Azure Functions と Azure Logic Apps の比較
Functions と Logic Apps はいずれもサーバーレス ワークロードを可能にする Azure サービスです。 Azure Functions はサーバーレスのコンピューティング サービスであり、Azure Logic Apps はサーバーレスのワークフロー統合プラットフォームです。 どちらも複雑な オーケストレーションを作成できます。 オーケストレーションは、Logic Apps において複雑なタスクを遂行するために実行される、アクションと呼ばれる関数またはステップの集まりです。
Azure Functions の場合は、コードを記述し、 Durable Functions 拡張機能を使用してオーケストレーションを開発します。 Logic Apps では、GUI を使用するか構成ファイルを編集することによってオーケストレーションを作成します。
Functions と Logic Apps の主な違いを次の表に示します。
| トピック | Azure Functions | Logic Apps |
|---|---|---|
| 発達 | コード優先 (命令型) | デザイナー第一 (宣言型) |
| 接続 | ビルトインのバインド (約 10 種類) およびカスタム バインド (コードを記述) | コネクタの豊富なコレクション、Enterprise Integration Pack (B2B のシナリオ向け)、カスタム コネクタの構築 |
| アクション | 個々のアクティビティは Azure 関数 (アクティビティ関数のコードを記述する) | 既製のアクションの豊富なコレクション |
| モニタリング | Azure Application Insights | Azure portal、Azure Monitor ログ |
| 管理 | REST API、Visual Studio | Azure portal、REST API、PowerShell、Visual Studio |
| 実行コンテキスト | Azure、またはローカルで実行されます | Azure、ローカル、またはオンプレミスで実行されます |
Functions と WebJobs の比較
Azure Functions と同様、Azure App Service WebJobs と WebJobs SDK は開発者向けに設計されたコード第一の統合サービスです。 どちらも Azure App Service の上に構築されたものであり、ソース管理の統合、認証、Application Insights との統合による監視などの機能をサポートします。
Azure Functions は WebJobs SDK 上に構築されているので、同じイベント トリガの多くと他の Azure サービスへの接続を共有します。 以下に、Azure Functions を使用するか WebJobs と WebJobs SDK を使用するかの選択において考慮すべき事柄をいくつか示します。
| 要因 | Functions | Webjobs SDK での Webjobs |
|---|---|---|
| 自動スケーリングを使用したサーバーレス アプリ モデル | はい | いいえ |
| ブラウザーでの開発とテスト | はい | いいえ |
| 従量課金制の価格 | はい | いいえ |
| Logic Apps との統合 | はい | いいえ |
| イベントをトリガーする | タイマー Azure Storage キューと BLOB Azure Service Bus のキューとトピック Azure Cosmos DB Azure Event Hubs HTTP/WebHook (GitHub Slack) Azure Event Grid |
タイマー Azure Storage キューと BLOB Azure Service Bus のキューとトピック Azure Cosmos DB Azure Event Hubs ファイル システム |
Azure Functions は、Azure App Service WebJobs よりも開発者の生産性を向上させます。 また、プログラミング言語、開発環境、Azure サービスの統合、および価格に関して、より多くのオプションが提供されます。 ほとんどの場合、それが最適な選択肢になるでしょう。