こんにちは、先日娘が「ママとイオンの矢印に行ってきた!」というので一体何のことかと思ったら無印(良品)のことだと気づいて大笑いした木村です。
先日、Azure Functions durable task schedulerがパブリックプレビューとしてリリースされました。早速こちらを試してみたので、その体験を共有したいと思います。
Durable task Schedulerとは?
Durable task Schedulerは、Azure FunctionsのDurable Functionsにおける新しいストレージプロバイダーです。ストレージプロバイダーは、Durable Functionsのオーケストレーションやアクティビティの状態を管理するために使用されます。
既存のストレージプロバイダーと比較して、Durable task schedulerは以下のような特徴を持っています。
- Azure管理型リソース: 独自のストレージアカウントを用意する必要がなく、Azureが完全に管理
- 高性能とスケーラビリティ: オーケストレーションとエンティティの処理スループットが向上し、大規模なアプリケーションに最適
- ダッシュボード: オーケストレーションの状態やエラーを視覚的に確認でき、管理やデバッグが容易
- セキュリティ: RBACを使用したエンタープライズグレードの認証
- ローカルエミュレーター: 開発環境でのデバッグを簡素化するためのエミュレーターを提供
これにより、より大規模なアプリケーションを構築することができ、また、オーケストレーションの実行状況をより効率的に管理できるようになります。
今回はその中でも特に、ダッシュボードを通じてオーケストレーションの動作を視覚的に確認できる点をお伝えしたいと思います。
試してみた手順
1. Durable Functionsのサンプルプログラムを作成
まず、C#でDurable Functionsのサンプルプログラムを作成しました。これは、Azure Functionsの公式ドキュメントの通りに作成しました。
dotnetのバージョンだけ、dotnet 9に変更しました。
2. ストレージプロバイダーをDurable task schedulerに変更
次に、以下のドキュメントに従い、ストレージプロバイダーをDurable Task Schedulerに変更しました。
まず、NugetパッケージのMicrosoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged
とMicrosoft.Azure.Functions.Worker.Extensions.DurableTask
を更新します。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask --prerelease
次に、host.json
を更新します。storageProvider
の所ですね。
{ "extensions": { "durableTask": { "hubName": "%TASKHUB_NAME%", "storageProvider": { "type": "azureManaged", "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING" } } } }
そして、hubName
とDURABLE_TASK_SCHEDULER_CONNECTION_STRING
をlocal.settings.json
で指定します。
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None", "TASKHUB_NAME": "default" } }
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
の値は、この後起動するdurable task scheduler emulatorのURLを指定します。
3. durable task scheduler emulatorを起動
dockerを用いて、durable task scheduler emulatorを起動します。
docker pull mcr.microsoft.com/dts/dts-emulator:v0.0.5 docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:v0.0.5
これでdurable task scheduler emulatorがlocalhost:8080
で起動し、ダッシュボードがlocalhost:8082
で起動します。
durable task scheduler emulatorが起動したら、Durable Functionsのサンプルプログラムを実行します。
func start
4. ダッシュボードでオーケストレーションを確認
ブラウザでダッシュボードにアクセスすると以下のような画面になります。
まだオーケストレーションは実行されていないので、履歴は空になっています。
オーケストレーションを起動するために、以下のコマンドを実行します。
{HTTPトリガーのURL}
は、func start
を実行した際に表示されるURLを使用してください。
curl -X POST {HTTPトリガーのURL} -d '{}'
ダッシュボードを更新すると、オーケストレーションが実行されていることが確認できます。
オーケストレーションの状態や、アクティビティの状態が表示されます。
5. Azureにデプロイ
では、このDurable FunctionアプリをAzureにデプロイしてみます。
公式ドキュメントに従い、プレミアムプランまたはApp ServiceプランのFunction Appを作ります。今回はApp Serviceプランで作成しました。
続いて、「Durable Functions」タブで、ストレージバックエンドに「Durableタスクスケジューラ」を選択します。リージョンはまだ日本は選べず、Pricing plansもDedicatedのみです。Pricing plansは、今後はConsumptionが選べるようになるようなので楽しみに待つことにします。
リソースの作成に成功したら、Durable Functionアプリをデプロイします。リソースの作成は私が行ったときには15分くらいかかりましたので気長に待ちましょう。
6. ダッシュボードに接続
次に、Durable task schedulerのリソースに移動し、概要の「タスクハブ名」をクリックします。
「アクセス制御(IAM)」から、アクセスするプリンシパルにDurable Task Data Contributor
を割り当てます。
私が試したときには、共同作成者のロールのアカウントだと画面にはアクセスできますが、unknown error
となってオーケストレーションの状態が取得できませんでしたので忘れず割り当てをします。
割り当て後、概要の「ダッシュボードURL」にアクセスすると、ダッシュボードにアクセスできます。
7. オーケストレーションを動かす
では、オーケストレーションを動かしてみましょう。Funciton Appsのページから、デプロイしたHTTPトリガー関数のURLを取得して先ほどと同じくPOSTメソッドで呼び出します。
そして、ダッシュボードにアクセスしてみます。
このように、ダッシュボードでは、オーケストレーションの状態や履歴が一目で分かり、開発にも運用にも非常に便利だと感じました。
感想
Durable task schedulerを使うことで、Durable Functionsの開発と運用がさらに効率的になると感じました。
特に、ダッシュボードではオーケストレーションの状況を視覚的に確認できるので、開発時のデバッグや運用時の状況確認が容易になります。今後の正式リリースが楽しみです。
皆さんの参考になれば幸いです。
サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com