Azure Antennaさん主催の、「Azure Functions と キューで構築するNoOpsスケーラブルバッチ処理基盤」セミナーに参加しました。
https://azure.connpass.com/event/87650/
もともと、Azure Functionsの内容が知りたいと思って参加したのですが、その他にもStorageのキューやBLOB、Cosmos DBなど、Azureのサービスを組み合わせた内容となっており、非常に有意義でした。
構成的には、Azure Storageのメッセージングキューに対してCSVからデータを流し込み、キューからAzure Functionsを叩き、Cosmos DBに格納する、というものです。
まずはPortalからAzure Functionsを設定します。Functionsの種類としては「従量制」と「App Service」に大別できます。従量制はAWSのLambdaのように、リクエストをきっかけとして、最大10分のタスクを動作させることができます。App Serviceは、永続的にFunctionをWebアプリとして配置します。このとき、App Service PlanはStandard以上を選択する必要があるため、、無料のF1プランでは動かすことはできません。また、App Serviceですので、サイトを落としている間でも課金が発生するため、検証の際は要注意です。
Azure Functionsは様々な言語で作成することができますが、Visual Studioを使うとC#のプロジェクトを作成することができます。
Visual C# > Cloud > Azure Functionsでプロジェクト作成 pic.twitter.com/LwZOCmEMdH
— とりカシュ (@torikasyu) May 30, 2018
そしてStorageのキューを作成します。
https://azure.microsoft.com/ja-jp/services/storage/queues/
1つのキューに1つのデータを入れることにより、Azure Functionsをバッチ的に動作させることができるようになります。
また、Storageにテストデータを入れたりする時には、Azure Storage Explore(アプリ)をインストールして使用すると便利です。
https://azure.microsoft.com/ja-jp/features/storage-explorer/
そして、Fuctionsから使用するCosmos DBを設定します。Cosmos DBについては、先週詳しく聞いたので、その知識が役に立ちました。

これで全体の構成はできたので、CSVからStorageキューにデータを流すC#プログラムを流して動作確認しました。
そして、Functionsの実行状況やパフォーマンスをApplication Insightsを使って監視できるようにします。
https://azure.microsoft.com/ja-jp/services/application-insights/
これにより、Azure Monitorでパフォーマンスの数値を監視できるようになりました。
Azureのサービスを効果的に組み合わせてシステム構築ができることが理解できました。
今回の情報を元に、WebAPIとしてAzure Functionsを起動し、Cosmos DBのデータを読み書きするアプリを作成したいと思います。
コメント