イベントドリブンアーキテクチャ
読み方: いべんとどりぶんあーきてくちゃ
イベントドリブンアーキテクチャとは
システム設計において、イベントを契機にシステムを構成するためのアーキテクチャ設計手法の1つです。
従来のリクエスト要求時を処理の契機とするアーキテクチャとは異なり、イベントの発生とその消費に注目しシステムを構成する点が異なります。
イベントドリブンアーキテクチャの特徴
- Pub/Subモデルである
イベント発生主体によるPublisherによるイベントの発行とConsumerによるSubscribeをベースとした疎結合アーキテクチャであること - 疎結合
リクエストを契機にするリクエストドリブンアーキテクチャと比較し、イベントを契機としたアーキテクチャであること。
イベントのPublisherとConsumerはお互いにイベントをどう処理しどういった結果が生じるかを認識する必要がないため、より大規模かつ分散的なシステムを構成することが可能になります。 - IoTやビッグデータ等大規模環境においてはリクエストを処理の契機とすると、リクエストにレスポンスするためのサーバーにワークロードが集中し、システムの特定箇所にワークロードが偏ってしまうため、Pub/Subモデルがワークロードを分散するための強力な設計手法となります。
歴史
システム設計においてはリクエスト(要求)を契機とした中心としたシステム設計方法が伝統的な手法でした。しかしIoTやビッグデータなど、より即時での大規模データの処理を求められる近年の環境で大規模かつクライアントが多数に渡るシステムを構成する手法として要件を満たすために難しい場面も出てきました。
そのためApache KafkaやRabbitMQ, AWS Kinesis製品群等のメッセージングシステムを中心としたイベントドリブンアーキテクチャが発展しました。
現場の声
イベントドリブンアーキテクチャは疎結合であるため、全体のイベントのフローや処理失敗時のモニタリングが課題になることが多くあります。
そのため全てをイベントドリブンとして構成するのではなく、強い同期性と整合性を求められる箇所については従来のリクエスト・リプライ形式と併用し、結果整合性とするなど、要件に応じたハイブリッドな構成とすることが求められます。
<執筆・監修>
アルサーガパートナーズ株式会社 DX技術用語集制作チーム