Flow、Logic Apps、Functions、WebJobs の比較

この記事では、Microsoft Cloud で提供されている以下のサービスを比較対照しながら説明します。いずれも統合に関する問題を解決し、ビジネス プロセスの自動化を実現できるサービスです。

ここに挙げたサービスはいずれも、異なるシステムを "つなげる" 際に有用です。 どのサービスでも入力、アクション、条件、出力を定義できます。 また、それぞれのサービスはスケジュールまたはトリガーを使って実行できます。 ただし、各サービスにはそれぞれ違った利点が存在します。 このため、サービスの比較にあたっては、"どのサービスが最も良いか" ではなく、"このソリューションにはどのサービスが最もよく合うか" が問題となります。 十分な機能を備え、かつスケーラブルな統合ソリューションをすばやく構築するには、多くの場合、サービスを複数組み合わせることが最も効果的です。

Flow とLogic Apps

Microsoft Flow と Azure Logic Apps はどちらも、プロセスとワークフローの作成から各種の SaaS やエンタープライズ アプリケーションとの統合までを簡単に行える " 構成第一 " の統合サービスであるため、ここで一緒に説明します。

  • Flow は Logic Apps の上に構築されている
  • 同じワークフロー デザイナーがある
  • コネクタ は、もう一方でも動作する

Flow を使えば、オフィスの従業員がだれでも、開発者や IT 部門の力を借りることなく (重要なメールに関する SMS を受信するなどの) シンプルな統合を実現できます。 これに対して、Logic Apps では、エンタープライズレベルの DevOps とセキュリティを必要とする高度な統合やミッション クリティカルな統合 (B2B プロセスなど) が可能になります。 ビジネスで使用するワークフローは、時間の経過と共に複雑さを増してくるものです。 このため、最初はフローを使用し、後から必要に応じてロジック アプリに変換することもできます。

以下の表は、統合に Flow と Logic Apps のどちらが適しているかを判断するうえで役立ちます。

Flow Logic Apps
オーディエンス オフィスの従業員、ビジネス ユーザー IT プロフェッショナル、開発者
シナリオ セルフ サービス ミッション クリティカル
デザイン ツール ブラウザー上とモバイル アプリ、UI のみ ブラウザー上のほか、Visual Studioコード ビューが利用可能
DevOps 実稼働環境でのアドホックな開発 Azure リソース管理
管理者向けエクスペリエンス https://flow.microsoft.com https://portal.azure.com
セキュリティ 標準的な実務慣行: データの主権性の確保機密性の高い保存データの暗号化など Azure によるセキュリティ保証: Azure セキュリティSecurity Center監査ログなど

Functions とWebJobs

Azure Functions と Azure App Service WebJobs はどちらも開発者向けに設計された " コード第一 " の統合サービスであるため、ここで一緒に説明します。 この 2 つのサービスでは、新しいストレージ BLOBwebhook 要求など、さまざまなイベントに対する応答としてスクリプトまたはコードを実行できます。 この 2 つは、以下の点がよく似ています。

  • どちらも Azure App Service の上に構築されたものであり、ソース管理認証監視などの機能を利用可能
  • どちらも開発者向けのサービスである
  • どちらも標準的なスクリプト言語とプログラミング言語をサポートしている
  • どちらも NuGet および NPM をサポートしている

Functions は WebJobs の最も良い点を引き継ぎ、さらに改善しているという点で、WebJobs を自然な形で進化させたものとなっています。 WebJobs からの改善点は、以下のとおりです。

  • 開発、テスト、コードの実行をブラウザー上で直接行えるよう合理化
  • GitHub webhookなど、さらに多くの Azure サービスとサードパーティ サービスを統合済み
  • 従量課金制を採用し、 App Service プランの購入が不要
  • 自動の 動的スケーリング
  • App Service を既にお使いのお客様については、App Service プランでの実行も可能 (このため、利用の少ないリソースを有効活用できます)
  • Logic Apps との統合

以下の表では、Functions と WebJobs の違いをまとめています。

Functions WebJobs
スケーリング 構成不要のスケーリング App Service プランによるスケーリング
価格 従量課金または App Service プランの一部 App Service プランの一部
実行の種類 トリガー、(タイマー トリガーによる) スケジュール トリガー、継続的、スケジュール
トリガー イベント タイマーAzure Cosmos DBAzure Event HubHTTP/webhook (GitHub、Slack)Azure App Service Mobile AppsAzure Notification HubsAzure Service BusAzure Storage Azure StorageAzure Service Bus
ブラウザーでの開発 サポート対象 サポート対象外
ウィンドウ スクリプト 試験段階 サポート対象
PowerShell 試験段階 サポート対象
C# サポート対象 サポート対象
F# サポート対象 サポート対象外
Bash 試験段階 サポート対象
PHP 試験段階 サポート対象
Python 試験段階 サポート対象
JavaScript サポート対象 サポート対象

最終的には、現時点で App Service を使って何をしているかに応じて、Functions と WebJobs のどちらを使用するかが変わります。 ある App Service アプリのコード スニペットを実行する必要があり、そのコード スニペットをアプリと同じ DevOps 環境で管理したい場合には、WebJobs を使用します。 他の Azure サービスまたはサードパーティ製アプリのコード スニペットを実行する必要がある場合、App Service アプリとは別の環境で統合コード スニペットを管理したい場合、またはロジック アプリからコード スニペットを呼び出す必要がある場合には、Functions で改善された機能を使用します。

Flow、Logic Apps、および Functions

前に述べたとおり、どのサービスが最適であるかは、状況によって異なります。

  • 単純なビジネスの最適化では、Flow を使用します。
  • 統合のシナリオが高度で Flow では対応できない場合、または DevOps 機能やセキュリティ コンプライアンス機能が必要な場合には、Logic Apps を使用します。
  • 統合シナリオのどこかのステップで大幅なカスタマイズまたは特殊なコードの使用が必要になる場合には、Function App を作成し、ロジック アプリ内のアクションとして関数をトリガーします。

フローでは、ロジック アプリを呼び出すことができます。 また、ロジック アプリで関数を呼び出したり、関数でロジック アプリを呼び出したりすることもできます。 Flow、Logic Apps、Functions の統合は、今後ますます強まっていきます。 あるサービスで作成したものは、別のサービスで使用できます。 このため、これら 3 つのテクノロジに対する投資が無駄になることはありません。

次のステップ

最初のフロー、ロジック アプリ、Function App、または Web ジョブを作成して、それぞれのサービスを使ってみましょう。 以下のリンクのなかから、お好きなものをクリックしてください。

ここで紹介した統合サービスの詳しい情報については、以下のリンクを参照してください。