次の方法で共有


Azure Functions Durable Task Scheduler (プレビュー)

Durable Task Scheduler は、Azure で永続的な実行を提供します。 永続的な実行は、自動再試行と状態永続化によってエラーと中断を処理するコードを実行するためのフォールト トレラントなアプローチです。 永続的な実行は、次のようなシナリオに役立ちます。

  • 分散トランザクション
  • マルチエージェント オーケストレーション
  • データ処理
  • インフラストラクチャ管理など。

オーケストレーション フレームワーク

Azure には、フォールト トレランスを設計する必要なく、任意のコンピューティング環境で実行されるステートフル アプリを構築するために使用できる、開発者向けの 2 つのオーケストレーション フレームワークが用意されています。 Durable Task Scheduler は、次のオーケストレーション フレームワークで使用できます。

  • デュラブル ファンクションズ (Durable Functions)
  • Durable Task SDK

プロジェクトに適したオーケストレーションについて説明します。

アーキテクチャ

Durable Task Scheduler オーケストレーション フレームワークでは、Azure Resource Manager を使用して 、Microsoft.DurableTask/scheduler 型のスケジューラ インスタンスを作成できます。 各 スケジューラ リソースには、次の目的で最適化された専用のコンピューティング リソースとメモリ リソースが内部的に用意されています。

  • オーケストレーター、アクティビティ、エンティティの作業項目のディスパッチ
  • 待機時間を最小限に抑えた大規模な履歴の格納とクエリ
  • Durable Task Scheduler ダッシュボードを使用した豊富な監視エクスペリエンスの提供

BYO ストレージ プロバイダーとは異なり、Durable Task Scheduler プロバイダーは、Durable Task Framework の特定のニーズに合わせて最適化された専用のサービスとしてのバックエンドです。

次の図は、Durable Task Scheduler バックエンドのアーキテクチャと、接続されているアプリとの対話を示しています。

Durable Task Scheduler アーキテクチャの図。

運用上の分離

Durable Task Scheduler は、アプリとは別のリソースとして Azure で実行されます。 この分離は、いくつかの理由で重要です。

  • リソース消費量の削減
    (BYO ストレージ プロバイダーではなく) Durable Task Scheduler などのマネージド スケジューラを使用すると、パーティションやその他の複雑な状態ストアの相互作用を管理するオーバーヘッドによって発生する CPU とメモリのリソース消費量が削減されます。

  • 障害の分離
    スケジューラをアプリから分離すると、連鎖障害のリスクが軽減され、接続されているアプリの全体的な信頼性が向上します。

  • 独立したスケーリング
    スケジューラ リソースは、インフラストラクチャ リソース管理とコストの最適化を向上するために、アプリとは別にスケーリングできます。 たとえば、複数のアプリで同じスケジューラ リソースを共有できます。これは、複数のチームまたはプロジェクトを持つ組織に役立ちます。

  • サポート エクスペリエンスの向上
    Durable Task Scheduler はマネージド サービスであり、基になるインフラストラクチャに関する問題に対する効率的なサポートと診断を提供します。

アプリの接続

アプリは gRPC 接続を介してスケジューラ リソースに接続し、TLS を使用してセキュリティ保護され、アプリの ID によって認証されます。 エンドポイント アドレスは、 {scheduler-name}.{region}.durabletask.ioのような形式です。 たとえば、myscheduler-123.westus2.durabletask.io のようにします。

作業項目は、プッシュ モデルを使用してスケジューラからアプリにストリーミングされ、エンド ツー エンドの待機時間が短縮され、ポーリングの必要性が排除されます。 アプリでは、複数の作業項目を並行して処理し、対応するオーケストレーション、アクティビティ、またはエンティティ タスクが完了したときに、スケジューラに応答を返すことができます。

ステート管理

Durable Task Scheduler は、状態管理用に別のストレージ アカウントを使用せずに、オーケストレーションとエンティティの状態を内部的に管理します。 内部状態ストアは Durable Functions と Durable Task SDK で使用できるように高度に最適化されているため、持続性と信頼性が向上し、待機時間が短縮されます。

スケジューラは、メモリ内ストレージと永続内部ストレージの組み合わせを使用して状態を管理します。

  • メモリ内ストアは、有効期間の短い状態に使用されます。
  • 永続的なストアは、復旧と複数インスタンスのクエリ操作に使用されます。

機能概要

Durable Task Scheduler オーケストレーション フレームワークの 1 つを実装する場合は、いくつかの重要なハイライトを利用できます。

Durable Task Scheduler ダッシュボード

スケジューラ リソースが作成されると、対応するダッシュボードがすぐに提供されます。 ダッシュボードには、すべてのオーケストレーションとエンティティ インスタンスの概要が表示され、次のことができます。

  • さまざまな条件ですばやく絞り込みます。
  • 状態、期間、入力/出力など、オーケストレーション インスタンスに関するデータを収集します。
  • インスタンスをドリルダウンして、サブオーケストレーションとアクティビティに関するデータを取得します。
  • オーケストレーション インスタンスの一時停止、終了、再起動などの管理操作を実行します。

