はじめに
Azureクラウドアプリケーションアーキテクチャガイドより、7つあるアーキテクチャスタイルの一つ、イベントドリブンアーキテクチャに関してまとめます。
連載目次
Azureアーキテクチャガイドまとめ 1 【はじめに】
Azureアーキテクチャガイドまとめ 2【N層】
Azureアーキテクチャガイドまとめ 3 【Webキューワーカー】
Azureアーキテクチャガイドまとめ 4 【マイクロサービス】
Azureアーキテクチャガイドまとめ 5 【CQRS】
Azureアーキテクチャガイドまとめ 6 【イベントドリブンアーキテクチャ】 → 本記事
Azureアーキテクチャガイドまとめ 7 【ビッグデータアーキテクチャ】
Azureアーキテクチャガイドまとめ 8 【ビッグコンピューティングアーキテクチャ】
概要
情報の送り手が「イベント」を発行し、それを保持する箇所を設け、情報の受け手はそこにイベントを取りに行く、というアーキテクチャスタイルです。Webキューワーカーアーキテクチャと似ていますが、以下のようなイメージで違いを理解しています。
-
キューの格納先 = パイプ
- 処理したい命令を流しつつ保持しておける
- パイプの形状変更は一苦労
- 配信者や受信者を変更/追加する場合には、配信側のコードをいじる必要あり
-
イベントの格納先 = 箱
- 処理のためのトリガーを放り込める
- 複雑なものが入ってても大丈夫そう (パイプだと詰まりそう)
- 受信者は能動的に箱の中身を取りに行く必要あり
- 何人で箱を共有してもOKで、拡張性が高い
要件に応じて、パブリッシュサブスクライブモデルとイベントストリームモデル、2種類のモデルが使用可能です。
それぞれ、ざっくりとした構成を図示します。
適するアプリケーション
このアーキテクチャスタイルには以下のようなアプリケーションに適しています。
- 複数のサブシステムが同じイベントを処理
- 最小のタイムラグのリアルタイム処理
- パターンマッチングや特定の時間範囲内の集計など、複雑なイベント処理
- IoTなど、大量の高速データを処理
利点
- 送り手と受け手を分離できる
- Point to Pointがないので、新しい受け手を容易にシステムへ追加できる
- 受け手はイベントが到着すると即座に応答できる
- 高い拡張性と分散性
課題
- 配信の保証
- イベントを正しい順序で処理する必要がある場合
対応するAzureサービス
コンシューマー側の処理方式は、以下3種に大別されます。要件に応じて使い分けます。
- | トリガー例 | 組み合わせるサービス例 |
---|---|---|
単純なイベント処理 | ストレージに画像ファイルがアップロード |
Azure Functions Service Bus |
複雑なイベント処理 | 特定のデータをある時間範囲で集計、移動平均値が特定のしきい値を超える |
Azure Storm Analytics Apache Storm |
イベントストリーム処理 | IoTデータ (大量のイベントが発生) |
Azure IoT Hub Apache Kafka |
組み合わせる各サービスの概要とアイコンは以下の通り。
まとめ
イベントドリブンアーキテクチャの特徴と使用されるサービスについて見ていきました。次回はビッグデータアーキテクチャスタイルについてまとめます。お楽しみに!
参考リンク
Azureアーキテクチャセンター イベントドリブンアーキテクチャ
Azureクラウドアプリケーションアーキテクチャガイド ダウンロードページ