Azure Durable Functions入門
- POST
はじめに この記事では、Azure Durable Functionsについて解説します。
Azure Durable Functions Durable Functionsは、Azure Functionsの拡張機能で、状態を保持する(ステートフルな)ワークフローを実現可能にする機能です。
複数の処理を順番や並列で実行し、状態管理や再実行といった処理をユーザーは実装する必要がなく、Durable Functions側で自動で行うため、開発者はビジネスロジックの実装に集中することができます。
また、HTTPトリガー関数の場合3分50秒のタイムアウト制限があるため、長時間の処理を行うことができませんが、Durable Functionsを使うことで、長時間の処理を行うことが可能になります。 Azure公式ドキュメント: Azure Durable Functionsとは Azure Durable Functionsのアーキテクチャ Durable Fucntionsは以下の4つの関数で構成されています。
クライアント関数 (Client Function)
オーケストレーター関数 (Orchestrator Function)
アクティビティ関数 (Activity Function)
エンティティ関数 (Entity Function)
それぞれの次の項で、それぞれの関数について解説していきます。 Azure公式ドキュメント: Azure Durable Functionsにおける各関数の説明 クライアント関数 Durable Functionsをスタートさせるトリガー関数です。
通常のFunctionsと同様にHTTPトリガーやタイマートリガーなどイベントドリブンで実装されており、 定義したトリガーからイベントなどを受け取って、オーケストレーター関数を起動するのがこの関数の役目です。 オーケストレーター関数 後述するアクティビティ関数の実行を管理する役割の関数です。
後述するアクティビティ関数や他の関数を記載された通りに起動します。 ただし注意点として、オーケストレーター関数は 決定論的(deterministic) である必要があります。
決定論的とは、「同じ入力なら、いつ呼んでもまったく同じ動きをする」ように書く必要があることを示します。
Durable FunctionsではAzureサービスの障害時やサービスメンテナンス時などで処理が中断された場合に、オーケストレーター関数を再実行することができます。
再実行時に実行のたびに結果が変わるような処理が入っていると、予期しない動作を起こす危険性があるため、現在時刻やランダム値を使った処理など、毎回結果が変わるようなコードをオーケストレーター関数で定義することはアンチパターンとされています。