ストリーム処理とは?

ストリーム処理の定義

ストリーム処理は、リアルタイムで生成されたデータを取り込んで分析する方法です。


静的なデータ・セットを扱う従来のバッチ処理とは異なり、ストリーム処理は、センサー、ソーシャルメディア・プラットフォーム、金融取引、モノのインターネット(IoT)デバイスなど、さまざまなソースからの継続的なデータの流れを扱います。これらのソース・システム内での各変更、アクション、発生は「イベント」として表すことができるため、ストリーム処理は「イベント・ストリーム処理」と呼ばれることもあります。

このリアルタイム・アプローチは、組織が新しい情報に即座に対応することを可能にし、ストリーム処理を不正アクセス検知予測分析、パーソナライズされた顧客体験などのアプリケーションに最適なものにします。Apache Kafkaのようなプラットフォームは、大量のリアルタイム・データを信頼性高く大規模に公開、転送、処理できるようにすることで、ストリーム処理を支援するために広く利用されています。

ストリーム処理は人工知能(AI)機械学習(ML)アプリケーションにとっても重要であり、これらは正確な予測やインサイトを生み出すために、タイムリーで継続的に更新されるデータに依存することがよくあります。ストリーム処理を行わないと、モデルは古いデータや不完全なデータに依存する可能性があり、予測の精度が低下し、リスクが高まる可能性があります。

ストリーム処理アーキテクチャー

ストリーム処理アーキテクチャには、リアルタイムでデータ・ストリームを取り込み、転送し、処理し、分析するテクノロジーとパターンが含まれています。

一般的なアーキテクチャーでは、継続的なデータ・ストリームはストリーミング・データ・プラットフォームを介して流れ、そこで取り込まれ、保管され、ダウンストリーム・システムで利用できるようになります。その後、ストリーム処理フレームワークとアプリケーションがデータをリアルタイムで処理し、下流の宛先に配信します。

ストリーム処理アーキテクチャの中には、LambdaやKappaなどのアーキテクチャー・パターンに従うものがあります。ラムダ・アーキテクチャーは、バッチ処理とストリーム処理の両方を組み合わせたデュアル・パイプライン方式を採用しており、過去のデータ分析や低遅延処理をサポートするためによく使用されます。Kappaは、すべてのデータに単一のストリーミング・パイプラインを使用するため、全体的なアーキテクチャーを簡素化でき、イベント駆動型データによく採用されます。

ストリーミング・データ・プラットフォーム

ストリーミング・データ・プラットフォームは、リアルタイムのデータ・パイプラインとアプリケーションの基盤を提供します。これらは、イベントを生成するシステムやアプリケーションと、それらのイベントを処理または分析するサービスやアプリケーションとの間でデータを流通させるメッセージング・ハイウェイおよびストレージ層として機能します。

Apache Kafkaは、イベント・ストリーミングにおいて最も広く利用されているオープンソース・プラットフォームの一つです。Kafkaは、分散型の耐久性のあるイベントログを通じて、アプリケーションがデータのストリームを公開・購読・保存・再生できるようにします。これらの機能は、 リアルタイム分析アプリケーションの連携、不正アクセス検知、IoT(モノのインターネット)データ処理、 イベント駆動型アーキテクチャーに有用です。

Confluentは、Apache Kafkaを中心に構築されたデータ・ストリーミング・プラットフォームです。マネージド・サービス、コネクター、ガバナンス、スキーマ管理、セキュリティー、ストリーム処理ツールを提供し、Kafkaの大規模運用を支援しています。

その他のストリーミング・データ・プラットフォームとサービスには、次のものがあります。

  • マネージドKafkaサービス:ユーザー向けにKafkaインフラストラクチャーを運用するクラウドホスト型サービス。

  • Amazon Kinesis:リアルタイムのデータ・ストリーミングと取り込みのためのクラウドネイティブ・サービス。

  • Google Cloud Pub/Sub:ストリーミング分析とアプリケーション連携のためのサーバーレスのメッセージングおよびイベント取り込みサービス。

  • Microsoft Azure Event Hubs:ストリーミング・データ・ワークロード向けの高スループットなイベント取り込みサービス。

ストリーム処理フレームワーク

