Azure における統合と自動化の適切なサービスを選ぶ
この記事では、次の Microsoft クラウド サービスを比較します。
- Microsoft Power Automate (旧称 Microsoft Flow)
- Azure Logic Apps
- Azure Functions
- Azure App Service WebJobs
いずれも統合に関する問題を解決し、ビジネス プロセスの自動化を実現できるサービスです。 どのサービスでも入力、アクション、条件、出力を定義できます。 また、それぞれのサービスはスケジュールまたはトリガーを使って実行できます。 各サービスにはそれぞれ違った利点が存在します。この記事では、これらの違いについて説明します。
Note
Azure Functions とその他の Azure コンピューティング オプションとのより一般的な比較については、次の記事を参照してください。
Azure の Automation サービス オプションの概要と比較については、「Azure の Automation サービスを選ぶ」を参照してください。
Azure Logic Apps と Microsoft Power Automate の比較
これらのサービスはどちらも、自動化されたワークフローを構築して実行できる "デザイナー第一" の統合プラットフォームです。 どちらのプラットフォームも、さまざまなサービスとしてのソフトウェア (SaaS) およびエンタープライズ アプリケーションと統合されます。 どちらも同様のワークフロー デザイナーを提供しており、コネクタには一部重複があるものの、各プラットフォームには独自のコネクタも用意されています。
Power Automate を使用すると、ビジネス ユーザー、オフィスの従業員、市民開発者が、IT 部門や開発者と連携したり、コードを記述したりすることなく、シンプルな統合を構築できます。 一例として、SharePoint ドキュメント ライブラリの承認ワークフローが挙げられます。 Azure Logic Apps では、コードがほとんどまたはまったく不要なシナリオから、より高度かつコードフルで複雑なワークフローまで、さまざまな統合がサポートされています。 たとえば、B2B プロセスや、Azure DevOps とのエンタープライズ レベルの対話を必要とするシナリオなどがあります。 ビジネス ワークフローが、時間の経過とともに単純なものから完全なものへと発展する可能性もあります。
特定の統合に Azure Logic Apps と Power Automate のどちらを使用するかを判断するには、機能の比較表を参照してください。
Azure Functions と Azure Logic Apps の比較
これらの Azure サービスを使用すると、サーバーレス ワークロードを構築して実行できます。 Azure Functions がサーバーレスのコンピューティング サービスである一方、Azure Logic Apps はサーバーレスのワークフロー統合プラットフォームです。 どちらでも複雑な "オーケストレーション" を作成することができます。 オーケストレーションは、複雑なタスクを遂行するために実行できる関数 (Azure Logic Apps では "アクション" と呼ばれます) のコレクションです。 たとえば注文のバッチを処理するのであれば、多数の関数のインスタンスを並列に実行し、すべてのインスタンスの完了を待った後、その集計結果を計算する関数を実行することになるでしょう。
Azure Functions では、コードを記述したり Durable Functions 拡張機能を使用したりすることによって、オーケストレーションを開発します。 Azure Logic Apps の場合は、ビジュアル デザイナーを使用するか、Azure Resource Manager テンプレートを編集してオーケストレーションを作成します。
オーケストレーションを構築するときに、サービスをうまく組み合わせることができます。 たとえば、ロジック アプリ ワークフローから関数を呼び出したり、関数からロジック アプリ ワークフローを呼び出すことができます。 どのように個々のオーケストレーションを構築するかは、サービスの機能や個人の好みに基づいて選択します。 これらのサービスの主な違いをいくつか次の表に示します。
Durable Functions | Azure Logic Apps | |
---|---|---|
開発 | コード第一 (命令型) | デザイナー第一 (宣言型) |
接続 |
-
12 の組み込みバインドの種類 - カスタム バインドのためにコードを書きます |
-
トリガーとアクションを備えた 1,400 以上の事前構築済みコネクタ - B2B シナリオ向けの Enterprise Integration Pack - カスタム コネクタ |
アクション | 個々のアクティビティは Azure 関数 (アクティビティ関数のコードを記述する) | トリガーとアクションを備えた 1,400 以上の事前構築済みコネクタ |
Monitoring | Azure Application Insights |
-
Azure Portal - Azure Monitor Logs - Microsoft Defender for Cloud - Standard ワークフロー向け Azure Application Insights - Standard ワークフローの正常性チェック 詳細については、「Azure Logic Apps でワークフローを監視する」を参照してください。 |
管理 |
-
REST API - Visual Studio |
-
Azure Portal - Visual Studio Code - REST API - PowerShell - Azure CLI (Standard ワークフロー) - Azure CLI (従量課金ワークフロー) |
実行コンテキスト | ローカルまたはクラウドで実行できます | Azure、ローカルの Visual Studio Code、または部分的に接続された環境で実行できます。 詳細については、「Azure Logic Apps とは」を参照してください。 |
Functions と WebJobs の比較
Azure Functions と同様、Azure App Service WebJobs と WebJobs SDK は開発者向けに設計された "コード第一" の統合サービスです。 どちらも Azure App Service の上に構築されたものであり、ソース管理の統合、認証、Application Insights との統合による監視などの機能をサポートします。
WebJobs と WebJobs SDK
App Service の WebJobs 機能を使用すると、スクリプトやコードを App Service Web Apps のコンテキストで実行することができます。 WebJobs SDK は、WebJobs 向けに設計されたフレームワークです。Azure サービス内のイベントをきっかけにして実行するコードの作成が、このフレームワークによって単純化されます。 たとえば、Azure Storage に画像の BLOB が作成されたことをきっかけにして、サムネイル画像を作成することもできます。 WebJobs SDK は、.NET コンソール アプリケーションとして実行され、この .NET コンソール アプリケーションを WebJobs にデプロイすることができます。
WebJobs と WebJobs SDK は組み合わせて使ったときに最も効果的に機能しますが、WebJobs SDK なしで WebJobs を使うことも、その逆も可能です。 WebJobs は、App Service のサンドボックス内で動作するあらゆるプログラムまたはスクリプトを実行できます。 WebJobs SDK コンソール アプリケーションは、オンプレミス サーバーなど、コンソール アプリケーションの実行にさえ対応していれば、どこででも実行できます。
比較表
Azure Functions は、WebJobs SDK の上に構築されているため、同じイベント トリガーや他の Azure サービスとの接続を数多く共有します。 以下に、Azure Functions を使用するか WebJobs と WebJobs SDK を使用するかの選択において考慮すべき事柄をいくつか示します。
関数 | Webjobs SDK での Webjobs | |
---|---|---|
サーバーレスのアプリ モデルと自動スケーリング | ✔ | |
ブラウザーでの開発とテスト | ✔ | |
従量課金制の価格 | ✔ | |
Logic Apps との統合 | ✔ | |
イベントのトリガー |
Timer Azure Storage キューと BLOB Azure Service Bus のキューとトピック Azure Cosmos DB Azure Event Hubs HTTP/WebHook (GitHub、Slack) Azure Event Grid |
Timer Azure Storage キューと BLOB Azure Service Bus のキューとトピック Azure Cosmos DB Azure Event Hubs ファイル システム |
サポートされている言語 | C# F# JavaScript Java Python PowerShell |
C#1 |
パッケージ マネージャー | npm と NuGet | NuGet2 |
1 (WebJobs SDK なしの) WebJobs では、C#、Java、JavaScript、Bash、.cmd、.bat、PowerShell、PHP、TypeScript、Python などの言語がサポートされます。 WebJobs は、App Service のサンドボックス内で動作するあらゆるプログラムまたはスクリプトを実行できます。
2 (WebJobs SDK なしの) WebJobs では npm と NuGet がサポートされています。
まとめ
Azure Functions は、Azure App Service WebJobs よりも開発者の生産性を向上させます。 また、プログラミング言語、開発環境、Azure サービスの統合、および価格に関して、より多くのオプションが提供されます。 ほとんどの場合、それが最適な選択肢になるでしょう。
WebJobs が最適な選択肢となるシナリオは 2 つです。それらを次に示します。
- イベントをリッスンするコード (
JobHost
オブジェクト) をより細かく制御する必要がある。 Functions では、JobHost
ファイルでJobHost
の動作をカスタマイズする方法に限りがあります。 場合によっては、JSON ファイル内の文字列を使用して指定できない操作が必要になる場合があります。 たとえば、Azure Storage のカスタム再試行ポリシーを構成できるのは、WebJobs SDK だけです。 - コード スニペットの実行対象の App Service アプリがあり、そのコード スニペットをアプリと同じ Azure DevOps 環境で管理したい。
その他のシナリオで、Azure または外部サービスを統合するコード スニペットを実行する場合は、WebJobs と WebJobs SDK の組み合わせよりも、Azure Functions を選ぶようにしてください。
Power Automate、Logic Apps、Functions、および WebJobs の連携
これらのサービスのうち、1 つだけを選択する必要はありません。 これらは、互いに、かつ外部のサービスと連携して動作します。
Power Automate フローでは、Azure Logic Apps ワークフローを呼び出すことができます。 Azure Logic Apps ワークフローは、Azure Functions で関数を呼び出すことができます。その逆も同様です。 その例については、「Azure Logic Apps と統合される関数を作成する」を参照してください。
Power Automate、Azure Logic Apps、Functions の間で、これらのサービス間の統合エクスペリエンスは時間の経過とともに改善され続けています。 1 つのサービスでコンポーネントを構築し、そのコンポーネントを他のサービスで使用することができます。
統合サービスの詳細については、次の記事を参照してください。
- Christopher Anderson によるプレゼンテーション「Leveraging Azure Functions & Azure App Service for integration scenarios (統合シナリオで Azure Functions と Azure App Service を使用する)」
- Charles Lamanna によるプレゼンテーション 「統合をもっとシンプルに」
- Azure Logic Apps のライブ Web キャスト
- Power Automate に関してよく寄せられる質問
次のステップ
初めてのフロー、ロジック アプリ ワークフロー、関数アプリを実際に作ってみましょう。 以下のいずれかのリンクを選択してください。