公開日:2024年4月30日
投稿者:Chrystal R. China、Michael Goodwin
イベント・ストリーミングとは、アプリケーション、データベース、IoT(モノのインターネット)デバイスからリアルタイム・データを収集し、それをさまざまな宛先に転送して、即時に処理および保管したり、リアルタイム分析や分析レポートを作成したりすることです。
イベント・ストリーム処理(ESP)の重要な機能であるイベント・ストリーミングは、イベントや変更が発生したときにデータを処理することで、ITインフラストラクチャーがイベントの大規模かつ継続的なストリームを処理できるようにします。
イベント・ストリーミングは、多くの場合、大規模な静的データ・セット(または「保存データ」)を処理するバッチ処理の補完として機能します。ただし、イベント・ストリーミングは、データをバッチで処理するのではなく、1つのデータ・ポイントが発生すると個々に処理されるため、アーキテクチャー内のソフトウェアはデータのストリーム(「移動中のデータ」)をリアルタイムで解釈して応答できます。
高性能なイベント・ストリーミング・サービスは、株価や製品価格の変更時に通知を送信することから、疑わしいユーザー・アクティビティーを検知するリアルタイムの機械学習モデルを構築することまで、さまざまな単純なタスクと複雑なタスクの両方に対応できます。バッチ処理の場合でも、イベント・ストリーミングにより、イベントをそれぞれのタイムスタンプと結び付け、過去の傾向を特定することで、データ分析に深みを加えることができます。
IBM Event Automationを活用することで、ビジネス・ユーザーやITユーザーが状況を検知し、リアルタイムで対処し、意思決定を自動化し、収益の可能性を最大化できるようにして、イベントを機能させる方法をご覧ください。
IBMニュースレターの購読
イベント・ストリーミングは、「イベント」と呼ばれるシステムまたは環境内で発生したすべての出来事を記録する基本的なデータ構造であるデータ・レコードの無制限で連続したリアルタイムのフローを中心に展開されます。これは、基本的にシステム内のすべてのデータ・ポイントを指す用語です。したがって、「ストリーム」(データ・ストリームまたはストリーミング・データとも呼ばれる)は、これらのイベントの継続的な配信を指します。
各イベントは通常、イベントまたはそれに関連するエンティティを識別するキー、イベントの実際のデータを保持する値、イベントが発生または記録された日時を示すタイムスタンプで構成され、データ・ソース、スキーマ・バージョン、またはその他の属性に関するメタデータが含まれることもあります。
特殊なストリーム処理エンジンの助けを借りて、イベントはストリーム内でいくつかの異なるプロセスを経ます。「集計」では、平均、合計、標準偏差などのデータ計算を実行します。「取り込み」では、ストリーミング・データをデータベースに追加します。分析処理では、ストリーミング・データのパターンを使用して将来のイベントを予測し、エンリッチメント処理では、データ・ポイントと他のデータ・ソースを組み合わせてコンテキストを提供し、意味を生み出します。
イベントは多くの場合、事業運営やユーザー・ナビゲーション・プロセスに関連付けられており、通常は別のアクション、プロセス、または一連のイベントをトリガーします。一例として、オンライン・バンキングを取り上げます。
ユーザーが「送金」をクリックしてある銀行口座から別の銀行口座に送金すると、その資金が送金者の口座から引き出されて受信者の口座に追加され、EメールまたはSMS通知が一方(または両方)に送信されます。また、必要に応じて、セキュリティーおよび不正防止プロトコルが導入されます。
言うまでもなく、イベントはイベント・ストリーミングの中心的な構成要素ですが、他の一連のコンポーネントにより、ストリーミング・サービスはイベントと同じくらい迅速かつ効果的に処理できるようになります。その他の重要なコンポーネントは次のとおりです。
ブローカー、またはメッセージ・ブローカーは、イベント・ストリーミング・プラットフォームを実行するサーバーです。メッセージ・ブローカーは、正式なメッセージング・プロトコル間でメッセージを変換することで、アプリケーション、システム、サービスが相互に通信し、情報を交換できるようにします。これにより、サービスが異なる言語(JavaやPythonなど)で書かれていたり、異なるプラットフォームに実装されていたりする場合でも、相互に依存するサービスが直接「通信」できます。また、システム内のプロセスとサービスの分離も容易になります。
ブローカーはメッセージを検証、保管、ルーティングし、適切な宛先に配信できます。分散型イベント・ストリーミング・システムでは、ブローカーは複数のノード間でイベントを複製することで、低遅延と高可用性を確保します。ブローカーはクラスターを形成することもできます。クラスターとは、ロード・バランシングと拡張性を容易にするために連携して動作するブローカーのセットです。
トピックは、イベントが公開される分類またはフィードの名前です。プラットフォーム内でイベントの整理およびフィルタリングする方法を提供します。イベントの「主体」として機能することで、消費者はトピックにサブスクライブし、関連するイベントのみを受け取ることができます。
トピックはさらにパーティションに分割できるため、各パーティションの順序を乱すことなく、複数の消費者がトピックから同時に読み取ることができます。
オフセットは、パーティション内の各イベントの一意の識別子です。シーケンス内のイベントの位置を示します。消費者はオフセットを使用して、処理したイベントを整理します。たとえば、消費者がイベントから切断し、後で再接続すると、最後の既知のオフセットから処理を再開できます。
データの急増と、その結果として生じるデータ・トラフィックの急増を考えると、イベント・ストリーミングは、特に高速な意思決定機能を必要とする環境や、意思決定責任の自動化を目指している組織では、最新のデータ・アーキテクチャーに不可欠な構成要素です。
イベント・ストリーミング・サービスがイベント・データを管理する方法は次のとおりです。
標準的なストリーミングと処理に加えて、イベント・ストリーミング・プラットフォーム(Amazon Kinesis、Google Pub/Sub、Azure Event Hubs、オープンソースのApache Kafkaプラットフォームの処理能力を使用するIBM Event Automationなど)は、機能性を強化するさまざまなストリーミング手法を促進します。
1回限りの配信セマンティックにより、ストリーム内の各イベントが正確に1回のみ確実に処理されることが保証されます。これは、ストリーム・イベントの重複や損失を防ぐために不可欠な機能です。ほとんどのイベント・ストリーミング・システムには、システム内の他の場所での障害に関係なく、1回限りのセマンティックを提供するメカニズムが搭載されています。
ダウンストリーム・コンポーネントが受信イベント速度に追いつけない場合、バックプレッシャーによってストリームがシステムを圧迫するのを防ぎます。データ・フロー制御メカニズムであるバックプレッシャーにより、消費者は、データ処理に圧迫された場合や、受信するイベントに追いつけなくなった場合に、データ生成を調整したり停止したりするようにプロデューサーに指示することができます。
このプロセスにより、システムは、システム全体を中断するのではなく、着信イベントをバッファリングまたはドロップすることでワークロードを適切に処理できるため、ワークロードが変動してもイベント処理が安定した状態を維持できます。
イベントの消費者は多くの場合、消費者グループの一員としてイベントの消費を加速させます。消費者グループにいる各消費者には、処理するパーティションのサブセットが割り当てられているため、消費が並列化され、効率が向上します。グループ内の消費者の一人に障害が発生したり、消費者の追加または削除が必要になったりした場合、プラットフォームは動的にパーティションを再割り当てして、バランスとフォールト・トレランスを維持できます。
イベント・ストリーミングとは、多くの場合、時間的制約のある方法でのデータ処理を意味します。ウォーターマークすることで、ストリーム処理システムでの進行状況の追跡(イベント時間を使用)が可能になります。これは、システムがイベント・データが完全に処理されたと見なせる時点を示す完全性のしきい値を適用します。ウォーターマークは、時間ベースの処理の精度を確保したり、順不同のイベントを調整したりするためにも役立ちます。
ほとんどのイベント・ストリーミング・プラットフォームは、カスタマイズ可能なデータ保持ポリシーを提供しており、開発者はイベントを利用できる期間を制御することができます。一方で、データ圧縮とは、重要なデータを維持しながらストレージのフットプリントを最小限に抑え、トピックから冗長なデータや古いデータを削除するプロセスです。
繰り返しになりますが、標準的なストリーミング・アーキテクチャーは通常、イベント・プロデューサー、イベント・ブローカー、消費者を分離しているため、コンポーネントを個別に拡張および保守できます。
イベント・ストリーミングは、生成されたデータを組織が使用して、より応答性が高くインテリジェントなシステムを作成できるようにする強力な概念です。データ駆動型の意思決定の台頭により、イベント・ストリーミングは最新のソフトウェア・アーキテクチャーにおいてますます重要なコンポーネントとなっています。
そのため、イベント・ストリーミング・テクノロジーには、次のようなさまざまなビジネス・セクターのユースケースがあります。
金融機関は、イベント・ストリーミング・サービスを使用して、市場データをリアルタイムで処理し、アルゴリズム取引システムが最新の市場状況に基づいて瞬時に意思決定を行うことができるようになります。イベント・ストリーミングのリアルタイム監視機能は、不正行為やセキュリティー・リスクを迅速に特定して対処するのに役立ちます。
イベント・ストリーミングは、メーカーがサプライチェーン内を移動する材料や製品を追跡し、ボトルネックやプロセスの非効率性を特定できるようにすることで、サプライチェーンの最適化を促進します。さらに、機械のIoT(モノのインターネット)/IIoTセンサーからデータをストリーミングすることで、管理者は機器がいつ、なぜ故障するかを予測し、予防保守や予知保全を実行して、計画外のダウンタイムを回避することができます。
オンラインゲーム・プラットフォームは、イベント・ストリーミング・サービスを利用してプレイヤーの行動やゲーム状態の変化を追跡することができ、これを利用してゲーム分析を行ったり、不正行為防止ポリシーを実施したり、プレイヤーのエンゲージメントを高めたりすることができます。ストリーミング・プラットフォームは、イベント・データを活用することで、ユーザーにパーソナライズされたコンテンツ・レコメンデーションを提供し、オーダーメイドの顧客体験を作り出すことができます。
イベント・ストリーミングを使用して車両の位置と状態を追跡できるため、交通状況、配送スケジュール、車両性能に基づいたリアルタイムのルーティングが可能になります。物流企業も同様に、スキャン・デバイスやGPSトラッカーからのイベント・データを使用して、電子商取引の配送状況に関する最新情報を顧客にリアルタイムで提供できます。
特定の業種以外にも、イベント・ストリーミングは他のテクノロジーやアーキテクチャーと組み合わせて導入すると便利です。たとえば、イベント・ストリーミングは、イベント・ソーシングやコマンド・クエリ責任分離(CQRS)などのパターンに関連付けられていることがあります。
イベント・ソーシングは、アプリの状態に対する変更が一連のイベントとして格納されるアーキテクチャーのパターンです。イベント・ストリームと並行して使用されるイベント・ソーシングにより、ストリーミング・システムは、これらのイベントを再生して、任意の時点でエンティティーの状態を再構築したり、システムの他のコンポーネントを動かしたりすることができます。
CQRSアーキテクチャー・パターンでは、システムは、コマンドを処理するモデル(書き込み)とクエリを処理するモデル(読み取り)の2つの異なるモデルに分割されます。CQRSでイベント・ストリーミングを使用すると、書き込みモデルから読み取りモデルに変更をリアルタイムで伝播し、2つの間の非同期統合を可能にします。
イベント・ストリーミングは、イベント駆動型アーキテクチャーを構築するための基盤となるテクノロジーでもあります。
イベント駆動型アーキテクチャーでは、疎結合されたコンポーネントがイベントを介して通信できるようになりますが、イベントのストリームをブローカーに発行する代わりに、別のアプリまたはサービスが順番にアクションを実行するために使用できる単一目的のイベントを発行します。イベント駆動型アーキテクチャーによって提供されるインストリーム処理能力をイベント・ストリーミング機能と併用することで、企業は移動中のデータに対応し、すべての現在のデータと履歴データに基づいて迅速な意思決定を行うことができます。
近年、クラウド・プロバイダー(IBM Cloudを含む)は、イベント・ストリーミングの原理をサービスとして提供し始めています。サービスとしてのイベント・ストリーミングにより、企業は基盤となるインフラストラクチャー全体を管理しなくてもイベント・ストリーミングを簡単に採用できるようになり、イベント・ストリーミングのユースケースがさらに広がります。
IBM Event Automationは、完全に構成可能なソリューションであり、企業が歩むべき道程のどの段階にいても、イベント駆動型の取り組みを実現し、加速できるように支援します。イベント・ストリーム、イベント・エンドポイント管理、イベント処理機能は、イベントの価値を引き出すためのイベント駆動型アーキテクチャーの基盤作りを支援します。
IBM Cloud Pak for Integrationは、オープンソースのApache Kafkaが組み込まれたIBM Event Streamsのイベント・ストリーミング・プラットフォームを使用して、イベントが発生したときに対応できる高度なアプリケーションの構築を支援します。強化されたシステムの接続性、豊富な導入と運用、イベント駆動型アーキテクチャーの専門知識によって、重要なワークロードを処理します。
新たなイベントに対して迅速に対応するフォローオン・アクションを編成します。App Connectはイベント駆動型アーキテクチャーを備えたシステムに対応しており、ポーリング機能を使用すれば、イベント駆動型でないアーキテクチャーとも連携できます。タスクを自動化するフローを構成し、条件付きロジックを適用すれば、意思決定が効率化され、顧客要件の変化にも対応できます。
何が異なり、どのようなメリットをもたらし、どれがビジネスに正しい選択なのでしょうか。
ストリーム処理は、リアルタイム・データの中核をなします。これにより、ビジネスは継続的なデータ・ストリームを必要に応じて取り込み、分析のために最前線に置くことができるため、絶え間ない変化に対応することができます。
イベント駆動型に移行している組織は、競合他社との差別化を深め、最終的にはトップラインと収益に影響を与えることができます。
AsyncAPI規格がどのようにしてKafkaトピックの記述と文書化を可能にしているかをご覧ください。
AIをリアルタイムのイベント処理に活用することで、企業は異種のイベント間の点を結び、新しいトレンド、脅威、機会を検知して対応できます。
データ管理とは、組織のデータを取り入れ、処理、保護、保管することです。この場合、データはビジネスの成果を向上させるための戦略的な意思決定に利用されます。