ストリーム処理フレームワークは、開発者が移動中のデータを処理および分析するために使用するツールです。Kafkaなどのストリーミング・プラットフォームは、イベントの取り込み、保管、転送に重点を置いているのに対し、ストリーム処理フレームワークは、計算、つまりパイプライン内を流れるデータのフィルタリング、変換、結合、集約、分析に重点を置いています。

多くのストリーム処理フレームワークはKafkaと統合されており、Kafkaのトピックを受信イベントのソースおよび処理結果の宛先として使用します。

ストリーム処理のフレームワークとツールの例としては、以下のようなものがあります。

  • Kafka Streams:Apache Kafka上で直接ストリーム処理アプリケーションを構築するためのJavaライブラリー。

  • ksqlDB:Kafka Streamsを基盤としたSQLベースのストリーム処理エンジンで、開発者がSQL構文を使用してストリーミング・データを処理およびクエリーできるようにします。

  • Apache Flink:ステートフル計算と複雑なイベント処理向けに設計された、インメモリ管理を備えたストリーム処理フレームワーク。一般的には、不正アクセス検知やモニタリングなどのユースケースで使用されます。
  • Apache Spark Structured Streaming:レガシーのApache Spark Streamingソリューションをベースに構築された、バッチ処理とリアルタイム分析をサポートするストリーム処理エンジンです。ストリーミングと履歴データ分析を組み合わせるためによく使用されます。

  • Apache Storm:境界のないデータ・ストリームを非常に低遅延で処理するための分散型リアルタイム計算システム。

ストリーム処理を使う理由

患者のバイタル・サインを監視しているにもかかわらず、数時間ごとにしかデータを確認しないと想像してみてください。医療従事者は、即時の対応が必要な重大な変化を見逃してしまうでしょう。

組織は、業種・業務を問わず、遅延ベースまたはバッチベースのデータ処理のみを行っている場合、同様のリスクに直面しています。迅速かつ正確に行動するには、情報が発生した時点でそれにアクセスできる必要があります。ストリーム処理システムは、リアルタイムで継続的にデータを取り込み、分析することで、スケジュールされたバッチ抽出、変換、ロード(ETL)ワークロードに伴うレイテンシーを低減し、このニーズに対応します。

リレーショナル・データベースデータレイク、メッセージ・キュー、IoT(モノのインターネット)デバイス、エンタープライズ・アプリケーションなど、ハイブリッド環境やマルチクラウド環境にまたがる分散システムからのデータをリアルタイムで処理することで、ストリーム処理は企業がより統合された、ほぼリアルタイムの業務データ・ビューを構築するのに役立ちます。これは、異常検知、不正防止、動的価格設定、リアルタイム・パーソナライゼーションなどのユースケースをサポートします。

ストリーム処理は、継続的に更新されるデータに依存するAIイニシアチブの規模を拡大する上でもますます重要になっています。データ量とモデルの複雑さが増すにつれて、エンタープライズ・データ・インフラストラクチャーは、高スループットを処理し、分散環境全体で迅速に拡張できる必要があります。

IBM Institute for Business Valueの調査によると、調査対象の組織の約半数が、現代のワークロードを支えるために、ネットワーク最適化、高速なデータ処理、分散コンピューティングを優先しています。リアルタイムの大量のデータを処理して配信する機能がなければ、組織は洞察の遅延、モデル精度の低下、競争優位性の機会損失などのリスクを負うことになります。

ストリーム処理はどのようにAIを実現するのか?

ストリーム処理は、リアルタイムの応答性を必要とする AI アプリケーションにおいて重要な役割を果たします。例えば、予知保全、不正アクセス検知、自律システム、パーソナライズされたレコメンデーションなどのAIシステムは、タイムリーな予測や意思決定を行うために、新鮮で高速なデータに依存することが多くなっています。

ストリーム処理により、AIアプリケーションは、産業機器のセンサーの読み取り値やWebサイト上のユーザー行動など、生成された時点のデータを取り込み、それに基づいて対応できるようになります。その結果、AIシステムは変化する状況にリアルタイムで対応できるようになります。この機能により、AIのアウトプットの精度と関連性の両方が向上します。実際、IBM Institute for Business Valueによると、調査対象組織の約55%が、リアルタイムAI機能による顧客体験の向上をAIインフラへの投資の主な理由として挙げています。

