Flow、Logic Apps、Functions、WebJobs の比較Compare Flow, Logic Apps, Functions, and WebJobs

この記事では、次の Microsoft クラウド サービスを比較します。This article compares the following Microsoft cloud services:

いずれも統合に関する問題を解決し、ビジネス プロセスの自動化を実現できるサービスです。All of these services can solve integration problems and automate business processes. どのサービスでも入力、アクション、条件、出力を定義できます。They can all define input, actions, conditions, and output. また、それぞれのサービスはスケジュールまたはトリガーを使って実行できます。You can run each of them on a schedule or trigger. ただし、各サービスにはそれぞれ違った利点が存在します。この記事では、これらの違いについて説明します。But each service has unique advantages, and this article explains the differences.

Microsoft Flow と Azure Logic Apps の比較Compare Microsoft Flow and Azure Logic Apps

Flow と Logic Apps はどちらも、ワークフローを作成できる "デザイナー第一" の統合サービスです。Flow and Logic Apps are both designer-first integration services that can create workflows. どちらのサービスも、各種の SaaS アプリケーションやエンタープライズ アプリケーションと統合されます。Both services integrate with various SaaS and enterprise applications.

Flow は Logic Apps の上に構築されています。Flow is built on top of Logic Apps. どちらも同じワークフロー デザイナーおよび同じコネクタを共有します。They share the same workflow designer and the same Connectors.

Flow を使えば、オフィスの従業員がだれでも、開発者や IT 部門の力を借りることなくシンプルな統合 (SharePoint ドキュメント ライブラリでの承認プロセスなど) を実現できます。Flow empowers any office worker to perform simple integrations (for example, an approval process on a SharePoint Document Library) without going through developers or IT. これに対して、Logic Apps では、エンタープライズレベルの DevOps とセキュリティを必要とする高度な統合 (B2B プロセスなど) が可能になります。On the other hand, Logic Apps can enable advanced integrations (for example, B2B processes) where enterprise-level DevOps and security practices are required. ビジネスで使用するワークフローは、時間の経過と共に複雑さを増してくるものです。It's typical for a business workflow to grow in complexity over time. このため、最初はフローを使用し、後から必要に応じてロジック アプリに変換することもできます。Accordingly, you can start with a flow at first, then convert it to a logic app as needed.

以下の表は、統合に Flow と Logic Apps のどちらが適しているかを判断するうえで役立ちます。The following table helps you determine whether Flow or Logic Apps is best for a given integration.

