企業では、顧客とのやり取りからセンサーの読み取りまで、さまざまなトリガーに即座に反応できるシステムの必要性がますます高まっています。従来のリクエスト / レスポンス モデルは価値があるものの、こうした動的な環境に必要なアジリティやスケーラビリティを常に提供できるとは限りません。イベント ドリブン アーキテクチャ(EDA)は、応答性、復元力、スケーラビリティに優れたアプリケーションを構築するための強力なパラダイムを提供します。これはイベントの生成、検出、利用およびイベントへの応答に重点を置いたソフトウェア アーキテクチャ パターンです。
イベント ドリブン アーキテクチャは、サービスが疎結合され、イベントの生成と使用を通じて通信するソフトウェア アプリケーションを設計するためのモデルです。「イベント」は、意味のある出来事やシステム状態の変化を意味します。たとえば、顧客が注文した、センサーが温度の変化を検出した、新しいファイルがストレージにアップロードされた、データベース レコードが更新された、といったことがイベントになります。
サービスが別のサービスを明示的に呼び出してレスポンスを待つという従来のリクエスト駆動型モデルとは異なり、EDA ではサービスを非同期で運用できます。イベントを生成するサービス(「プロデューサー」または「パブリッシャー」)は、イベントが発生したことを通知するだけです。そのタイプのイベントに関心のある他のサービス(「コンシューマー」または「サブスクライバー」)は、それぞれ独立して、独自のタイミングでイベントに反応できます。
EDA の主なコンポーネントは通常、次のとおりです。
イベント ドリブン アーキテクチャのワークフローは、一般的に一貫したパターンに従います。
イベント ドリブン アーキテクチャの採用は、特に複雑な分散システムにおいて、数多くのメリットをもたらします。
スケーラビリティの向上
EDA のサービスは疎結合されており、個別にスケーリングできます。「注文処理」サービスに大きな負荷がかかっている場合、たとえば「ユーザー通知」サービスに影響を与えることなく、そのサービスだけをスケールアップできます。
復元力とフォールト トレランスの向上
イベント ドリブン アーキテクチャは、サービス障害を分離することでアプリケーションの堅牢性を高めるのに役立ちます。分離されているため、1 つのコンシューマー サービスで不具合が発生しても、通常は、それが伝播してシステム全体に障害が発生することはありません。
アジリティと柔軟性の向上
デベロッパーは、システムの他の部分への影響を最小限に抑えながら、サービスを追加、変更、削除できます。新しいサービスは、既存のイベント ストリームをサブスクライブして新しい機能を追加できます。元のイベント プロデューサーを変更する必要はありません。
リアルタイムの応答性
イベント ドリブン アーキテクチャは、システムがイベントに即座に対応するのに役立ちます。この機能は、不正行為の検出、リアルタイム分析、運用モニタリングなど、迅速な対応が最優先されるアプリケーションに特に役立ちます。
シンプルな統合
EDA は、レガシー アプリケーション、最新のマイクロサービス、サードパーティ サービスなど、異種システムを統合するための柔軟なバックボーンとして機能します。各システムは、他のすべてのシステムと直接ポイントツーポイントで統合する必要なく、イベントをパブリッシュして使用できます。
拡張性
新しい機能を追加したり、既存のイベントに新しい方法で対応したりするには、多くの場合、関連するイベント ストリームをサブスクライブする新しいコンシューマー サービスをデプロイするだけで済みます。
EDA は、マイクロサービス間の通信とデータフローを可能にする一般的なパターンです。マイクロサービスは、緊結合を生み出す可能性のある直接的な同期 API 呼び出しを行う代わりに、状態が変化したときにイベントをパブリッシュできます。他のマイクロサービスは、これらのイベントをサブスクライブして、それに応じて反応できます。
IoT センサーデータ、アプリケーション ログ、ソーシャル メディア フィード、金融市場データなど、高速なデータ ストリームを扱うアプリケーションは、EDA を使用して、この情報をリアルタイムで処理、分析し、対応できます。これは、ダッシュボード、アラート システム、自動意思決定プロセスの強化に役立ちます。
EDA は、販売に応じた在庫レベルの管理から、さまざまな段階(支払い、配送、フルフィルメント)を経て注文を処理し、顧客に通知を送信するまで、オンライン小売に固有の複雑な非同期ワークフローの管理に役立ちます。支払い処理サービスが遅い場合でも、注文イベントは在庫予約などの他のサービスによってキャプチャされ、処理されます。
多くのビジネス プロセスは、本質的にイベント ドリブンです。たとえば、保険金請求の提出(イベント)は、不正チェック、評価、顧客とのコミュニケーション、最終的な支払い処理など、一連の下流アクティビティをトリガーできます。EDA は、これらのワークフローを効果的にモデル化して自動化するのに役立ちます。
複数のシステムやデータストア間でデータの一貫性を保つ必要がある場合は、EDA を使用できます。1 つのデータベースの変更(イベント)を公開して、他のデータベースやキャッシュがこれらの変更イベントをサブスクライブして自身を更新できるようにします。
サーバーレス関数(Cloud Run functions など)は、イベント ドリブンになるように設計されることがよくあります。クラウド ストレージへのオブジェクトのアップロード、キューへのメッセージの到着、HTTP リクエストなど、さまざまなイベント トリガーに応答して実行されます。EDA は、サーバーレス コンポーネントを使用してアプリケーションを構築するのに最適です。
リアルタイムの不正行為検出、株式市場のモニタリング、取引処理は、EDA の低レイテンシと高スループットの機能の恩恵を受ける重要な金融アプリケーションです。
Google Cloud は、お客様が強力なイベント ドリブン アプリケーションを構築、デプロイできるようにする堅牢なサービス スイートを提供します。プラットフォーム自体がイベント ドリブンの原則を活用して、スケーラブルで復元力のあるサービスを提供します。イベント ドリブン ソリューションを構築するお客様向けに、Google Cloud はいくつかの主要なマネージド サービスを提供しています。