ダッシュボードへのアクセスは、 ID とロールベースのアクセス制御によって保護されます。

詳細については、「 Durable Task Scheduler ダッシュボードを使用したオーケストレーションのデバッグと管理」を参照してください。

複数のタスク ハブ

状態は 、タスク ハブに永続的に保持されます。 タスク ハブ:

  • オーケストレーション インスタンスとエンティティ インスタンスの論理コンテナーです。
  • 状態ストアをパーティション分割する方法を提供します。

1 つのスケジューラ インスタンスを使用すると、異なるアプリで使用できる複数のタスク ハブを作成できます。 各タスク ハブには、独自の 監視ダッシュボードが表示されます。 タスク ハブにアクセスするには、呼び出し元の ID に必要なロールベースのアクセス制御 (RBAC) アクセス許可が必要です。

複数のタスク ハブを作成すると、個別に管理できるさまざまなワークロードが分離されます。 例えば、あなたは次のことができます:

  • 環境 (開発、テスト、prod) ごとにタスク ハブを作成します。
  • 組織内のさまざまなチームのタスク ハブを作成します。
  • 複数のアプリ間で同じスケジューラ インスタンスを共有します。

スケジューラ共有は、複数のチームがオーケストレーションを必要とするシナリオがある場合にコストを最適化する優れた方法です。 1 つのスケジューラ インスタンスに無制限のタスク ハブを作成できますが、同じリソースを共有します。1 つのタスク ハブが頻繁に読み込まれている場合は、他のタスク ハブのパフォーマンスに影響する可能性があります。

ローカル開発用エミュレーター

Durable Task Scheduler エミュレーターは、Docker コンテナーでローカルに実行されるスケジューラ バックエンドの軽量バージョンです。 これを使用すると、次のことができます。

  • Durable Function アプリを開発してテストします。Azure にデプロイする必要はありません。
  • Azure の場合と同様に、オーケストレーションとエンティティを監視および管理します。

既定では、エミュレーターは default という名前の 1 つのタスク ハブを公開します。 複数のタスク ハブを公開するには、エミュレーターを起動し、タスク ハブ名のコンマ区切りの一覧で DTS_TASK_HUB_NAMES 環境変数を指定します。 たとえば、 taskhub1taskhub2 という名前の 2 つのタスク ハブを有効にするには、次のコマンドを実行します。

docker run -d -p 8080:8080 -e DTS_TASK_HUB_NAMES=taskhub1,taskhub2 mcr.microsoft.com/dts/dts-emulator:latest

エミュレーターは内部的にオーケストレーションとエンティティの状態をローカル メモリに格納するため、運用環境での使用には適していません。

次のコマンドを実行すると、使用可能なすべてのエミュレーター バージョンを確認できます。

curl -s https://mcr.microsoft.com/v2/dts/dts-emulator/tags/list

自動消去保持ポリシー

古いオーケストレーション データは、効率的なストレージの使用を確保するために定期的に消去する必要があります。 Durable Task Scheduler の自動バックアップ機能は、オーケストレーション インスタンスのクリーンアップを自動的に管理するための、合理化された構成可能なソリューションを提供します。 Durable Task Scheduler の自動消去保持ポリシー設定に関する詳細情報。

制限事項と考慮事項

  • 利用可能なリージョン:

    Durable Task Scheduler リソースは、現在、Azure リージョンのサブセットに作成できます。 次のコマンドを実行して、サポートされているリージョンの一覧を取得できます。

    az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table
    

    Durable Functions アプリと Durable Task Scheduler リソースに同じリージョンを使用して、パフォーマンスと特定のネットワーク関連機能を最適化することを検討してください。

  • スケジューラ クォータ:

    現在、サブスクリプション ごとにリージョンごとに最大 5 つのスケジューラを 作成できます。

  • 最大ペイロード サイズ:

    Durable Task Scheduler には、次の JSON シリアル化されたデータ型に対する最大ペイロード サイズ制限があります。

    データの種類 最大サイズ
    オーケストレーターの入力と出力 1 MB
    アクティビティの入力と出力 1 MB
    外部イベント データ 1 MB
    オーケストレーションのカスタム状態 1 MB
    エンティティの状態 1 MB
  • 機能の同等性:

    次のような一部の機能は、Durable Task Scheduler バックエンドではまだ使用できない場合があります。

    Durable Task Scheduler バックエンドが一般提供に近づくと、機能の可用性は変更される可能性があります。 問題を報告したり、新機能を要求したりするには、 Durable Task Scheduler GitHub リポジトリで問題を送信します。

次のステップ