SlideShare a Scribd company logo
DurableFunctionsV2
気になっていたことを勉強がてら実装してみた
目次
 だれ?
 導入
 Functions V2 構築
 host.json書き換え
 書き換えによるStorageの変化
 実装
 実行結果
だれ?
 Tomoyuki Sasaki (SASA)
 個人活動の際は「CryEarth」という屋号を使用しています
 HomePage: http://zatsugaku.info/cryearth/
 Twitter: https://twitter.com/CryEarth_Sasaki
 Github: https://github.com/CryEarth
 Linkedin: https://www.linkedin.com/in/%E6%9C%8B%E5%BF%97-
%E4%BD%90%E3%80%85%E6%9C%A8-94725472/
導入
 今回の環境
 VisualStudio 2017 (15.9.11)
 .Net Core 2.2 (.Net Core 2.2.106 SDK installed)
 Azure Functions V2
 Azure Storage Emulator v5.9
 Azure CLI 2.20.2
 Firefox + Rest Client (実行テスト用)
Functions V2 構築
 「なし」で作成する
 .Net Core 2.2.106 を使用する
 ※VS2017のため、.Net Core 2.2.106 SDKを別途インストール済み
 DurableFunctionsを追加
host.json 書き換え
 「Azure Functions 2.x の host.json のリファレンス」
 上記を元に、host.jsonを修正
 「"routePrefix": "learming"」として「~/api/~」を変える
 「"DurableTask"」:「"hubName"」を変更し、一つのStorageアカウントで複数の
FunctionsV2を扱えるようにする
 ※Storageアカウントの個数制限に絡む要件と思われる部分、トランザクションによっては複数がそ
もそも負荷が大きく無理の可能性もある
 「trackingStorageNamePrefix」上記に絡む部分の一つ
書き換えによるStorageの変化
 書き換えた内容が反映されます
実装
 最初にすること
 「Microsoft.NET.Sdk.Functions」最新へ更新
 「Microsoft.Azure.WebJobs.Extensions.DurableTask」最新へ更新
 コードの修正
 「Durable Functions の単体テスト」の「トリガー関数の単体テスト」を参考に
DurableOrchestrationClient、DurableOrchestrationContext、
DurableActivityContext(又は各Base関数)で作業を行うように修正する
 これは、インスタンスをできるだけ最後まで保持するために使用する
 ※デメリットとしてはActivityにGetInput<T>が追加になるなど、呼ばなければならないメ
ソッドが増える
 Client関数の追加項目
 「Route = “{subPath}/{functionName}」「 string functionName」「string subPath」
 上記を追加することで、内部で呼び出されている関数名などを判断できます
 ※これ以外にもやりようはありますが、面倒だと思います
 実行してエラーが出ないことを確認する
 Clientへ分岐ロジックを追加する
 「functionName」に呼び出し関数名が登録されていることを利用
さらに「SubPath」と「method」を利用して、処理パターンを分岐することで、
受け口は統一しつつも、ロジック部分は分離するということが可能
 ※これが正しい方法かどうかは横に置いておくとして、個人的に同じHTTPなのに毎
回トリガを書きたくなかっただけです
 SubPathで役割を分けて、Function名で内部ロジックを制御
ここから個別のOrchestrationやSubOrchestration、Activityにつなげる構成を
とってみました
 ※サンプルなので、デフォルトのコードをそのまま流用してます
実行結果
 FirefoxのRestClientを利用してテスト
 サンプルコードのままなので、サンプルを実行した時と同じ結果になります
 存在しないメソッドを呼び出した場合
APPENDEX
今回のサンプルコード
 GitHubに置いています
 CryEarth/DurableFunctionsV2Learning
 参考元などはコードに記載しております

More Related Content

