想定してるアプリケーションをAzure上にデプロイする際のアーキテクチャをざっくりと示すと以下のイメージになります。
このようにAzure FunctionsのBlobトリガーなどAzureのストレージアカウントと連携するようなアプリケーションを開発しているとローカル開発の進め方で困る場面があります。
Azureを使って開発用のストレージアカウントリソースを払い出すのも良いのですが、個人的にはローカルで動かせるものは動かしてしまいたいという欲望があります。
そこでAzuriteを使ってローカル開発環境を整えるアプローチを試してみます。Azuriteを使うとローカル環境でBlob Storage、Queue Storage、Table Storageそれぞれのエミュレータを起動できます。
こうすることで、Webアプリケーション側は、ローカルの10000ポートで起動しているBlob Storageにファイルをアップロードする、ファイルアップロードを検知して関数アプリを起動するという流れをローカル環境に閉じて動かすことができます。
WebアプリケーションをPythonのFastAPI、関数アプリをazure-functions-core-toolsを使って開発している場合は以下のイメージでローカル開発環境が構築されることになります。
アプリケーションをエンドツーエンドで起動するにのいくつもプロセスを立ち上げなければいけないのはやや億劫だがとりあえずこの構成で開発を進めてみることにしてみます。
ゆくゆくはGitHub ActionsのCIでのテスト時にもAzuriteを立ち上げてテストを回していきたいですね。
おわり。