ストリーム処理は、AIモデルのデプロイメントと改善もサポートします。ストリーミング・パイプラインは、データレイク、データウェアハウス、フィーチャー・ストアにリアルタイムでデータを配信し、モデルのモニタリング、評価、再トレーニングのための継続的なデータソースを長期にわたって作成します。

ストリーム処理のメリットとは

ストリーム処理は、組織がリアルタイムでイベントに即座に対応し、リソースを最適化し、データ・エコシステム全体で多様なデータ・ソースを統合し、データ駆動型アプリケーションをサポートするのに役立つ幅広いメリットを提供します。主要なメリットには以下のようなものがあります。

  • 迅速な意思決定に役立つリアルタイムのインサイト
  • 拡張性と柔軟性
  • 顧客体験の向上
  • 運用効率
  • データ・エコシステムとの統合
  • ハイブリッド・アーキテクチャーのサポート

より迅速な意思決定のためのリアルタイム・インサイト

ストリーム処理により、組織はデータが生成された時点で分析できるため、傾向、異常、機会をより迅速に検知できます。データ生成から分析までのレイテンシーを短縮することで、企業はミリ秒単位でイベントに対応できるようになります。これは、サイバーセキュリティー、不正アクセス検知、モニタリングなど、時間に敏感なワークロードにとってクリティカルです。

拡張性と柔軟性

ストリーム処理テクノロジーは、分散システム全体で大量のデータを処理し、需要の変化に応じて容量を拡張できます。この柔軟性により、企業はインフラストラクチャーを全面的に刷新することなく、変動するワークロードに適応し、さまざまなデータ・ソースを統合し、新しいユースケースをサポートできます。

顧客体験の向上

ストリーム処理は、レコメンデーション・エンジンと応答性の高いインターフェースを通じて、リアルタイムのパーソナライゼーションをサポートできます。これらの機能により、企業はより魅力的で関連性の高い顧客とのやり取りを実現できます。

運用効率

システム、サプライチェーン、インフラを継続的かつリアルタイムに監視することで、組織はプロアクティブな保守とプロセスの最適化を実現し、ダウンタイムを削減してコストを低減できます。

データ・エコシステムとの統合

ストリーム処理は、データレイク、データウェアハウス、レイクハウス、パイプラインにリアルタイム・データを継続的に供給し、データ・エンジニアリング、分析、機械学習、ビジネス・インテリジェンスのワークフローをサポートします。

ハイブリッド・アーキテクチャーのサポート

ストリーム処理テクノロジーはバッチ処理システムを補完でき、組織が履歴データとリアルタイム・データの両方を分析できるようにします。例えば、Apache Sparkはバッチ分析とストリーミング分析の両方をサポートし、Apache Kafkaは下流処理向けのイベント・データを処理するイベント・ストリーミング基盤として機能します。

AI Academy

生成AIの成功の鍵はデータ管理

生成AIの使用を成功させるために、高品質のデータが不可欠である理由をご覧ください。

ストリーム処理の仕組み

ストリーム処理は、その中核において次の3段階モデルに従います。

  • 取り込み
  • 処理
  • アウトプット

インジェスト

取り込み段階では、ストリーミング・コネクターまたはイベント・ストリーミング・プラットフォームが、センサー、接続されたデバイス、モバイル・アプリケーション、エンタープライズ・システムなどのソースからリアルタイム・データを取り込みます。受信データは多くの場合、境界がなく継続的に到着します。つまり、固定された終点を持たずに生成され、新しいイベントが発生するにつれて際限なく増加する可能性があります。Kafka ConnectやApache Pulsarといったツールは、高速なデータ取り込みを処理するための重要なツールです。

処理

処理段階では、データは到着時に変換、フィルタリング、拡充、または分析されます。このフェーズには、メトリクスの集約、異常の検出、複数のストリームの結合、リアルタイム推論のための機械学習モデルの適用などのオペレーションが含まれます。

ストリーム・プロセッサーは、組織が多様なソースから得られる大量の高速データを管理・分析する必要があるビッグデータ環境において、特に価値を発揮します。これらのオペレーションは、処理パイプラインを通じてオーケストレーションされます。処理パイプラインは、データがシステム内を流れる際に適用される変換とロジックのシーケンスを定義します。

アウトプット