PDF
Windows コンテナを AKS に追加する
PDF
運用の現場での監視運用ツールの活用
PDF
201804 about su2
PDF
Azureで、動け動け動けconcrete5 !!
PPTX
shinken monitoringについて真剣に調べてみた結果
PDF
会社でClojure使ってみて分かったこと
PDF
Ansible2とOpenStackの関係
PPTX
MUGT02 - vamp demo
Windows コンテナを AKS に追加する
運用の現場での監視運用ツールの活用
201804 about su2
Azureで、動け動け動けconcrete5 !!
shinken monitoringについて真剣に調べてみた結果
会社でClojure使ってみて分かったこと
Ansible2とOpenStackの関係
MUGT02 - vamp demo

What's hot (20)

PPTX
Virtual Kubelet and Virtual Node
PDF
CIツールのまとめとSide CI - CIツール勉強会@福岡
PPTX
AKS (k8s) Hands on Lab Contents
PDF
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
PDF
Rancher使ってみたよ(初心者向け)
PPTX
Inside of swift
PPTX
Automatic api document generation 101
PDF
Kubernetes Operator for vSphere VM
PDF
OpenStack Now!
PDF
Reactを使ったVR環境
PPTX
OpenStack本番環境の作り方
PPT
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
PDF
Start SQL Server with Docker
PDF
さくらのインフラコード
PDF
Ansible2.0と実用例
PDF
[MW01] ご注文は Linux + Docker ですか? Windows だけじゃない App Service を使い切る
PPTX
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PDF
20140920 大分進化したメディアサービスで遊んでみた
Virtual Kubelet and Virtual Node
CIツールのまとめとSide CI - CIツール勉強会@福岡
AKS (k8s) Hands on Lab Contents
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Rancher使ってみたよ(初心者向け)
Inside of swift
Automatic api document generation 101
Kubernetes Operator for vSphere VM
OpenStack Now!
Reactを使ったVR環境
OpenStack本番環境の作り方
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Start SQL Server with Docker
さくらのインフラコード
Ansible2.0と実用例
[MW01] ご注文は Linux + Docker ですか? Windows だけじゃない App Service を使い切る
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
CloudFoundry 2 on Apache CloudStack 4.2.1
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
20140920 大分進化したメディアサービスで遊んでみた
Ad

Similar to Durable Functions (Core) 気になっていたことを勉強がてら実装してみた (20)

PDF
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
PDF
アカツキはどのようにAWSを活用しているか #jawsug
PDF
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
PDF
Play framework 2.0のおすすめと1.2からのアップグレード
PDF
VSCodeで始めるAzure Static Web Apps開発
PDF
Cell/B.E. プログラミング事始め
PPTX
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
PDF
ETロボコン2020 競技会場システムのおはなし
PDF
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
PPTX
Logic Apps/Flow Update Summary
PDF
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
PPTX
13016 n分で作るtype scriptでnodejs
PPTX
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
PPTX
2022年ASP.NETCore2.2~6.0の旅.pptx
PPTX
Azure Functions あれこれ
PDF
Interact2015:Host Guardian Service ってなに?(仮)
PDF
Java/Androidセキュアコーディング
PDF
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
PDF
PlayFramework1.2.4におけるWebSocket
PDF
20150127 jawsug京王線 ec2_config
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
アカツキはどのようにAWSを活用しているか #jawsug
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Play framework 2.0のおすすめと1.2からのアップグレード
VSCodeで始めるAzure Static Web Apps開発
Cell/B.E. プログラミング事始め
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
ETロボコン2020 競技会場システムのおはなし
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
Logic Apps/Flow Update Summary
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
13016 n分で作るtype scriptでnodejs
Azure DevOpsとVisual Studio App CenterをモバイルアプリのCI/CDに活用しよう
2022年ASP.NETCore2.2~6.0の旅.pptx
Azure Functions あれこれ
Interact2015:Host Guardian Service ってなに?(仮)
Java/Androidセキュアコーディング
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
PlayFramework1.2.4におけるWebSocket
20150127 jawsug京王線 ec2_config
Ad

Durable Functions (Core) 気になっていたことを勉強がてら実装してみた