イベント ドリブン アーキテクチャとは

企業では、顧客とのやり取りからセンサーの読み取りまで、さまざまなトリガーに即座に反応できるシステムの必要性がますます高まっています。従来のリクエスト / レスポンス モデルは価値があるものの、こうした動的な環境に必要なアジリティやスケーラビリティを常に提供できるとは限りません。イベント ドリブン アーキテクチャ(EDA)は、応答性、復元力、スケーラビリティに優れたアプリケーションを構築するための強力なパラダイムを提供します。これはイベントの生成、検出、利用およびイベントへの応答に重点を置いたソフトウェア アーキテクチャ パターンです。

イベント ドリブン アーキテクチャについて

イベント ドリブン アーキテクチャの定義

イベント ドリブン アーキテクチャは、サービスが疎結合され、イベントの生成と使用を通じて通信するソフトウェア アプリケーションを設計するためのモデルです。「イベント」は、意味のある出来事やシステム状態の変化を意味します。たとえば、顧客が注文した、センサーが温度の変化を検出した、新しいファイルがストレージにアップロードされた、データベース レコードが更新された、といったことがイベントになります。

サービスが別のサービスを明示的に呼び出してレスポンスを待つという従来のリクエスト駆動型モデルとは異なり、EDA ではサービスを非同期で運用できます。イベントを生成するサービス(「プロデューサー」または「パブリッシャー」)は、イベントが発生したことを通知するだけです。そのタイプのイベントに関心のある他のサービス(「コンシューマー」または「サブスクライバー」)は、それぞれ独立して、独自のタイミングでイベントに反応できます。

EDA の主なコンポーネントは通常、次のとおりです。

  • イベント プロデューサー: イベントを生成するアプリケーションまたはサービス
  • イベント コンシューマ(またはサブスクライバー): イベントを受信して処理するアプリケーションまたはサービス
  • イベント チャネル(またはイベントバス、メッセージ ブローカー、イベント ルーター): プロデューサーからイベントを取り込み、フィルタリングして、関心のあるコンシューマーに配信する仲介インフラストラクチャ。このコンポーネントは、プロデューサーとコンシューマーを分離するために不可欠です

イベント ドリブン アーキテクチャの仕組み

イベント ドリブン アーキテクチャのワークフローは、一般的に一貫したパターンに従います。

  • イベントの発生と生成: サービスまたはシステム内で重要なアクションが発生します。たとえば、ユーザーが e コマースサイトで [注文を送信] ボタンをクリックしたとします。この最初のアクションの処理を担うサービス(イベント プロデューサー)は、注文 ID、商品、顧客の詳細など、発生したことに関する関連情報を含むイベント オブジェクトを生成します。
  • イベントの送信: プロデューサーは、このイベントをイベント チャネルに送信します。このチャネルは、イベントの流れを処理するために設計された、メッセージキューやパブリッシュ / サブスクライブ(pub/sub)システムなどの専用インフラストラクチャです。
  • イベントのフィルタリングとルーティング(イベント チャネルによる): イベント チャネルがイベントを受信します。その後、フィルタリング ルールを適用したり、イベントの種類、内容、トピックに基づいて、そのようなイベントへの関連性を登録したさまざまなダウンストリーム コンシューマーにイベントをルーティングしたりします。たとえば、「order_placed」イベントは、在庫サービス、通知サービス、配送サービスにルーティングされます。
  • イベントの利用と処理: 関連するサービス(コンシューマー)は、チャンネルからイベントを受信します。各コンシューマは、イベントを非同期で個別に処理します。e コマースの例では、次のようになります。
  • 在庫サービスは、注文された商品アイテムの在庫数を減らします
  • 通知サービスは、お客様に注文確認メールを送信します
  • 配送サービスは物流プロセスを開始します

イベント ドリブン アーキテクチャのメリット

イベント ドリブン アーキテクチャの採用は、特に複雑な分散システムにおいて、数多くのメリットをもたらします。

スケーラビリティの向上

EDA のサービスは疎結合されており、個別にスケーリングできます。「注文処理」サービスに大きな負荷がかかっている場合、たとえば「ユーザー通知」サービスに影響を与えることなく、そのサービスだけをスケールアップできます。

復元力とフォールト トレランスの向上

イベント ドリブン アーキテクチャは、サービス障害を分離することでアプリケーションの堅牢性を高めるのに役立ちます。分離されているため、1 つのコンシューマー サービスで不具合が発生しても、通常は、それが伝播してシステム全体に障害が発生することはありません。

アジリティと柔軟性の向上

デベロッパーは、システムの他の部分への影響を最小限に抑えながら、サービスを追加、変更、削除できます。新しいサービスは、既存のイベント ストリームをサブスクライブして新しい機能を追加できます。元のイベント プロデューサーを変更する必要はありません。

リアルタイムの応答性

イベント ドリブン アーキテクチャは、システムがイベントに即座に対応するのに役立ちます。この機能は、不正行為の検出、リアルタイム分析、運用モニタリングなど、迅速な対応が最優先されるアプリケーションに特に役立ちます。

シンプルな統合

EDA は、レガシー アプリケーション、最新のマイクロサービス、サードパーティ サービスなど、異種システムを統合するための柔軟なバックボーンとして機能します。各システムは、他のすべてのシステムと直接ポイントツーポイントで統合する必要なく、イベントをパブリッシュして使用できます。

