テクノロジのオプションを確認する

既存の自転車レンタル システムと第 2 キャンパスで使用されているシステムの間を適切に統合するビジネス プロセスを作成するために、あなたに残されている時間はあまりありません。 あなたは、既に持っている Azure の専門知識を最大限に活用しようと考えています。あなたは、このような問題を解決するために使用できるいくつかのテクノロジが Azure に含まれていると読んだことがあります。

このユニットでは、ビジネス プロセスの自動化と統合に利用できる Azure テクノロジのオプションについて説明します。

ビジネスの一般的な問題

ビジネスでユーザーへの高品質なサービスと高品質の製品を保証するための 1 つの方法は、厳密なビジネス プロセスを設計して実装することです。 そのようなプロセスには、複数のステップ、複数の人、複数のソフトウェア パッケージが含まれる場合があります。 各プロセスは、作業者が 1 つずつ順番に実行する一連の単純なアクティビティで行われることも、分岐したりループしたりすることもあります。 また、各プロセスはすぐに終わることも、完了するまでに何日または何週間もかかることもあります。

第 2 のビジネスやパートナー組織と統合しようとすると問題が発生することがよくあります。 管理者は、異なるソフトウェアを使用して実装されている可能性のある、2 つの組織で使用されている個別のプロセスをどのようにすれば統合できるでしょうか。

ソフトウェアでモデル化されたビジネス プロセスは、ワークフローとよく呼ばれます。 Azure には、複数のシステムを統合するワークフローを構築して実装するために使用できる 4 つの異なるテクノロジが含まれます。

  • Logic Apps
  • Microsoft Power Automate
  • WebJobs
  • Azure Functions

これら 4 つのテクノロジには、いくつかの類似点があります。 たとえば次のような点です。

  • すべて、入力を受け入れることができます。 入力は、ワークフローに提供されるデータまたはファイルです。
  • すべて、アクションを実行できます。 アクションは、ワークフローで実行される簡単な操作であり、多くの場合、データを変更したり、別のアクションが実行される原因になったりします。
  • すべて、条件を含めることができます。 条件は、次に実行するアクションを決定できるテストであり、多くの場合は入力に対して実行されます。
  • すべて、出力を生成させることができます。 出力は、ワークフローによって作成されるデータまたはファイルです。

さらに、これらのテクノロジで作成されたワークフローは、スケジュールに基づいて開始させたり、何らかの外部イベントによってトリガーされたりすることができます。

デザイン優先のテクノロジ

ビジネス アナリストは、ビジネス プロセスを検討して計画するとき、紙にフロー ダイアグラムを書くことがあります。 Logic Apps と Microsoft Power Automate では、同様のアプローチを使用してワークフローを設計できます。 どちらにも、ワークフローを描画できるユーザー インターフェイスが含まれます。 このアプローチを、"デザイン優先" アプローチと呼びます。

Logic Apps

Azure のサービスである Logic Apps を使用すると、分散アプリケーションのさまざまなコンポーネントを自動化し、調整し、統合することができます。 Logic Apps でデザイン優先のアプローチを使用することにより、複雑なビジネス プロセスをモデル化する複雑なワークフローを描画できます。 次のスクリーンショットでは、ワークフローの定義に使用できる Logic Apps デザイナーとデザイン キャンバスを示します。

Azure portal 内の Logic Apps ワークフロー デザイナーのスクリーンショット。

または、コードで作業する方がよい場合は、次のスクリーンショットで示すコード ビューを使用し、JSON 表記でワークフローを作成または編集できます。

Azure portal の Logic Apps コード エディターのスクリーンショット。

統合において Logic Apps が優れている理由の 1 つは、200 を超えるコネクタが含まれていることです。 "コネクタ" は、外部サービスへのインターフェイスを提供する Logic Apps のコンポーネントです。 たとえば、Twitter コネクタを使うとツイートを送信および取得でき、Office 365 Outlook コネクタを使うとメール、予定表、連絡先を管理できます。 Logic Apps では、アプリの作成に使用できる何百もの事前構築済みコネクタが提供されています。 普通とは異なるシステムや独自のシステムを Logic Apps から呼び出したい場合は、システムで REST API が公開されていれば、独自のコネクタを作成できます。

Microsoft Power Automate

Microsoft Power Automate は、開発や IT の専門知識がなくてもワークフローを作成するために使用できるサービスです。 Web サイトまたは Microsoft Power Automate モバイル アプリを使い、さまざまなコンポーネントを統合して調整するワークフローを作成できます。

4 種類のフローを作成できます。

  • 自動: 何らかのイベントからのトリガーによって開始されるフローです。 たとえば、新しいツイートの到着や新しいファイルのアップロードをイベントにできます。
  • ボタン: モバイル デバイスからシングル クリックで反復的なタスクを実行するには、ボタン フローを使います。
  • スケジュール: 毎週 1 回、特定の日付、10 時間後など、定期的に実行するフローです。
  • ビジネス プロセス: 株式注文プロセスや苦情処理手順などのビジネス プロセスをモデル化するフローです。

Microsoft Power Automate では、上のような種類のフローを作成するために誰でも使用できる使いやすいデザイン サーフェイスが用意されています。 次のスクリーンショットで示すように、デザイナーを使用するとプロセスを簡単に設計してレイアウトできます。

ファイル トリガー、ユーザーのプロファイルを取得する Office アクション、メールを送信する Outlook アクションを含むワークフローが示されている Microsoft Power Automate デザイナーのスクリーンショット。

Microsoft Power Automate の内部は、Logic Apps が基になっています。 この事実は、Power Automate でも同じ範囲のコネクタとアクションがサポートされることを意味します。 また、カスタム コネクタを Microsoft Power Automate で使うこともできます。

