Flow、Logic Apps、Functions、WebJobs の比較Choose between Flow, Logic Apps, Functions, and WebJobs

この記事では、Microsoft Cloud で提供されている以下のサービスを比較対照しながら説明します。いずれも統合に関する問題を解決し、ビジネス プロセスの自動化を実現できるサービスです。This article compares and contrasts the following services in the Microsoft cloud, which can all solve integration problems and automate business processes:

ここに挙げたサービスはいずれも、異なるシステムを "つなげる" 際に有用です。All these services are useful when "gluing" together disparate systems. どのサービスでも入力、アクション、条件、出力を定義できます。They can all define input, actions, conditions, and output. また、それぞれのサービスはスケジュールまたはトリガーを使って実行できます。You can run each of them on a schedule or trigger. ただし、各サービスにはそれぞれ違った利点が存在します。However, each service has unique advantages, and comparing them is not a question of "Which service is the best?" このため、サービスの比較にあたっては、"どのサービスが最も良いか" ではなく、"このソリューションにはどのサービスが最もよく合うか" が問題となります。but one of "Which service is best suited for this situation?" 十分な機能を備え、かつスケーラブルな統合ソリューションをすばやく構築するには、多くの場合、サービスを複数組み合わせることが最も効果的です。Often, a combination of these services is the best way to rapidly build a scalable, full-featured integration solution.

Flow とLogic AppsFlow vs. Logic Apps

Microsoft Flow と Azure Logic Apps はどちらも、"構成第一" の統合サービスであるため、ここで一緒に説明します。We can discuss Microsoft Flow and Azure Logic Apps together because they are both configuration-first integration services. これらのサービスを使用すると、プロセスやワークフローの構築から、各種の SaaS やエンタープライズ アプリケーションとの統合までを容易に行うことができます。They make it easy to build processes and workflows and integrate with various SaaS and enterprise applications.

  • Flow は Logic Apps の上に構築されているFlow is built on top of Logic Apps
  • 同じワークフロー デザイナーがあるThey have the same workflow designer
  • コネクタ は、もう一方でも動作するConnectors that work in one can also work in the other

Flow を使えば、オフィスの従業員がだれでも、開発者や IT 部門の力を借りることなくシンプルな統合 (重要なメールに関する SMS を受信するなど) を実現できます。Flow empowers any office worker to perform simple integrations (for example, get SMS for important emails) without going through developers or IT. これに対して、Logic Apps では、エンタープライズレベルの DevOps とセキュリティを必要とする高度な統合やミッション クリティカルな統合 (B2B プロセスなど) が可能になります。On the other hand, Logic Apps can enable advanced or mission-critical integrations (for example, B2B processes) where enterprise-level DevOps and security practices are required. ビジネスで使用するワークフローは、時間の経過と共に複雑さを増してくるものです。It is 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
オーディエンスAudience オフィスの従業員、ビジネス ユーザーOffice workers, business users IT プロフェッショナル、開発者IT pros, developers
シナリオScenarios セルフ サービスSelf-service ミッション クリティカルMission-critical
デザイン ツールDesign Tool ブラウザー上とモバイル アプリ、UI のみIn-browser and mobile app, UI only ブラウザー上のほか、Visual Studioコード ビューが利用可能In-browser and Visual Studio, Code view available
DevOpsDevOps 実稼働環境でのアドホックな開発Ad-hoc, develop in production Azure リソース管理source control, testing, support, and automation and manageability in Azure Resource Management
管理者向けエクスペリエンスAdmin Experience https://flow.microsoft.comhttps://flow.microsoft.com https://portal.azure.comhttps://portal.azure.com
セキュリティSecurity 標準的な実務慣行: データの主権性の確保機密性の高い保存データの暗号化などStandard practices: data sovereignty, encryption at rest for sensitive data, etc. Azure によるセキュリティ保証: Azure セキュリティSecurity Center監査ログなどSecurity assurance of Azure: Azure Security, Security Center, audit logs, and more.

Functions とWebJobsFunctions vs. WebJobs

Azure Functions と Azure App Service WebJobs はどちらも開発者向けに設計された " コード第一 " の統合サービスであるため、ここで一緒に説明します。We can discuss Azure Functions and Azure App Service WebJobs together because they are both code-first integration services and designed for developers. この 2 つのサービスでは、新しいストレージ BLOBwebhook 要求など、さまざまなイベントに対する応答としてスクリプトまたはコードを実行できます。They enable you to run a script or a piece of code in response to various events, such as new Storage Blobs or a WebHook request. この 2 つは、以下の点がよく似ています。Here are their similarities:

  • どちらも Azure App Service の上に構築されたものであり、ソース管理認証監視などの機能を利用可能Both are built on Azure App Service and enjoy features such as source control, authentication, and monitoring.
  • どちらも開発者向けのサービスであるBoth are developer-focused services.
  • どちらも標準的なスクリプト言語とプログラミング言語をサポートしているBoth support standard scripting and programming languages.
  • どちらも NuGet および NPM をサポートしているBoth have NuGet and NPM support.