拡張性

新しい機能を追加したり、既存のイベントに新しい方法で対応したりするには、多くの場合、関連するイベント ストリームをサブスクライブする新しいコンシューマー サービスをデプロイするだけで済みます。

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。

イベント ドリブン アーキテクチャのユースケース

EDA の特性により、さまざまな業界の幅広いアプリケーションに適しています。

EDA は、マイクロサービス間の通信とデータフローを可能にする一般的なパターンです。マイクロサービスは、緊結合を生み出す可能性のある直接的な同期 API 呼び出しを行う代わりに、状態が変化したときにイベントをパブリッシュできます。他のマイクロサービスは、これらのイベントをサブスクライブして、それに応じて反応できます。

IoT センサーデータ、アプリケーション ログ、ソーシャル メディア フィード、金融市場データなど、高速なデータ ストリームを扱うアプリケーションは、EDA を使用して、この情報をリアルタイムで処理、分析し、対応できます。これは、ダッシュボード、アラート システム、自動意思決定プロセスの強化に役立ちます。

EDA は、販売に応じた在庫レベルの管理から、さまざまな段階(支払い、配送、フルフィルメント)を経て注文を処理し、顧客に通知を送信するまで、オンライン小売に固有の複雑な非同期ワークフローの管理に役立ちます。支払い処理サービスが遅い場合でも、注文イベントは在庫予約などの他のサービスによってキャプチャされ、処理されます。

多くのビジネス プロセスは、本質的にイベント ドリブンです。たとえば、保険金請求の提出(イベント)は、不正チェック、評価、顧客とのコミュニケーション、最終的な支払い処理など、一連の下流アクティビティをトリガーできます。EDA は、これらのワークフローを効果的にモデル化して自動化するのに役立ちます。

複数のシステムやデータストア間でデータの一貫性を保つ必要がある場合は、EDA を使用できます。1 つのデータベースの変更(イベント)を公開して、他のデータベースやキャッシュがこれらの変更イベントをサブスクライブして自身を更新できるようにします。

サーバーレス関数(Cloud Run functions など)は、イベント ドリブンになるように設計されることがよくあります。クラウド ストレージへのオブジェクトのアップロード、キューへのメッセージの到着、HTTP リクエストなど、さまざまなイベント トリガーに応答して実行されます。EDA は、サーバーレス コンポーネントを使用してアプリケーションを構築するのに最適です。

リアルタイムの不正行為検出、株式市場のモニタリング、取引処理は、EDA の低レイテンシと高スループットの機能の恩恵を受ける重要な金融アプリケーションです。

Google Cloud でイベント ドリブン アーキテクチャはどのように使用されていますか?

Google Cloud は、お客様が強力なイベント ドリブン アプリケーションを構築、デプロイできるようにする堅牢なサービス スイートを提供します。プラットフォーム自体がイベント ドリブンの原則を活用して、スケーラブルで復元力のあるサービスを提供します。イベント ドリブン ソリューションを構築するお客様向けに、Google Cloud はいくつかの主要なマネージド サービスを提供しています。

  • Pub/Sub: これは、グローバルに分散された、スケーラブルで信頼性の高いリアルタイム メッセージング サービスであり、EDA のイベントバスまたはメッセージ ブローカーとして機能します。Pub/Sub を使用すると、サービスはイベントをパブリッシュし、他のサービスはこれらのイベントを非同期でサブスクライブできます。これはパブリッシャーとサブスクライバーを分離し、「少なくとも 1 回」の配信、push サブスクリプションと pull サブスクリプション、メッセージ フィルタリングなどの機能をサポートします。
  • Eventarc: Eventarc は、イベントソース(Cloud Storage バケットの変更、BigQuery ジョブの完了、カスタム アプリケーション イベントなど)をイベント コンシューマーに接続することで、イベントフローを管理する標準化された方法を提供します。これにより、デベロッパーは、イベントに応じて Cloud Run サービス、Cloud Run functions、または Workflows を簡単にトリガーできます。
  • Cloud Run: このフルマネージド コンピューティング プラットフォームでは、ステートレス コンテナを実行し、HTTP リクエストまたは Pub/Sub からのイベント(多くの場合、Eventarc 経由)によって呼び出し可能にできます。Cloud Run functions を使用すると、サーバーやランタイム環境を管理する必要なく、さまざまなイベントに対応する単一目的の小規模なコード(関数)をデプロイできます。イベント ドリブン アーキテクチャでは、Cloud Run サービスはイベント コンシューマーとして非常に効果的であり、これらのイベントによってトリガーされるワークロードを処理できます。
  • Workflows: フルマネージドのオーケストレーション プラットフォームで、サーバーレス ワークフローを定義、デプロイ、管理できます。Workflows は、イベントによって(Eventarc または Pub/Sub 経由で)トリガーでき、さまざまな Google Cloud サービスや HTTP ベースの API への呼び出しを調整できるため、複雑なイベント ドリブン ビジネス プロセスのオーケストレーションに適しています。
  • Dataflow: 複雑なイベント処理(CEP)とストリーム分析の場合、Dataflow はストリームとバッチの統合データ処理プラットフォームを提供できます。Pub/Sub からイベント ストリームを取り込み、高度な変換、集計、分析を実行し、結果を他のシステムに出力したり、さらなるアクションをトリガーしたりできます。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud