超イケなDurable Functionsで非同期HTTP APIをつくっちゃお😎
2022-12-03
azblob://2022/11/24/eyecatch/2022-12-03-async-http-api-durable-functions-000.png

みなさんお久しぶりです✨ 
最近、増量超えて太っちゃったりぃぽぽです!笑

さてさて、みなさんはDurable Functionsって聞いたことありますか? 
わたしは最近業務で知りまして、Durable Functionsがイケすぎて感動したので、 
今回はDurable Functionsについて備忘録的におはなしできたらな、と思います!✨

💛 Durable Functionsってなにもの🙄

Durable Functionsは、サーバーレス コンピューティング環境でステートフル関数を記述できる 
Azure Functionsの拡張機能です。 
って...何言ってるかわかんないですよね😥 
私も最初は公式ドキュメント読んではてながいっぱい頭に浮かんでいました笑

まあざっくり言いますと、 
Azure Functionsで書くと複雑になりがちな並列処理や関数チェーンなどなどを 
短いコードで簡単にサーバーレスで書けちゃうよ! 
ってな感じの天才的なやつなんです✨

💛 Durable Functionsでできること

Durable Functionsでできることをこの記事でも軽くご紹介しますね😎

関数チェーン

複数の関数が特定の順序で実行できます。 
ある関数の出力が別の関数の入力に適用されるわけです。

ファンアウト/ファンイン

複数の関数を並列で実行して、すべての関数が完了するまで待機するという操作ができます。 
複数の関数から返される結果に基づいて集計作業が行えるんですね。

非同期 HTTP API

外部クライアントとの間の実行時間の長い操作の状態を調整することができます。 
実際に業務で使用した際も、外部クライアントとの間でタイムアウトが超えてしまって、 
Azure FunctionsからDurable Functionsに移行したっていう経緯でした👀

💛 マイメンすぎる3つの関数

Durable Functionsで非同期 HTTP APIをつくるにあたって、 
避けては通れない3つのマイメンがいるのでご紹介します✨ 
※ 詳細はドキュメントをみてね💗

クライアント関数

エントリーポイントになる関数です。 
HTTPをトリガーにしてオーケストレーションを起動します。 
オーケストレーター関数をトリガーするだけでなく、実行中のオーケストレーションと対話できます。

オーケストレーター関数

アクションの実行順序を管理する(アクティビティ関数を制御する)関数です。 
1つのオーケストレーター関数にアクティビティ関数や外部イベントの待ち受け、HTTP タイマーなど 
いろんなアクションを設定できます! 
コードの記述方法に厳密な制約があるので注意⚠

アクティビティ関数

アクションを実行する(個々の処理を行う)関数です。 
ネットワークの呼び出しやCPU負荷の高い操作によく使われるみたいで、 
オーケストレーター関数に値を返すことができます。

3つの関連イメージ

3つの関数の関連性はざっくりですが、以下図の通りです。 
こうやってみるとなんとなーくイメージがわいてきますよね!✨

 全体イメージ

💛 非同期 HTTP APIをつくっちゃいHowTo😎

ここまで理解できればもう完璧✨ 
Durable Functionsマスターへの道もすぐそこです😎🤙🏾 
それでは早速、Durable Functionsで非同期 HTTP APIをつくっちゃいましょ~💗

Visual Studioがサクッと自動でつくってくれちゃう天才的なことをやってるので 
今回はその方法でつくりましょう!

1. 新しいプロジェクトの作成

まずは、新しいプロジェクトを作成しちゃいましょう! 
プロジェクトのテンプレートはAzure Functiosを選択してください。

2. 新しいアプリケーションの作成

つぎはAzure Functiosのアプリケーションを作成しましょう。 
このとき、Durable Functios Orchestrationを選択してくださいね。

3. 完成✨

これでデフォルトのDurable Functiosが作成できちゃいました✨ 
あとは自分の好きなようにあそんじゃいましょう😎 
ちなみに、デフォルトだとHTTP Triggerでオートスケーションが開始されているようになっているので、 
これで非同期 HTTP APIができちゃってます笑

Durable Functionsをマスターしてみんなでイケになっちゃお~🧚🏾‍♀️🤙🏾

ここまでこれたみんなはDurable Functiosマスターだっ✨ 
最初に紹介した通り、Durable Functiosではいろんなことできちゃうので 
ぜひぜひ、今年中にチャレンジして超イケに今年を締めくくってみてはいかがでしょうか😎