浅草橋青空市場

Microsoft Azure のニュースや情報を中心にあれこれと

Azure FunctionsのBLOBトリガーとEvent Gridのレスポンス比較

Azure FunctionsでBLOBの更新を契機に処理を開始する場合、BLOBトリガーを利用する場合と、Event GridのBLOBイベントで発火させる場合とがあるかと思います。諸方面で前者は非推奨な扱いになっていますが、実際にどんなものか実測してみました。

測定方法

VM上でスクリプトを回してコンテナーにファイルをput、Functions側ではトリガーを受けてTable Storageに結果を記録して所要時間を計測するというごくシンプルな方法。Functionsのプランによる差異も計測しました。

測定結果1 BLOBトリガー

f:id:yhara90:20180829021717p:plain

だいたい5,000オブジェクト毎に階段状に処理時間が増えました。 ドキュメントに「ポーリング」とあるのでリニアに増えるのかと思ったのですが、綺麗な階段状のグラフになりました。また「トリガーされるまで数分かかる場合もある」「トリガーはベストエフォート」などの記載があり、ドキュメントのレベルでもお勧めしない感がにじみ出ていますね。

docs.microsoft.com

測定結果2 Event Grid + App Service Plan

f:id:yhara90:20180829021725p:plain

こちらは Event Grid で発火、Functions は App Service Plan で受けるパターンです。綺麗にフラットなグラフになりました。

測定結果3 Event Grid + Consumption Plan

f:id:yhara90:20180829021738p:plain

こちらは Event Grid で発火、Functions は Consumption Plan で受けるパターンですが、イベントが毎秒発生するので App Service Plan とほぼ同じような結果になりました。

まとめ

ということで、BLOBの作成をトリガーにするような処理は Event Grid が安心そうだという結果になりました。イベント発火の確実性という点でも、リトライまできっちりやってくれる Event Grid が。安心そうです

f:id:yhara90:20180829023054p:plain