伝説のどいつまの伝説~失敗編~

岩美に永住したい新米エンジニアのあれやこれやな話。

【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 種類の永続関数を使用できる。

  1. クライアント関数 : オーケストレーションインスタンス作成のエントリポイント
  2. オーケストレーター関数 : アクションが実行される方法と実行順序を記述する
  3. アクティビティ関数 : オーケストレーションの作業単位。関数には実際の作業が含まれる。

Logic Apps も複雑なサーバーレスワークフローを構築できるが、Durable との違いとして、以下が挙げられる。

比較対象 Azure Durable Functions Azure Logic Apps
開発 コード優先 (命令型) 設計優先 (宣言型)
接続 組み込みのバインド型 (約 10 種類)。
カスタム バインドのためにコードを書くことができる
コネクタの豊富なコレクション。
B2B 向けの Enterprise Integration Pack。
カスタム コネクタも構築できる
アクション 個々のアクティビティが Azure 関数。
アクティビティ関数のコードを書く
既製のアクションの豊富なコレクション。
カスタム コネクタを介してカスタム ロジックを統合する
監視 Azure Application Insights Azure portal、Azure Monitor ログ
管理 REST APIVisual Studio Azure portalREST APIPowerShellVisual Studio
実行コンテキスト ローカルまたはクラウドで実行 クラウドでのみ動作

Durable Functions に基づいてワークフローを設計する

次の演習用に、設計承認プロセスのワークフローを想定する。
手順に基づき、Durable で使用する関数の種類にどう対応するのかを決定する。

ワークフロー関数 Durable Functions の種類
承認を受けるためにプロジェクト設計提案を送信する クライアント 関数
承認タスクを関連するスタッフ メンバーに割り当てる オーケストレーション 関数
承認タスク アクティビティ 関数
エスカレーション タスク アクティビティ 関数

演習 - Durable Functions を使用してワークフローを作成する

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201209123425p:plain
f:id:d01tsumath:20201209123845p:plain
f:id:d01tsumath:20201209124114p:plain
f:id:d01tsumath:20201209124307p:plain
f:id:d01tsumath:20201209124958p:plain

本日の内容は以上です。