Functions は WebJobs の最も良い点を引き継ぎ、さらに改善しているという点で、WebJobs を自然な形で進化させたものとなっています。Functions is the natural evolution of WebJobs in that it takes the best things about WebJobs and improves upon them. WebJobs からの改善点は、以下のとおりです。The improvements include:

  • サーバーレス アプリ モデル。Serverless app model.
  • 開発、テスト、コードの実行をブラウザー上で直接行えるよう合理化Streamlined dev, test, and run of code, directly in the browser.
  • GitHub webhookなど、さらに多くの Azure サービスとサードパーティ サービスを統合済みBuilt-in integration with more Azure services and 3rd-party services like GitHub WebHooks.
  • 従量課金制を採用し、 App Service プランの購入が不要Pay-per-use, no need to pay for an App Service plan.
  • 自動の 動的スケーリングAutomatic, dynamic scaling.
  • App Service を既にお使いのお客様については、App Service プランでの実行も可能 (このため、利用の少ないリソースを有効活用できます)For existing customers of App Service, running on App Service plan still possible (to take advantage of under-utilized resources).
  • Logic Apps との統合Integration with Logic Apps.

以下の表では、Functions と WebJobs の違いをまとめています。The following table summarizes the differences between Functions and WebJobs:

FunctionsFunctions WebJobsWebJobs
スケーリングScaling 構成不要のスケーリングConfigurationless scaling App Service プランによるスケーリングScale with App Service plan
価格Pricing 従量課金または App Service プランの一部Pay-per-use or part of App Service plan App Service プランの一部Part of App Service plan
実行の種類Run-type トリガー、(タイマー トリガーによる) スケジュールTriggered, scheduled (by timer trigger) トリガー、継続的、スケジュールTriggered, continuous, scheduled
トリガー イベントTrigger events タイマーAzure Cosmos DBAzure Event HubsHTTP/webhook (GitHub、Slack)Azure App Service Mobile AppsAzure Event HubsAzure Storage キューおよび BLOBAzure Service Bus キューおよびトピックTimer, Azure Cosmos DB, Azure Event Hubs, HTTP/WebHook (GitHub, Slack), Azure App Service Mobile Apps, Azure Event Hubs, Azure Storage queues and blobs, Azure Service Bus queues and topics Azure Storage キューおよび BLOBAzure Service Bus キューおよびトピックAzure Storage queues and blobs, Azure Service Bus queues and topics
ブラウザーでの開発In-browser development サポートされていますSupported サポートされていませんNot Supported
C#C# サポートされていますSupported サポートされていますSupported
F#F# サポートされていますSupported サポートされていませんNot Supported
JavaScriptJavaScript サポートされていますSupported サポートされていますSupported
JavaJava PreviewPreview サポートされていませんNot supported
BashBash 試験段階Experimental サポートされていますSupported
Windows スクリプト (.cmd、.bat)Windows scripting (.cmd, .bat) 試験段階Experimental サポートされていますSupported
PowerShellPowerShell 試験段階Experimental サポートされていますSupported
PHPPHP 試験段階Experimental サポートされていますSupported
PythonPython 試験段階Experimental サポートされていますSupported
TypeScriptTypeScript 試験段階Experimental サポートされていませんNot Supported

最終的には、現時点で App Service を使って何をしているかに応じて、Functions と WebJobs のどちらを使用するかが変わります。Whether to use Functions or WebJobs ultimately depends on what you're already doing with App Service. ある App Service アプリのコード スニペットを実行する必要があり、そのコード スニペットをアプリと同じ DevOps 環境で管理したい場合には、WebJobs を使用します。If 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, use WebJobs. 次のシナリオでは、Functions を使用します。In the following scenarios, use Functions.

  • 他の Azure サービスまたはサード パーティ製アプリ用のコード スニペットを実行する必要がある場合。You want to run code snippets for other Azure services or 3rd-party apps.
  • App Service アプリから統合コードを個別に管理する必要がある場合。You want to manage your integration code separately from your App Service apps.
  • ロジック アプリからコード スニペットを呼び出す必要がある場合。You want to call your code snippets from a Logic app.

Flow、Logic Apps、および FunctionsFlow, Logic Apps, and Functions together

前に述べたとおり、どのサービスが最適であるかは、状況によって異なります。As previously mentioned, which service is best suited to you depends on your situation.

  • 単純なビジネスの最適化では、Flow を使用します。For simple business optimization, use Flow.
  • 統合のシナリオが高度で Flow では対応できない場合、または DevOps 機能やセキュリティ コンプライアンス機能が必要な場合には、Logic Apps を使用します。If your integration scenario is too advanced for Flow, or you need DevOps capabilities and security compliances, then use Logic Apps.
  • 統合シナリオのどこかのステップで大幅なカスタム変換または特殊なコードの使用が必要になる場合には、関数を作成し、ロジック アプリ内でアクションとして関数をトリガーします。If a step in your integration scenario requires highly custom transformation or specialized code, then write a function and trigger the function as an action in your logic app.

フローでは、ロジック アプリを呼び出すことができます。You can call a logic app in a flow. また、ロジック アプリで関数を呼び出したり、関数でロジック アプリを呼び出したりすることもできます。You can also call a function in a logic app, and a logic app in a function. 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. このため、これら 3 つのテクノロジに対する投資が無駄になることはありません。Therefore, any investment you make in these three technologies is worthwhile.

次のステップNext steps

最初のフロー、ロジック アプリ、Function App、または Web ジョブを作成して、それぞれのサービスを使ってみましょう。Get started with each of the services by creating your first flow, logic app, function app, or WebJob. 以下のリンクのなかから、お好きなものをクリックしてください。Click any of the following links:

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