アーキテクチャ: 複合イベント処理

このページでは、Google Cloud での複合イベント処理向けのアーキテクチャについて説明します。

Google Cloud を使用すると、膨大なデータのインポート、イベントの処理、ビジネスルールの実行に必要な弾力性とスケーラビリティを備えたインフラストラクチャを構築できます。複合イベント処理(CEP)向けのアーキテクチャには必ず、複数の異種ソースからのデータのインポート、複合ビジネスルールの適用、アウトバウンド アクションの駆動といった機能が必要です。

次のアーキテクチャ図に、このようなシステムと関係するコンポーネントを示します。

複合イベント処理システム向けアーキテクチャ

アーキテクチャの概要

このセクションでは、図に示したアーキテクチャの詳細について説明します。このアーキテクチャは、連続データフローを処理できるストリーミング入力と、データを多数のチャンクとして処理するバッチ入力をサポートします。

ストリーミング入力

リアルタイム、ユーザー、自動生成されるイベントに基づいた即時アクションを必要とするシナリオでは、ストリーミング アーキテクチャを使用して複合イベントを処理できます。

アプリケーション

ユーザーが生成したイベントは、通常、オンプレミスまたはクラウドでホスティングされるアプリケーション内の操作から発生し、クリックストリームや、ショッピング カート、ウィッシュ リスト、金融取引へのアイテムの追加といったユーザー アクションの形式で指定できます。自動生成されたイベントは、プレゼンス、診断、類似したデータのタイプをレポートするモバイル デバイスまたは他のデバイスの形式で指定できます。Google Cloud 上でアプリケーションをホストするプラットフォームには以下があります。

  • App Engine は PaaS(Platform as a Service)であり、管理された自動スケーリング環境にアプリケーションを直接デプロイできます。
  • Google Kubernetes Engine はコンテナベースのアプリケーションをきめ細かく制御する機能を提供します。コンテナのオーケストレーションやデプロイをクラスタ全体で簡単に行えます。
  • Compute Engine は、最大限の柔軟性を実現する高パフォーマンスの仮想マシンを提供します。

転送

アプリケーションがオンプレミスでホスティングされていても、Google Cloud でホスティングされていても、アプリケーションが生成するイベントは、緩く結合し、優れた可用性を備えたメッセージング レイヤに転送される必要があります。Pub/Sub はグローバルな耐久性を持つメッセージ転送サービスで、他の Google Cloud サービスへのネイティブな接続をサポートし、アプリケーションと下流の処理を連携させます。

バッチ入力

オンプレミス データベースまたはクラウド データベースに格納されている履歴データが膨大になっているシナリオでは、バッチ指向処理手法を使用して複合イベントをインポートし、処理することができます。

データソース

処理対象のイベントが含まれるデータソースは、オンプレミスにも Google Cloud にも配置できます。オンプレミス データソースの場合、下流の処理用にデータをエクスポートしてから、それを Cloud Storage にコピーできます。下流の処理ツールを使用すると、クラウドでホストされたデータベースに格納されているデータに直接アクセスできます。また、Google Cloud に未処理のイベントデータを格納するために、複数の異なるプラットフォームを使用できます。

  • Cloud Storage は、フラット ファイルまたは非構造化データ向けのオブジェクト ストレージを提供します。
  • Cloud SQL はリレーショナル データを格納します。
  • Datastore は、動的スキーマと完全なデータ インデックス登録をサポートする NoSQL データベースです。

処理とストレージ

データ処理

イベントデータが Pub/Sub を経由してアプリケーションからストリーミングされるか、Cloud Storage、Cloud SQL、Datastore などの他のクラウド データソースに読み込まれると、データ間の汎用計算の変換、拡張、集計、または適用が必要になることがあります。Dataflow は、シンプルなパイプラインベースのプログラミング モデルを使用して、ストリーミング データまたはバッチデータでこれらのタスクを実行するために構築されています。Dataflow は、必要に応じて柔軟に拡張するマネージド サービスで、これらのパイプラインを実行します。CEP ワークロードで Dataflow を使用すると、複数の異種ソースからデータを正規化し、このデータを単一で一貫性のある表記にフォーマットできます。

イベント ストレージ

このアーキテクチャでは、Dataflow はイベントデータを処理して、単一で一貫性のある時系列表記に正規化し、フルマネージドの NoSQL データベース サービスである Cloud Bigtable に格納します。Bigtable は、一貫性があり、低レイテンシで高スループットのデータアクセスを提供します。これは下流の処理と分析ワークロードに有効です。Bigtable で時系列データを格納する方法の詳細については、時系列データ用の Bigtable スキーマ設計をご覧ください。

ルールの実行

CEP システムの中核には受信イベント間で実行する必要のあるルールが用意されています。ルールエンジンは、単純なカスタムのドメイン固有言語から複雑なビジネスルール管理システムまで、多岐にわたります。ルールエンジンは、単純か複雑かにかかわらず、Dataflow または Dataproc(Hadoop クラスタや Spark クラスタを実行するためのマネージド サービス)を使用して、分散方式でデプロイできます。どちらのシステムを使用しても、大量の時系列イベントにまたがって複合ルールを実行できます。次に、これらのルール評価の結果を使用して、アウトバウンド アクションを促進します。

アウトバウンド アクション

インバウンド イベントがルール実行メカニズムによって処理されると、処理結果は一連のアウトバウンド アクションに変換できます。こうしたアクションには、モバイル デバイス用のプッシュ通知、他のアプリケーション用の通知、ユーザーへのメール送信などがあります。こうしたアクションを配信するには、App Engine、GKE、Compute Engine のいずれで実行される場合も、Google Cloud またはオンプレミスでホスティングされるアプリケーションに Pub/Sub 経由でメッセージを送信できます。

分析

インバウンド イベントにまたがるルール実行の結果を BigQuery に格納し、ビジネス インテリジェンスまたは報告の目的で、探索と分析を実施します。BigQuery はペタバイトスケールのマネージド データ ウェアハウスで、SQL に類似したクエリをサポートし、追加の下流分析ツールに接続します。データ サイエンス指向分析の場合、Datalab は、Jupyter ノートブックに基づいた、強力なデータ探索機能を提供します。Google データポータルは、レポーティングやダッシュボードに使用するために、BigQuery のクエリとストレージ機能が支援する、カスタマイズ可能で共有可能なレポートの作成をサポートします。

次のステップ

  • Google Cloud に関するリファレンス アーキテクチャ、図、チュートリアル、ベスト プラクティスを確認する。Cloud Architecture Center を確認します。