アウトプット・ストリームは最終段階であり、処理されたデータが下流システム(監視用のリアルタイム・ダッシュボード、ストレージ用のデータベース、またはワークフローとアラートを開始する自動化システムなど)に配信されます。多くの場合、処理済みデータも、柔軟な探索のためにデータレイクに転送されたり、構造化されたクエリーやレポート作成のためにデータウェアハウスに転送されたりします。

ストリーム処理の課題

ストリーム処理には多くの利点がある一方で、データ管理アーキテクチャー、統合、運用など、さまざまな面で課題が生じる可能性があります。

  • 多様なソースからの大量かつ高速データの管理
  • より広範なデータ戦略へのストリーム処理の統合
  • 信頼性の高いAPIとリアルタイムのアプリケーション・ロジックの設計
  • 適切なプログラミング言語の選択
  • データの一貫性とスキーマ・ガバナンスの維持
  • リアルタイム・クエリーとハイブリッド分析のサポート

多様なソースからの大量かつ高速データの管理

さまざまなシステムやデバイスからの入力により、大量の高速データが生成され、低遅延の処理が必要になります。これを効果的に処理するには、組織は水平方向に拡張でき、ノード間でワークロードを分散し、データ量が変動してもパフォーマンスを維持できるストリーム処理エンジンやシステムを設計する必要があります。

ストリーム処理をより広範なデータ戦略に統合

組織は、ストリーム処理がより広範なデータ・エコシステムにどのように適合するかを検討する必要もあります。データ・チームは、どのデータをリアルタイムで処理する必要があるか、どのデータを保存して後で分析する必要があるか、またストリーミング・システムが既存のアプリケーションやパイプラインとどのように対話する必要があるかを決定する必要があるため、この統合は困難になる可能性があります。

信頼性の高いAPIとリアルタイムのアプリケーション・ロジックの設計

ストリーミング・アプリケーションは、アプリケーション・プログラミング・インターフェース(API)、イベント駆動型インターフェース、マイクロサービスを通じて他のサービスと頻繁に相互作用します。さらに、開発者は、異常検知、予測モデリング、リアルタイムの意思決定など、動的なデータを分析するために使用されるアルゴリズムの複雑さを考慮する必要があります。

適切なプログラミング言語の選択

ストリーム処理では、チームがパフォーマンス、スケーラビリティ、および開発のニーズに合ったツールと言語を選択する必要があります。開発者はしばしばJavaとPythonを利用しており、それぞれストリーム処理エコシステム内で異なる役割を果たしています。Javaは通常、Apache KafkaやApache Flinkなどのフレームワークでスケーラブルな本番環境のパイプラインを構築するために使用され、Pythonはラピッド・プロトタイピングや機械学習モデルのストリーミング・ワークフローへの統合に使用されます。

データの一貫性とスキーマ・ガバナンスの維持

システムを通過するデータの一貫性と解釈可能性を維持するために、ストリーム処理プラットフォームはデータ形式、タイプ、構造を定義するスキーマに依存しています。これらのスキーマは、分散ノード全体でデータを検証し、リアルタイム・クエリーをサポートするのに役立ちます。強力なスキーマ・ガバナンスがなければ、イベント形式の変更によってダウンストリーム・アプリケーション、ダッシュボード、または機械学習パイプラインが中断される可能性があります。

リアルタイム・クエリーとハイブリッド分析のサポート

多くのストリーム処理プラットフォームは、ユーザーが複雑なコードを記述することなくストリーミング・データをフィルタリング、集約、結合できるSQLライクなインターフェースを提供しています。ただし、移動中のデータへのクエリーは困難な場合があります。組織はまた、リアルタイムの洞察と履歴コンテキストを組み合わせるために、ストリーミング・システムをバッチ処理環境や履歴分析環境と統合する必要があり、これにより複雑さが増す可能性があります。

実社会におけるストリーム処理のユースケース

さまざまな業種・業務の組織が、データが生成された瞬間に対応するためにストリーム処理アプリケーションを採用しています。以下は、さまざまな業界がストリーム処理を活用して効率、患者のアウトカム、顧客エンゲージメントなどを改善する方法の例です。

銀行業界と金融市場

