イベント駆動型アーキテクチャ(EDA)とは?
イベント駆動型アーキテクチャ (EDA) とは、取引の締結や放棄されたショッピングカートなど、ビジネスにおける重要な「イベント」を検出し、リアルタイムに対応する統合モデルのことです。
EDA(イベント駆動型アーキテクチャ)とは?
イベント駆動型アーキテクチャ (EDA) は、分散システムを横断してイベントをリアルタイムに公開、取得、処理、さらにこれに応答するための統合モデルです。あるアプリケーションでイベントが発生すると、それを把握する必要がある他のすべてのアプリケーションにメッセージが自動的に送信されるため、順番に処理を行うことができます。
イベントベースのアーキテクチャは分離されています。つまり、アプリケーションは情報を共有してタスクを完了するために相互に認識する必要がありません。イベント情報(メッセージ)は、アプリ間で自由かつ自動的に行き来することが可能です。その結果、EDA モデルは、従来の要求/応答モデルよりもはるかに高速です。従来のモデルでは、あるアプリケーションが他のアプリケーションに必要な特定の情報を要求し、応答を待ってから次のタスクに進む必要がありました。また、EDA は分離型であるため、マイクロサービス通信のベストプラクティスであると広く考えられています。
EDA の仕組み
イベント駆動型アーキテクチャでは、アプリケーションはイベントプロデューサー(イベントを生成または取得するアプリ)またはイベントコンシューマー(イベントを処理して、それに基づいて対応するアプリ)として機能します。プロデューサーは、ブローカー(メッセージング指向のミドルウェア)を介して、コンシューマーにリアルタイムでイベントを送信します。その後、コンシューマーはイベントを処理し、他のアクションやワークフロー、イベントをトリガーすることができます。
非常に単純なアーキテクチャ、つまり、互いに直接通信する単一のプロデューサーと単一のコンシューマーがある場合、ブローカーは任意になります。しかし、ほとんどの企業では、複数のコンシューマーにイベントを送信する複数のソースが存在するため、ブローカー、あるいはブローカーのネットワーク(「イベントメッシュ」とも呼ばれる)が必要です。ブローカーやイベントメッシュを使用すると、アプリケーションの「疎結合」が生まれます。
イベント駆動型アーキテクチャのパターン
イベント駆動型アーキテクチャにおけるイベントの送信には、公開/購読とイベントストリーミングという主に 2 つのパターンがあります。
公開/購読(別名「pub/sub」)- pub/sub では、イベントコンシューマーがイベントプロデューサーによって公開されたメッセージおよびチャネルを購読します。イベントが公開されると、ブローカーを介してすべての購読者に直接送信されます。重複を避けるため、一度消費されたイベントはリプレイしたり、アクセスしたりすることはできません。これらのイベントは、ブローカーによって削除されます。
イベントストリーミング –イベントストリーミングでは、プロデューサーがイベントのストリーム全体をブローカーに公開します。コンシューマーはストリームを購読し、ストリームのどの部分からでも読むことができ、自分に関連するイベントだけを消費することができます。このパターンでは、イベントは消費された後もブローカーによって保持されます。
イベント処理への 3 つのアプローチ
コンシューマーに到達したイベントを処理するには、単純なイベント処理、複雑なイベント処理、イベントストリーム処理の 3 つの異なるアプローチがあります。
- 単純なイベント処理:コンシューマーは各イベントを受信時に処理します。
- 複雑なイベント処理: コンシューマーは一連のイベントを処理してパターンを検出し、結果に基づいてアクションを実行します。
- イベントストリーム処理: コンシューマーはデータストリーミングプラットフォームを使用して、データ(移動中のデータ)の一定の流れをリアルタイムで処理し、それに基づいて行動します。
企業は、それぞれのニーズとユースケースに基づいて、イベント処理のアプローチを選択します。
EDAのユースケースと例
イベント駆動型アーキテクチャには、銀行から小売業まで、あらゆる業界でさまざまなユースケースがあります。以下は、レストラン業界の例です。
Uber Eats などのフードデリバリーアプリでピザを注文します。アプリでは、この大学生の基本情報(名前、住所、支払情報、注文)が取得され、「ピザ注文」イベントが公開されます。
レストランはイベントを購読し、注文をこなし、自らの「注文準備完了」イベントをフードデリバリーサービスに公開します。
次に、フードデリバリーサービスは、配達ドライバーを割り当て、ETA をスケジュールし、顧客にピザが配達中であることを通知します。
e コマースの EDA の例:
オンラインショッピングの利用者が e コマースサイトにクレジットカード情報を入力すると、「支払送信済み」イベントが公開されます。
支払システムはイベントを購読し、支払を処理し、成功または失敗を示す独自の「支払処理済み」イベントを発行し、それをウェブサイト UI に送り返します。
UI は顧客に支払状況を表示し、次のステップを促します。
EDA の他の例としては、以下が挙げられます。
オンラインショッピングの利用者が商品をクリックし、システムが類似商品に基づいて推奨商品を生成して応答する
顧客が銀行に小切手を預け入れ、システムがその預け入れを自動的に顧客の口座に入金する
小売業者がグローバルな取引において不正行為の有無を審査し、疑わしい購入があればクレジットカード会社に報告する
製造業者が機器からのストリーミング IoT データを監視し、潜在的な保守の問題や障害があれば警告を受ける
イベント駆動型アーキテクチャのメリット
イベント駆動型アーキテクチャには多くのメリットがあります。その上位 3 つをご紹介します。
- リアルタイムのワークフローと応答性。EDA は、イベントの発生時にイベントを監視し、迅速に対応することができます。多くの場合、RPA(ロボティックプロセスオートメーション)を使用して、ワークフローを迅速化し、次のステップをリアルタイムでトリガーします。これは、需要ピーク時、例えば、大きな販売イベントや祝祭日には特に重要です。この応答機能は、日々 (つまり、オフピーク時)のワークフローにも適応され、サプライチェーンの自動化から不正行為の検出まで、あらゆるものを改善します。
- 非同期メッセージング。EDA のアプリケーションは非同期で通信します。つまり、プロデューサーはコンシューマーが受信するのを待たずにイベントメッセージを公開します。これにより、アプリケーションは待機せずに他のタスクに進むだけでなく、統合も簡単になります。
- 分離および疎結合。EDA のアプリケーションは分離または疎結合されており、互いの可用性には依存しません。アプリケーションは個別に更新、テスト、導入することができます。また、故障も個別に発生するため、従来のモデルよりも耐久性と持続性に優れたアーキテクチャーになっています。また、分離によって、必要に応じてパブリッシャーやコンシューマーを追加することが容易になり、変更のたびにコードを書き換える必要がなくなります。
まとめ
イベントメッシュは、さまざまなハイパースケーラーやプライベートクラウドを横断するデプロイメントオプションを提供し、プライベートクラウド、パブリッククラウドを含む環境全体に展開されるイベントブローカーの分散メッシュを形成することができます。イベントメッシュは、イベントストリーミング、イベント管理、モニタリングなどのイベントサービスの万能セット、さらに動的メッセージルーティングやきめ細かなフィルタリングのような高度な機能を提供します。