Azureアーキテクチャガイドまとめ 3 【Webキューワーカー】

はじめに

Azureクラウドアプリケーションアーキテクチャガイドより、7つあるアーキテクチャスタイルの一つ、Webキューワーカーに関してまとめます。
※前回記事
Azureアーキテクチャガイドまとめ 1 【はじめに】
Azureアーキテクチャガイドまとめ 2【N層】

概要

このアーキテクチャスタイルのコアコンポーネントは以下の3点。
クライアント要求にこたえるWebフロントエンド
バッチジョブを実行するワーカー
もしくはCPUを集中的に使用するタスク
非同期メッセージキュー
これらに加えて、一般的に以下のコンポーネントが組み込まれます。
システムの要件にフィットする範囲で、特定の機能を分離し、各種マネージドサービスを組み合わせる、というイメージです。
1つまたは複数のデータベース
DB読み取り高速化のためのキャッシュ
静的コンテンツを提供するCDN
構成図は以下の通り。

以下のような特徴を持つアプリケーションに適しています。
比較的単純なドメインのアプリケーション
時間のかかるワークフローバッチ操作があるアプリケーション

利点

・理解しやすい比較的単純なアーキテクチャ
展開と管理の容易さ
・フロントエンドとワーカーは独立に拡張可
・懸念事項の明確な分離

課題

情報の入出力が多いコンポーネントでは、システムの要望に応じてコードが肥大化しやすい傾向があります。
・フロントエンドとワーカーが、複数の機能を持った単一のコンポーネントになりやすい (= モノリシックコンポーネント)
・フロントエンドとワーカーがデータスキーマやコードモジュールを共有している場合、隠れた依存関係が存在する可能性あり

ベストプラクティス

各マネージドサービスでベストプラクティスが用意されています。
・適切であれば、複数のストレージ技術を混在させる
・以下のベストプラクティス設計に準ずる
API 設計のベストプラクティス
自動スケールのベストプラクティス
キャッシングのベストプラクティス
CDN のベストプラクティス
ジョブに最適なデータストアの使用 データのパーティション分割のベストプラクティス

対応するAzureサービス

核となるサービスは、App Serviceです。
WebjobsApp Serviceのサービスの一つで、ワーカーの役割を果たします。これらをQueue StorageもしくはService Busでつなげる形です。
アイコンと概要をまとめます。

先ほどの構成図にあるアーキテクチャを組んだ場合、以下のような構成になります。
※ 図ではDocumentDBになっていますが、現在はCosmosDBとしてリニューアルされていますのでご注意を。

まとめ

Webキューワーカーの特徴と、使用されるサービスについて見ていきました。次回はCQRSについてまとめます。お楽しみに!

参考リンク

Azureアーキテクチャセンター
Azureクラウドアプリケーションアーキテクチャガイド ダウンロードページ

この記事を書いた人

azure-recipe-user