銀行はストリーム処理を使用して、取引の発生と同時に分析し、不審なパターンや異常を迅速に検知します。場所、デバイス、取引履歴などの複数のデータ・ポイントを関連付けることで、システムは不審なアクティビティーを深刻化する前に検知できます。リアルタイムのインサイトにより、トレーダーやリスク管理者は市場の変動に即座に対応することもできます。取引所や内部システムからのライブ・フィードを統合することで、組織は情報に基づいた意思決定をより迅速に行い、リスクを軽減できます。

保険

ストリーム処理は、保険契約の詳細、写真、IoT(モノのインターネット)センサー、その他のデータ・ソースからリアルタイムでデータを取り込み、保険金請求の検証を迅速化します。自動化されたワークフローは、単純な請求を即座に承認し、複雑なケースはレビューのためにルーティングできます。これにより、処理時間が短縮され、顧客満足度が向上し、運用コストが削減されます。

ヘルスケア

病院や医療従事者はストリーム処理を活用して、敗血症、心不全、肺炎などの合併症を示す可能性のあるパターンを特定し、タイムリーな介入を事前に行えるようにすることで、患者の転帰を改善しています。例えば、Emory University Hospital(エモリー大学病院)は、IBMのストリーミング分析プラットフォームを使用して、ICUで患者1人当たり毎秒10万件以上のデータ・ポイントを処理し、生命を脅かす変化を即座に検知することで、より迅速な介入を可能にしました1

通信

通信プロバイダーは、ストリーム処理を使用して、ネットワークの性能と顧客とのやり取りをリアルタイムで監視します。通信事業者はストリーミング分析を活用して、毎日何十億もの通話詳細記録を処理し、サービスの異常や不正行為を即座に検知できます。また、通話中の音声やイベント・ストリームを分析することで、システムは解約リスクを予測し、顧客をリテンション担当者へ事前にルーティングします。

小売

小売企業は、より迅速な洞察を得て、データ駆動型の意思決定を改善するために、ストリーム処理を活用しています。ある食料品小売業者は、1日1回のバッチ処理から、ほぼリアルタイムのメッセージ取り込みへ移行しました。2,400を超える店舗からの1日当たり5,000万件のメッセージを処理するイベント駆動型メッセージング・アーキテクチャーにより、盗難などの問題を迅速に検知し、より適切な意思決定を可能にしました。

ストリーム処理とバッチ処理の比較

ストリーム処理とバッチ処理のどちらを選択するかは、データの性質、インサイトの緊急性、分析の複雑さによって異なります。

ストリーム処理は、リアルタイムまたはほぼリアルタイムの応答性を必要とするワークロードに最適です。例えば、ストリーム処理は、データ・パイプラインを流れる大量のデータを継続的に処理できるため、リアルタイムのデータ分析、ライブ監視、パーソナライズされたレコメンデーション、動的な在庫管理を可能にします。

一方、バッチ処理は、大量の履歴データを扱う場合や、レイテンシーがそれほど重要ではない場合に適しています。通常、レポート作成、データウェアハウス、長期的な傾向分析など、複数のデータ・ソースからのデータをスケジュールされた間隔で収集、保管、処理するタスクに使用されます。

バッチ処理は実装がより簡単で、即時の成果を必要としないワークロードではコスト効率が高くなります。多くの最新のアーキテクチャーでは、組織は両方のアプローチを組み合わせています。ストリーム処理を使用して即時のインサイトを得る一方で、バッチ処理を使用してより深い遡及的な分析を行います。このハイブリッド・モデルは、リアルタイム・データと履歴データの両方の価値を最大化します。

執筆者

Judith Aquino

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

関連ソリューション
DataOpsプラットフォーム・ソリューション

IBM DataOpsプラットフォーム・ソリューションでデータを整理し、信頼性を高め、ビジネスがAIを導入できるようにしましょう。

DataOpsソリューションの詳細はこちら
IBM StreamSets

直感的なグラフィカル・インターフェースでスマートなストリーミング・データ・パイプラインを作成、管理できるため、ハイブリッド環境やマルチクラウド環境でのシームレスなデータ統合を促進します。

StreamSetsの詳細はこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
次のステップ

データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。

  1. データ管理ソリューションの詳細はこちら
  2. watsonx.dataについてはこちら
脚注

1「Emory University Hospital explores 'intensive care unit of the future'」、Emory University News Center、2013年11月5日