はじめに
Azureクラウドアプリケーションアーキテクチャガイドより、7つあるアーキテクチャスタイルの一つ、Webキューワーカーに関してまとめます。
連載目次
Azureアーキテクチャガイドまとめ 1 【はじめに】
Azureアーキテクチャガイドまとめ 2【N層】
Azureアーキテクチャガイドまとめ 3 【Webキューワーカー】 → 本記事
Azureアーキテクチャガイドまとめ 4 【マイクロサービス】
Azureアーキテクチャガイドまとめ 5 【CQRS】
Azureアーキテクチャガイドまとめ 6 【イベントドリブンアーキテクチャ】
Azureアーキテクチャガイドまとめ 7 【ビッグデータアーキテクチャ】
Azureアーキテクチャガイドまとめ 8 【ビッグコンピューティングアーキテクチャ】
概要
このアーキテクチャスタイルのコアコンポーネントは以下の3点。
- クライアント要求にこたえるWebフロントエンド
- バッチジョブを実行するワーカー
- もしくはCPUを集中的に使用するタスク
- 非同期メッセージキュー
これらに加えて、一般的に以下のコンポーネントが組み込まれます。
システムの要件にフィットする範囲で、特定の機能を分離し、各種マネージドサービスを組み合わせる、というイメージです。
- 1つまたは複数のデータベース
- DB読み取り高速化のためのキャッシュ
- 静的コンテンツを提供するCDN
構成図は以下の通り。
以下のような特徴を持つアプリケーションに適しています。
- 比較的単純なドメインのアプリケーション
- 時間のかかるワークフローやバッチ操作があるアプリケーション
利点
- 理解しやすい比較的単純なアーキテクチャ
- 展開と管理の容易さ
- フロントエンドとワーカーは独立に拡張可
- 懸念事項の明確な分離
課題
情報の入出力が多いコンポーネントでは、システムの要望に応じてコードが肥大化しやすい傾向があります。
-
フロントエンドとワーカーが、複数の機能を持った単一のコンポーネントになりやすい (= モノリシックコンポーネント)
-
フロントエンドとワーカーがデータスキーマやコードモジュールを共有している場合、隠れた依存関係が存在する可能性あり
ベストプラクティス
各マネージドサービスでベストプラクティスが用意されています。
-
適切であれば、複数のストレージ技術を混在させる
-
以下のベストプラクティス設計に準ずる
対応するAzureサービス
核となるサービスは、App Serviceです。
WebjobsはApp Serviceのサービスの一つで、ワーカーの役割を果たします。これらをQueue StorageもしくはService Busでつなげる形です。
アイコンと概要をまとめます。
先ほどの構成図にあるアーキテクチャを組んだ場合、以下のような構成になります。
※ 図ではDocumentDBになっていますが、現在はCosmosDBとしてリニューアルされていますのでご注意を。
まとめ
Webキューワーカーの特徴と、使用されるサービスについて見ていきました。次回はCQRSについてまとめます。お楽しみに!