【1 人アドベントカレンダー 2020】第 9 日目
だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com
※ 今日は大寝坊かましたので午前中にできなかった...
今日の項目内容
Durable Functions を使って実行時間の長いサーバーレス ワークフローを作成する
- Durable Functions とは
- Durable Functions に基づいてワークフローを設計する
- 演習 - Durable Functions を使用してワークフローを作成する
学習内容まとめ
Durable Functions とは
Durable Functions は Azure Functions の拡張機能で、サーバーレス環境で複雑なステートフル機能を実装できる。
Azure Functions はステートレス環境で動作するのに対し、Durable Functions は複数の関数の呼び出しにまたがった状態を維持できる。
- 1 つ以上の外部イベントを非同期的に待機し、イベントに応じて一連のタスクを実行できる
- 複数の関数を連結することができる
- 関数を実行する順序を指定できる
- 状態は自動的に管理される
などの特徴があげられる。
また、オーケストレーション関数を使用して、ステートフルワークフローを定義できる。
オーケストレーション関数の利点として、
- コードでワークフローを定義できる
- 関数は同期 / 非同期どちらでも呼び出しが可能
- 関数の進行状況に応じて自動的にチェックポイントが設定される
Durable Functions では 3 種類の永続関数を使用できる。
- クライアント関数 : オーケストレーションのインスタンス作成のエントリポイント
- オーケストレーター関数 : アクションが実行される方法と実行順序を記述する
- アクティビティ関数 : オーケストレーションの作業単位。関数には実際の作業が含まれる。
Logic Apps も複雑なサーバーレスワークフローを構築できるが、Durable との違いとして、以下が挙げられる。
比較対象 | Azure Durable Functions | Azure Logic Apps |
---|---|---|
開発 | コード優先 (命令型) | 設計優先 (宣言型) |
接続 | 組み込みのバインド型 (約 10 種類)。 カスタム バインドのためにコードを書くことができる |
コネクタの豊富なコレクション。 B2B 向けの Enterprise Integration Pack。 カスタム コネクタも構築できる |
アクション | 個々のアクティビティが Azure 関数。 アクティビティ関数のコードを書く |
既製のアクションの豊富なコレクション。 カスタム コネクタを介してカスタム ロジックを統合する |
監視 | Azure Application Insights | Azure portal、Azure Monitor ログ |
管理 | REST API、Visual Studio | Azure portal、REST API、PowerShell、Visual Studio |
実行コンテキスト | ローカルまたはクラウドで実行 | クラウドでのみ動作 |
Durable Functions に基づいてワークフローを設計する
次の演習用に、設計承認プロセスのワークフローを想定する。
手順に基づき、Durable で使用する関数の種類にどう対応するのかを決定する。
ワークフロー関数 | Durable Functions の種類 |
---|---|
承認を受けるためにプロジェクト設計提案を送信する | クライアント 関数 |
承認タスクを関連するスタッフ メンバーに割り当てる | オーケストレーション 関数 |
承認タスク | アクティビティ 関数 |
エスカレーション タスク | アクティビティ 関数 |
演習 - Durable Functions を使用してワークフローを作成する
サンドボックスを用いて演習を行う。
本日の内容は以上です。