Skip to main content

イベント駆動型アーキテクチャー

イベント駆動型アーキテクチャーとは、アプリケーションやシステムを構成するプログラム同士がイベントを介してデータのやり取りを行うようなアプリケーション設計方法のこと。

そもそも、イベントとは

イベントは、システムのハードウェアまたはソフトウェアの状態における何らかの意味のある出来事または変化。
たとえば、バッチ処理の完了といった、あるプロセスの完了や、CPUの使用率の上昇といったリソースの変化が該当する。 我々が普段コンピューターを操作する際に行っている、マウスのクリックやコマンドの入力といったものも、イベントに該当する。

イベント駆動型アーキテクチャのパターン

Pub/Sub型

Pub/Subとは、Publish/Subscribeを略したもので、あるシステムで発生したイベントを別のシステムに”メッセージ”として伝える仕組みを利用したシステム設計です。メッセージを発出する側をPublisher、メッセージを受け取る側をSubscriberといいます。Publisher側のメッセージ発出を検知して、メッセージの受け取り側の処理がスタートします。

イベントストリーミング型

イベントをログに書き込み、ストレージなどに保存し続けながらほかのシステムと連携する形式。
他のシステムはストレージへの書き込みを検知したり、ストレージの中に特定のメッセージが書き込まれるのを検知して、処理がスタートする

イベント駆動型アーキテクチャのメリット

イベント駆動型アーキテクチャのメリットは、『柔軟なシステム構成が可能』『負荷や障害影響を分離できる』にあると考えらている。

  • 柔軟なシステム構成が可能 システム間ではイベントのやり取りを行っているだけなので、イベントを発出する仕組みと、イベントを刈り取る仕組みを構築するだけで、つなぐシステムを増やしたり減らしたりすることが可能。
    また、構成だけでなく、テスト時の工数も減少する。
    たとえば、システムAとシステムBが密結合しているシステムであれば、Aの担当者とBの担当者が同時に検証を進める必要がありますが、イベント駆動型アーキテクチャを採用した疎結合システムであれば、システムAから発せられたイベントをシステムBがうまく刈り取ることができるか、という試験項目のみとなり、システムBの担当のみ、検証を進めればいいことになります。

  • 負荷や障害影響を分離できる 先述のように、あるシステムが障害等で停止した場合、他のシステムもタイムアウトなどで停止する、といったことを防ぐことができます。