FlowFlow Logic AppsLogic Apps
ユーザーUsers オフィスの従業員、ビジネス ユーザー、SharePoint 管理者Office workers, business users, SharePoint administrators インテグレーター、開発者、IT プロフェッショナルPro integrators and developers, IT pros
シナリオScenarios セルフ サービスSelf-service 高度な統合Advanced integrations
デザイン ツールDesign Tool ブラウザー上とモバイル アプリ、UI のみIn-browser and mobile app, UI only ブラウザー上のほか、Visual Studioコード ビューが利用可能In-browser and Visual Studio, Code view available
アプリケーション ライフサイクル管理 (ALM)Application Lifecycle Management (ALM) 非運用環境で設計とテストを行い、準備ができたら運用環境に昇格します。Design and test in non-production environments, promote to production when ready. DevOps: Azure Resource Management におけるソース管理、テスト、サポート、自動化、管理DevOps: source control, testing, support, automation, and manageability in Azure Resource Management
管理者向けエクスペリエンスAdmin Experience フロー環境とデータ損失防止 (DLP) ポリシーの管理、ライセンスの追跡 (https://admin.flow.microsoft.com)Manage Flow Environments and Data Loss Prevention (DLP) policies, track licensing https://admin.flow.microsoft.com リソース グループの管理、接続、アクセス管理、ログ (https://portal.azure.com)Manage Resource Groups, Connections, Access Management, and Logging https://portal.azure.com
セキュリティSecurity Office 365 セキュリティ/コンプライアンスの監査ログ、データ損失防止 (DLP)、機密データの保存時の暗号化などOffice 365 Security and Compliance audit logs, Data Loss Prevention (DLP), encryption at rest for sensitive data, etc. Azure によるセキュリティ保証: Azure セキュリティSecurity Center監査ログなどSecurity assurance of Azure: Azure Security, Security Center, audit logs, and more.

Azure Functions と Azure Logic Apps の比較Compare Azure Functions and Azure Logic Apps

Functions と Logic Apps は、サーバーレス ワークロードを可能にする Azure サービスです。Functions and Logic Apps are Azure services that enable serverless workloads. Azure Functions がサーバーレスのコンピューティング サービスであるのに対し、Azure Logic Apps はサーバーレスのワークフローを提供します。Azure Functions is a serverless compute service, while Azure Logic Apps provides serverless workflows. どちらでも複雑な "オーケストレーション" を作成することができます。Complex orchestrations can be created by both. オーケストレーションは、Logic Apps において複雑なタスクを遂行するために実行される、"アクション" と呼ばれる関数またはステップの集まりです。An orchestration is a collection of functions or steps, called actions in Logic Apps, that are executed to accomplish a complex task. たとえば命令のバッチを処理するのであれば、関数のインスタンスを多数並列に実行し、すべてのインスタンスの完了を待った後、その集計に対して結果を計算する関数を実行することになるでしょう。For example, to process a batch of orders you might execute many instances of a function in parallel, wait for all instances to finish, and then execute a function that computes a result on the aggregate.

Azure Functions では、コードを記述したり Durable Functions 拡張機能 (プレビュー) を使用したりすることによって、オーケストレーションを開発します。For Azure Functions, you develop orchestrations by writing code and using the Durable Functions extension (in preview). Logic Apps では、GUI を使用するか構成ファイルを編集することによってオーケストレーションを作成します。For Logic Apps, you create orchestrations by using a GUI or editing configuration files.

オーケストレーションを構築するときは、ロジック アプリから関数を呼び出したり、関数からロジック アプリを呼び出したりしながら、さまざまなサービスを組み合わせることができます。You can mix and match services when you build an orchestration, calling functions from logic apps and calling logic apps from functions. どのように個々のオーケストレーションを構築するかは、サービスの機能や個人の好みに基づいて選択します。Choose how to build each orchestration based on the services' capabilities or your personal preference. これらのサービスの主な違いをいくつか次の表に示します。The following table lists some of the key differences between these services:

Durable FunctionsDurable Functions Logic AppsLogic Apps
開発Development コード第一 (命令型)Code-first (imperative) デザイナー第一 (宣言型)Designer-first (declarative)
接続Connectivity ビルトインのバインド (約 10 種類) およびカスタム バインド (コードを記述)About a dozen built-in binding types, write code for custom bindings コネクタの豊富なコレクションEnterprise Integration Pack (B2B のシナリオ向け)カスタム コネクタの構築Large collection of connectors, Enterprise Integration Pack for B2B scenarios, build custom connectors
アクションActions 個々のアクティビティは Azure 関数 (アクティビティ関数のコードを記述する)Each activity is an Azure function; write code for activity functions 既製のアクションの豊富なコレクションLarge collection of ready-made actions
監視Monitoring Azure Application InsightsAzure Application Insights Azure PortalOperations Management SuiteLog AnalyticsAzure portal, Operations Management Suite, Log Analytics
管理Management REST APIVisual StudioREST API, Visual Studio Azure PortalREST APIPowerShellVisual StudioAzure portal, REST API, PowerShell, Visual Studio
実行コンテキストExecution context ローカルまたはクラウドで実行できます。Can run locally or in the cloud. クラウドでのみ動作します。Runs only in the cloud.

Functions と WebJobs の比較Compare Functions and WebJobs

Azure Functions と同様、Azure App Service WebJobs と WebJobs SDK は開発者向けに設計された "コード第一" の統合サービスです。Like Azure Functions, Azure App Service WebJobs with the WebJobs SDK is a code-first integration service that is designed for developers. どちらも Azure App Service の上に構築されたものであり、ソース管理の統合認証Application Insights との統合による監視などの機能をサポートします。Both are built on Azure App Service and support features such as source control integration, authentication, and monitoring with Application Insights integration.

WebJobs と WebJobs SDKWebJobs and the WebJobs SDK

App Service の WebJobs 機能を使用すると、スクリプトやコードを App Service Web Apps のコンテキストで実行することができます。The WebJobs feature of App Service enables you to run a script or code in the context of an App Service web app. WebJobs SDK は、WebJobs 向けに設計されたフレームワークです。Azure サービス内のイベントをきっかけにして実行するコードの作成が、このフレームワークによって単純化されます。The WebJobs SDK is a framework designed for WebJobs that simplifies the code you write to respond to events in Azure services. たとえば、Azure Storage に画像の BLOB が作成されたことをきっかけにして、サムネイル画像を作成することもできます。For example, you could respond to the creation of an image blob in Azure Storage by creating a thumbnail image. WebJobs SDK は、.NET コンソール アプリケーションとして実行され、この .NET コンソール アプリケーションを WebJobs にデプロイすることができます。The WebJobs SDK runs as a .NET console application, which you can deploy to a WebJob.

WebJobs と WebJobs SDK は組み合わせて使ったときに最も効果的に機能しますが、WebJobs SDK なしで WebJobs を使うことも、その逆も可能です。WebJobs and the WebJobs SDK work best together, but you can use WebJobs without the WebJobs SDK and vice versa. WebJobs は、App Service のサンドボックス内で動作するあらゆるプログラムまたはスクリプトを実行できます。A WebJob can run any program or script that runs in the App Service sandbox. WebJobs SDK コンソール アプリケーションは、オンプレミス サーバーなど、コンソール アプリケーションの実行にさえ対応していれば、どこででも実行できます。A WebJobs SDK console application can run anywhere console applications run, such as on-premises servers.

比較表Comparison table

Azure Functions は、WebJobs SDK の上に構築されているため、同じイベント トリガーや他の Azure サービスとの接続を数多く共有します。Azure Functions is built on the WebJobs SDK, so it shares many of the same event triggers and connections to other Azure services. 以下、Azure Functions を使用するか WebJobs と WebJobs SDK を使用するかの選択において考慮すべき事柄をいくつかの示します。Here are some factors to consider when choosing between Azure Functions and WebJobs with the WebJobs SDK:

FunctionsFunctions WebJobs と WebJobs SDKWebJobs with WebJobs SDK
サーバーレスのアプリ モデル自動スケールServerless app model with automatic scaling
ブラウザーでの開発とテストDevelop and test in browser
従量課金制の価格Pay-per-use pricing
Logic Apps との統合Integration with Logic Apps
トリガー イベントTrigger events TimerTimer
Azure Storage キューと BLOBAzure Storage queues and blobs
Azure Service Bus のキューとトピックAzure Service Bus queues and topics
Azure Cosmos DBAzure Cosmos DB
Azure Event HubsAzure Event Hubs
HTTP/WebHook (GitHub、Slack)HTTP/WebHook (GitHub, Slack)
Azure Event GridAzure Event Grid
TimerTimer
Azure Storage キューと BLOBAzure Storage queues and blobs
Azure Service Bus のキューとトピックAzure Service Bus queues and topics
Azure Cosmos DBAzure Cosmos DB
Azure Event HubsAzure Event Hubs
ファイル システムFile system
サポートされている言語Supported languages C#C#
F#F#
JavaScriptJavaScript
Java (プレビュー)Java (preview)
C#1C#1
パッケージ マネージャーPackage managers NPM と NuGetNPM and NuGet NuGet2NuGet2

1 (WebJobs SDK なしの) WebJobs では、C#、JavaScript、Bash、.cmd、.bat、PowerShell、PHP、TypeScript、Python などがサポートされます。1 WebJobs (without WebJobs SDK) supports C#, JavaScript, Bash, .cmd, .bat, PowerShell, PHP, TypeScript, Python, and more. サポートされる言語はこれらに限定されません。WebJobs は、App Service のサンドボックス内で動作するあらゆるプログラムまたはスクリプトを実行できます。This is not a comprehensive list; a WebJob can run any program or script that can run in the App Service sandbox.

2 (WebJobs SDK なしの) WebJobs は NPM と NuGet をサポートします。2 WebJobs (without WebJobs SDK) supports NPM and NuGet.

まとめSummary

両者を比較すると、Azure Functions の方が、開発者の生産性が高く、プログラミング言語や開発環境、Azure サービス統合、価格設定における選択肢も広いことがわかります。Azure Functions offers greater developer productivity, more programming language options, more development environment options, more Azure service integration options, and more pricing options. ほとんどの場合、それが最適な選択肢になるでしょう。For most scenarios, it's the best choice.

WebJobs が最適な選択肢となるシナリオは 2 つです。それらを次に示します。Here are two scenarios for which WebJobs may be the best choice:

  • イベントをリッスンするコード (JobHost オブジェクト) をより細かく制御する必要がある。You need more control over the code that listens for events, the JobHost object. Functions では、host.json ファイルで JobHost の動作をカスタマイズする方法に限りがあります。Functions offers a limited number of ways to customize JobHost behavior in the host.json file. JSON ファイル内の文字列で指定できる範囲を超えた作業も、ときには必要になります。Sometimes you need to do things that can't be specified by a string in a JSON file. たとえば、Azure Storage のカスタム再試行ポリシーを構成できるのは、WebJobs SDK だけです。For example, only the WebJobs SDK lets you configure a custom retry policy for Azure Storage.
  • ある App Service アプリのコード スニペットを実行する必要があり、そのコード スニペットをアプリと同じ DevOps 環境で管理したい。You have an App Service app for which you want to run code snippets, and you want to manage them together in the same DevOps environment.

その他のシナリオで、Azure またはサードパーティのサービスと連携するコード スニペットを実行する場合は、WebJobs と WebJobs SDK の組み合わせよりも、Azure Functions を選ぶようにしてください。For other scenarios where you want to run code snippets for integrating Azure or third-party services, choose Azure Functions over WebJobs with the WebJobs SDK.

Flow、Logic Apps、Functions、WebJobs の連携Flow, Logic Apps, Functions, and WebJobs together

どれか 1 つのサービスを選ぶ必要はありません。これらのサービスは互いに連携して動作し、そして外部のサービスとも連携します。You don't have to choose just one of these services; they integrate with each other as well as they do with external services.

フローからロジック アプリを呼び出すことができます。A flow can call a logic app. ロジック アプリから関数を呼び出したり、関数からロジック アプリを呼び出したりすることが可能です。A logic app can call a function, and a function can call a logic app. その例については、「Azure Logic Apps と統合される関数を作成する」を参照してください。See, for example, Create a function that integrates with Azure Logic Apps.

Flow、Logic Apps、Functions の統合は、今後ますます強まっていきます。The integration between Flow, Logic Apps, and Functions continues to improve over time. あるサービスで作成したものは、別のサービスで使用できます。You can build something in one service and use it in the other services.

次の手順Next steps

初めてのフロー、ロジック アプリ、関数アプリを実際に作ってみましょう。Get started by creating your first flow, logic app, or function app. 以下のリンクのなかから、お好きなものをクリックしてください。Click any of the following links:

ここで紹介した統合サービスの詳しい情報については、以下のリンクを参照してください。Or, get more information on these integration services with the following links: