この記事では、次のことについて説明します。
- オーケストレーション フレームワークを使用する利点。
- シナリオに最適なフレームワーク。
Azure には、アプリの構築に使用できる開発者向けのオーケストレーション フレームワークが 2 つ用意されています。Azure Functions でホストされているアプリ用 の Durable Functions と、他のコンピューティング プラットフォームでホストされているアプリ用 の Durable Task SDK です。 オーケストレーションは ワークフローとも呼ばれ、複数の (実行時間の長い) タスクまたはプロセス (多くの場合、複数のシステムを含む) を特定の順序で配置および調整する必要があります。 オーケストレーション フレームワークは 永続的な実行を保証することが重要です。つまり、中断やインフラストラクチャの障害が発生した場合は、障害が発生した時点から別のプロセスまたはマシンで実行を続行できます。 Durable Task SDK と Durable Functions を使用すると、組み込みの状態の永続化と自動再試行によってオーケストレーションが永続的に実行されるため、フォールト トレランスを設計する負担をかけずにオーケストレーションを作成できます。
オーケストレーションを必要とするシナリオ
Durable Task SDK と Durable Functions の恩恵を受ける一般的なオーケストレーション パターンを必要とするシナリオを次に示します。
- 関数チェーン: シーケンシャル ステップを含むシナリオでは、各ステップが前のステップの出力に依存する場合があります。
- ファンアウト/ファンイン: バッチ ジョブ、ETL (抽出、転送、読み込み)、並列処理が必要なシナリオ。
- 人間の相互作用: 2 要素認証の場合、人間の介入を必要とするワークフロー。
- 非同期 HTTP API: 実行時間の長いタスクが完了するまでクライアントが待機したくないシナリオの場合。
次の 2 つのシナリオでは、 関数チェーン パターンを 共有します。
eコマース Web サイトでの注文の処理
たとえば、e コマース Web サイトを作成するとします。 Web サイトでは、顧客の購入に対して注文処理ワークフローが必要になる可能性があります。 ワークフローには、次の一連の手順が含まれる場合があります。
- インベントリを確認する
- 支払いを処理する
- インベントリを更新する
- 請求書の生成
- 注文確認の送信
旅行を計画するための AI エージェントの呼び出し
このシナリオでは、インテリジェントなトリップ プランナーを作成する必要があるとします。 プランナーが実行する必要がある一連の既知の手順があります。
- ユーザー要件に基づいてアイデアを提案する
- ユーザー設定の確認を取得する
- 必要な予約を行う
タスクごとに AI エージェントを実装し、これらのエージェントを特定の順序で呼び出すオーケストレーションを記述できます。
オーケストレーション フレームワークのオプション
Durable Functions と Durable Task SDK はどちらも複数の言語で使用できますが、使用方法にはいくつかの違いがあります。
運用環境に推奨されるオーケストレーション フレームワークを把握することは、プロジェクトに最適なオーケストレーション フレームワークを決定するのに役立ちます。 Durable Task バックエンドはフル マネージドでサポートされていますが、Durable Functions 拡張機能と Durable Task SDK は 、使用する価格モデル と言語 SDK によって安定性が異なります。
次の表は、運用環境での使用に適したクライアント エクスペリエンスを示しています。
| エクスペリエンス | 専用 SKU | 従量課金 SKU |
|---|---|---|
| すべての言語での Durable Functions 拡張機能 | 一般公開 | Preview |
| Durable Task .NET SDK | 一般公開 | Preview |
| Durable Task Python SDK | 一般公開 | Preview |
| Durable Task Java SDK | Preview | Preview |
Durable Functions
Azure Functions の機能として、 Durable Functions は次のような多数の資産を継承します。
- Functions 拡張機能を使用した他の Azure サービスとの統合
- ローカル開発エクスペリエンス
- サーバーレス価格モデル
- Azure App Service と Azure Container Apps でのホスティング
Durable Functions では、 ストレージ バックエンド に状態が保持され、次の機能がサポートされます。
- 2 つの "持ち込み" (BYO) バックエンド:
- Azure Storage
- Microsoft SQL
- Azure マネージド バックエンド:
Durable Functions を使用する場合
ワークフローを使用してイベント ドリブン アプリを構築する必要がある場合は、Durable Functions の使用を検討してください。 Azure Functions 拡張機能では、他の Azure サービスとの統合が提供されるため、イベントドリブン シナリオの構築が容易になります。 たとえば、Durable Functions の場合:
- メッセージが Azure Service Bus に送信されたとき、またはファイルが Azure Blob Storage にアップロードされたときに、オーケストレーションを簡単に開始できます。
- Azure Functions タイマーと HTTP トリガーを使用して、定期的に、または HTTP 要求に応答して実行されるオーケストレーションを簡単に構築できます。
Durable Functions を検討するもう 1 つの理由は、既に Azure Function アプリを作成していて、ワークフローが必要であることを認識している場合です。 Durable Functions プログラミング モデルは関数に似ているため、開発を加速できます。
試してみる
Durable Functions の詳細については、次のいずれかのクイック スタートまたはサンプルを参照してください。
クイックスタート
| クイック スタート | 説明 | |
|---|---|---|
| Durable Task Scheduler | Durable Functions アプリを Durable タスク スケジューラで作成する | Durable Task Scheduler をバックエンドとして使用し、ローカルでテストし、Azure に発行する "hello world" Durable Functions アプリを作成します。 |
| Azure ストレージ | Azure Storage バックエンドを使用して Durable Functions アプリを作成します。 - .NET - Python - JavaScript/TypeScript - ジャワ - PowerShell |
バックエンドとして Azure Storage を使用し、ローカルでテストし、Azure に発行する "hello world" Durable Functions アプリを作成します。 |
| MSSQL | MSSQL を使用して Durable Functions アプリを作成する | バックエンドとして MSSQL を使用し、ローカルでテストし、Azure に発行する "hello world" Durable Functions アプリを作成します。 |
サンプル
| サンプル | 説明 | |
|---|---|---|
| 注文処理ワークフロー | Durable Functions を使用して注文処理ワークフローを作成します。 - .NET - Python |
このサンプルでは、在庫の確認、支払いの処理、在庫の更新、顧客への通知を含む注文処理ワークフローを実装します。 |
| インテリジェント PDF サマライザー | Durable Functions を使用して PDF を処理するアプリを作成します。 - .NET - Python |
このサンプルでは、Durable Functions を使用して、Azure Cognitive Services と Azure OpenAI を使用して PDF を処理および要約する手順を調整する方法を示します。 |
永続タスク スケジューラーを使用した Durable Task SDK
Durable Task SDK は、Durable Task Scheduler で使用する必要があるクライアント SDK です。 Durable Task SDK は、書き込むオーケストレーションを Azure の Durable Task Scheduler オーケストレーション エンジンに接続します。 Durable Task SDK を使用するアプリは、次のような任意のコンピューティング プラットフォームで実行できます。
- Azure Kubernetes Service
- Azure Container Apps
- Azure App Service
- オンプレミスの仮想マシン (VM)
Durable Task Scheduler (現在プレビュー段階の Java SDK) は、オーケストレーション状態の永続化のためにオーケストレーション エンジンとストレージ バックエンドの両方の役割を果たします。 耐久性のあるタスクスケジューラ
- Azure によって完全に管理されるため、管理オーバーヘッドが解消されます
- 高いオーケストレーション スループットを提供します
- オーケストレーションの監視とデバッグのためのすぐに使用するダッシュボードを提供します
- ローカル エミュレーターを含む
Durable Task SDK を使用するタイミング
Azure Functions プログラミング モデルを使用しない場合、Durable Task SDK には、ワークフローを作成するための軽量で比較的固定されていないプログラミング モデルが用意されています。
公式の Microsoft サポートを使用して Azure Kubernetes Services またはオンプレミスの VM でアプリを実行する必要がある場合は、Durable Task SDK の使用を検討する必要があります。 Durable Functions はこれらのプラットフォームでも実行できますが、公式のサポートはありません。
試してみる
Durable Task Scheduler と Durable Task SDK を使用するようにアプリケーションを構成するには、次のいずれかのクイック スタートを実行します。
| クイック スタート | 説明 | |
|---|---|---|
| ローカル開発のクイック スタート | .NET、Python、または Java SDK を使用して、Durable Task SDK と Durable Task Scheduler を使用してアプリを作成します。 | Durable Task Scheduler エミュレーターを使用してファンイン/ファンアウト オーケストレーションをローカルで実行し、ダッシュボードを使用してオーケストレーション履歴を確認します。 |
| Azure Container Apps でのホスティング | Durable Task SDK アプリを Azure Container Apps にデプロイする | Azure Developer CLI を使用して、"hello world" Durable Task SDK アプリをすばやく Azure Container Apps にデプロイします。 |
注
Durable Task Framework (DTFx) は、.NET Durable Task SDK に似たオープンソースの .NET オーケストレーション フレームワークです。 Azure Kubernetes Services などのプラットフォームで実行されるアプリをビルドするために使用 できますが 、 DTFx は公式の Microsoft サポートを受け取りません。