デザイン優先テクノロジの比較

次の表からわかるように、非技術スタッフが使うには Microsoft Power Automate の方が適しています。 ワークフロー デザイナーが IT プロフェッショナル、開発者、または DevOps 熟練者である場合は、通常は Logic Apps の方が適しています。

Microsoft Power Automate Logic Apps
対象ユーザー オフィス ワーカーやビジネス アナリスト 開発者や IT プロフェッショナル
対象シナリオ セルフサービスのワークフローの作成 高度な統合プロジェクト
デザイン ツール GUI のみ。 ブラウザーとモバイル アプリ ブラウザーと Visual Studio デザイナー。 コードの編集が可能
アプリケーション ライフサイクル管理 Power Automate には、テスト環境と運用環境が含まれています Logic Apps のソース コードを、Azure DevOps とソース コード管理システムに含めることができます

コード優先のテクノロジ

1 つのワークフローでさまざまなビジネス アプリケーションを調整して統合するとき、チームの開発者はコードを記述する方を好むことがあります。 たとえば、ワークフローのパフォーマンスを細かく制御したり、ビジネス プロセスの一部としてカスタム コードを記述したりすることが必要な場合です。 そのようなユーザーのため、Azure には Azure WebJobs と Azure Functions が含まれています。

WebJobs と WebJobs SDK

Azure App Service は、Web アプリケーション、モバイル バックエンド、RESTful API のためのクラウドベースのホスティング サービスです。 これらのアプリケーションでは、多くの場合、何らかのバックグラウンド タスクを実行する必要があります。 たとえば、自転車レンタル システムでは、ユーザーが自転車の写真をアップロードしたら、小さいサムネイル写真を生成する必要があります。

WebJobs は Azure App Service の一部であり、プログラムやスクリプトを自動的に実行するために使うことができます。 2 種類の WebJobs があります。

  • 継続的。 これらの WebJobs は、連続したループで実行されます。 たとえば、共有フォルダーで新しい写真をチェックするには、継続的 WebJobs を使用できます。
  • トリガー。 これらの WebJobs は、手動またはスケジュールで実行されます。

WebJobs で実行するアクションを決定するには、いくつかの異なる言語でコードを記述できます。 たとえば、シェル スクリプト (Windows、PowerShell、Bash) でコードを記述して、WebJobs をスクリプト化できます。 または、PHP、Python、Node.js、Java でプログラムを作成することもできます。

.NET Framework または .NET Core Framework と C# や VB.NET などの .NET 言語を使って、WebJobs をプログラミングすることもできます。 この場合は、WebJobs SDK を使ってタスクを簡単にすることもできます。 SDK には JobHostConfigurationHostBuilder などのさまざまなクラスが含まれており、Azure App Service とのやりとりに必要なコードの量が減ります。

WebJobs SDK では、C# と NuGet パッケージ マネージャーだけがサポートされています。

Azure Functions

Azure Function は、クラウドで小さいコードを実行するためのシンプルな方法であり、そのコードをホストするために必要なインフラストラクチャについて心配する必要はありません。 関数は、「Azure Functions でサポートされている言語」記事に記載されている C#、Java、JavaScript、PowerShell、Python、または任意の言語で記述できます。 さらに、従量課金プラン オプションでは、コードが実行された時間に対してのみ課金されます。 Azure では、ユーザーからの需要に応じて関数が自動的にスケーリングされます。

Azure Function の作成は、ポータルで関数用のコードを書くことで始めることができます。 または、ソース コード管理が必要な場合は、GitHub または Azure DevOps Services を使うことができます。

Azure Function を作成するには、さまざまなテンプレートから選択します。 次の一覧は、使用できるテンプレートの例です。

  • HTTPTrigger。 HTTP プロトコルで送信された要求に対する応答でコードを実行する場合は、このテンプレートを使います。
  • TimerTrigger。 スケジュールに従ってコードを実行する場合は、このテンプレートを使います。
  • BlobTrigger。 Azure ストレージ アカウントに新しい BLOB が追加されたらコードを実行する場合は、このテンプレートを使います。
  • CosmosDBTrigger。 NoSQL データベース内の新しいドキュメントまたは更新されたドキュメントに対応してコードを実行する場合は、このテンプレートを使います。

Azure Functions は、Azure およびサード パーティ両方のさまざまなサービスと統合できます。 これらのサービスでは、関数をトリガーしたり、関数にデータ入力を送信したり、関数からデータ出力を受信したりできます。

コード優先テクノロジの比較

Azure Functions の方が管理が簡単でコーディング モデルが柔軟であるため、ほとんどの場合は、WebJobs より Azure Functions が選択されます。 ただし、次のような場合は WebJobs を選択する可能性があります。

  • コードを既存の App Service アプリケーションの一部にして、そのアプリケーションの一部として管理したい場合 (たとえば、同じ Azure DevOps 環境内で)。
  • コードをトリガーするイベントをリッスンするオブジェクトを、より細かく制御する必要がある場合。 ここで問題になるオブジェクトは JobHost クラスであり、WebJobs ではその動作をいっそう柔軟に変更できます。
Azure WebJobs Azure Functions
サポートされている言語 WebJobs SDK を使っている場合は C# C#、Java、JavaScript、PowerShell など
自動スケーリング ×
ブラウザーでの開発とテスト ×
従量課金制の価格 ×
Logic Apps との統合 ×
パッケージ マネージャー WebJobs SDK を使っている場合は NuGet Nuget、NPM
App Service アプリケーションの一部にできる ×
JobHost を細かく制御できる ×

利用できるデザイン優先テクノロジとコード優先テクノロジはわかりましたが、選択するものをどのようにして絞り込めばよいでしょうか? 次のユニットでは、この質問について見ていきましょう。