エンジニアが趣味程度で利用しているDurable Functionsの記事です
メモ程度に記述するので情報の網羅性や正確性には欠けるかもです、、
この記事に関係するもの
- Azure
- Azure Functions
- Durable Functions
Durable functionsとは
Durable functionsはAzure Functionsの拡張機能であり、サーバーレスコンピューティングの環境でステートフルな関数を記述することが可能になる機能。
Durable functionsは主に以下の3つで構成される。
- クライアント関数
- 処理のトリガーの受け取り口となる関数。トリガーをHTTPリクエストに設定した場合は、HTTPへのリクエストがあるたびにHTTPのパラメータなどから情報を受け取り、オーケストレーション関数を起動する。
- オーケストレーション関数
- その名の通り処理の大まかな流れを制御する関数。基本的に複数のアクティビティ関数に細かい処理を任せ、オーケストレーション関数自身が大きな処理を担うことはない。
- アクティビティ関数
- 具体的な処理を記述する。
Durable Functionsを利用するメリット
Durable functionsを利用して感じたメリットは3つある。
1. 複雑なワークフローを定義可能
Durable functionsを利用してステートフルな関数にすると、タスクハブ(ストレージサービスへの状態の保存)を利用して以前の状態を保持することができる。そのため、ステートレスでは実装ができなかった複雑なワークフローも定義することが可能となる。
具体的には、各アクティビティ関数を関数チェーンで直鎖的につなげたり、ファンイン/ファンアウトで並列処理を実現したりすることが可能。(接続パターンの詳細な情報はこちら。)
2. 実行時間の制限を回避可能
ステートフルになり状態が保持されることで、複数の関数が連携することが可能となり、長時間の実行が可能となる。
3. トレース可能
ステートフルな関数のため、各関数の実行状況やデータの流れをトレースすることが可能になる。