静的なデータ・セットを扱う従来のバッチ処理とは異なり、ストリーム処理は、センサー、ソーシャルメディア・プラットフォーム、金融取引、モノのインターネット(IoT)デバイスなど、さまざまなソースからの継続的なデータの流れを扱います。これらのソース・システム内での各変更、アクション、発生は「イベント」として表すことができるため、ストリーム処理は「イベント・ストリーム処理」と呼ばれることもあります。
このリアルタイム・アプローチは、組織が新しい情報に即座に対応することを可能にし、ストリーム処理を不正アクセス検知、予測分析、パーソナライズされた顧客体験などのアプリケーションに最適なものにします。Apache Kafkaのようなプラットフォームは、大量のリアルタイム・データを信頼性高く大規模に公開、転送、処理できるようにすることで、ストリーム処理を支援するために広く利用されています。
ストリーム処理アーキテクチャには、リアルタイムでデータ・ストリームを取り込み、転送し、処理し、分析するテクノロジーとパターンが含まれています。
一般的なアーキテクチャーでは、継続的なデータ・ストリームはストリーミング・データ・プラットフォームを介して流れ、そこで取り込まれ、保管され、ダウンストリーム・システムで利用できるようになります。その後、ストリーム処理フレームワークとアプリケーションがデータをリアルタイムで処理し、下流の宛先に配信します。
ストリーム処理アーキテクチャの中には、LambdaやKappaなどのアーキテクチャー・パターンに従うものがあります。ラムダ・アーキテクチャーは、バッチ処理とストリーム処理の両方を組み合わせたデュアル・パイプライン方式を採用しており、過去のデータ分析や低遅延処理をサポートするためによく使用されます。Kappaは、すべてのデータに単一のストリーミング・パイプラインを使用するため、全体的なアーキテクチャーを簡素化でき、イベント駆動型データによく採用されます。
ストリーミング・データ・プラットフォームは、リアルタイムのデータ・パイプラインとアプリケーションの基盤を提供します。これらは、イベントを生成するシステムやアプリケーションと、それらのイベントを処理または分析するサービスやアプリケーションとの間でデータを流通させるメッセージング・ハイウェイおよびストレージ層として機能します。
Apache Kafkaは、イベント・ストリーミングにおいて最も広く利用されているオープンソース・プラットフォームの一つです。Kafkaは、分散型の耐久性のあるイベントログを通じて、アプリケーションがデータのストリームを公開・購読・保存・再生できるようにします。これらの機能は、 リアルタイム分析、 アプリケーションの連携、不正アクセス検知、IoT(モノのインターネット)データ処理、 イベント駆動型アーキテクチャーに有用です。
Confluentは、Apache Kafkaを中心に構築されたデータ・ストリーミング・プラットフォームです。マネージド・サービス、コネクター、ガバナンス、スキーマ管理、セキュリティー、ストリーム処理ツールを提供し、Kafkaの大規模運用を支援しています。
その他のストリーミング・データ・プラットフォームとサービスには、次のものがあります。
ストリーム処理フレームワークは、開発者が移動中のデータを処理および分析するために使用するツールです。Kafkaなどのストリーミング・プラットフォームは、イベントの取り込み、保管、転送に重点を置いているのに対し、ストリーム処理フレームワークは、計算、つまりパイプライン内を流れるデータのフィルタリング、変換、結合、集約、分析に重点を置いています。
多くのストリーム処理フレームワークはKafkaと統合されており、Kafkaのトピックを受信イベントのソースおよび処理結果の宛先として使用します。
ストリーム処理のフレームワークとツールの例としては、以下のようなものがあります。
患者のバイタル・サインを監視しているにもかかわらず、数時間ごとにしかデータを確認しないと想像してみてください。医療従事者は、即時の対応が必要な重大な変化を見逃してしまうでしょう。
組織は、業種・業務を問わず、遅延ベースまたはバッチベースのデータ処理のみを行っている場合、同様のリスクに直面しています。迅速かつ正確に行動するには、情報が発生した時点でそれにアクセスできる必要があります。ストリーム処理システムは、リアルタイムで継続的にデータを取り込み、分析することで、スケジュールされたバッチ抽出、変換、ロード(ETL)ワークロードに伴うレイテンシーを低減し、このニーズに対応します。
リレーショナル・データベース、データレイク、メッセージ・キュー、IoT(モノのインターネット)デバイス、エンタープライズ・アプリケーションなど、ハイブリッド環境やマルチクラウド環境にまたがる分散システムからのデータをリアルタイムで処理することで、ストリーム処理は企業がより統合された、ほぼリアルタイムの業務データ・ビューを構築するのに役立ちます。これは、異常検知、不正防止、動的価格設定、リアルタイム・パーソナライゼーションなどのユースケースをサポートします。
ストリーム処理は、継続的に更新されるデータに依存するAIイニシアチブの規模を拡大する上でもますます重要になっています。データ量とモデルの複雑さが増すにつれて、エンタープライズ・データ・インフラストラクチャーは、高スループットを処理し、分散環境全体で迅速に拡張できる必要があります。
IBM Institute for Business Valueの調査によると、調査対象の組織の約半数が、現代のワークロードを支えるために、ネットワーク最適化、高速なデータ処理、分散コンピューティングを優先しています。リアルタイムの大量のデータを処理して配信する機能がなければ、組織は洞察の遅延、モデル精度の低下、競争優位性の機会損失などのリスクを負うことになります。
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ストリーム処理は、リアルタイムの応答性を必要とする AI アプリケーションにおいて重要な役割を果たします。例えば、予知保全、不正アクセス検知、自律システム、パーソナライズされたレコメンデーションなどのAIシステムは、タイムリーな予測や意思決定を行うために、新鮮で高速なデータに依存することが多くなっています。
ストリーム処理により、AIアプリケーションは、産業機器のセンサーの読み取り値やWebサイト上のユーザー行動など、生成された時点のデータを取り込み、それに基づいて対応できるようになります。その結果、AIシステムは変化する状況にリアルタイムで対応できるようになります。この機能により、AIのアウトプットの精度と関連性の両方が向上します。実際、IBM Institute for Business Valueによると、調査対象組織の約55%が、リアルタイムAI機能による顧客体験の向上をAIインフラへの投資の主な理由として挙げています。
ストリーム処理は、AIモデルのデプロイメントと改善もサポートします。ストリーミング・パイプラインは、データレイク、データウェアハウス、フィーチャー・ストアにリアルタイムでデータを配信し、モデルのモニタリング、評価、再トレーニングのための継続的なデータソースを長期にわたって作成します。
ストリーム処理は、組織がリアルタイムでイベントに即座に対応し、リソースを最適化し、データ・エコシステム全体で多様なデータ・ソースを統合し、データ駆動型アプリケーションをサポートするのに役立つ幅広いメリットを提供します。主要なメリットには以下のようなものがあります。
ストリーム処理により、組織はデータが生成された時点で分析できるため、傾向、異常、機会をより迅速に検知できます。データ生成から分析までのレイテンシーを短縮することで、企業はミリ秒単位でイベントに対応できるようになります。これは、サイバーセキュリティー、不正アクセス検知、モニタリングなど、時間に敏感なワークロードにとってクリティカルです。
ストリーム処理テクノロジーは、分散システム全体で大量のデータを処理し、需要の変化に応じて容量を拡張できます。この柔軟性により、企業はインフラストラクチャーを全面的に刷新することなく、変動するワークロードに適応し、さまざまなデータ・ソースを統合し、新しいユースケースをサポートできます。
ストリーム処理は、レコメンデーション・エンジンと応答性の高いインターフェースを通じて、リアルタイムのパーソナライゼーションをサポートできます。これらの機能により、企業はより魅力的で関連性の高い顧客とのやり取りを実現できます。
システム、サプライチェーン、インフラを継続的かつリアルタイムに監視することで、組織はプロアクティブな保守とプロセスの最適化を実現し、ダウンタイムを削減してコストを低減できます。
ストリーム処理は、データレイク、データウェアハウス、レイクハウス、パイプラインにリアルタイム・データを継続的に供給し、データ・エンジニアリング、分析、機械学習、ビジネス・インテリジェンスのワークフローをサポートします。
ストリーム処理テクノロジーはバッチ処理システムを補完でき、組織が履歴データとリアルタイム・データの両方を分析できるようにします。例えば、Apache Sparkはバッチ分析とストリーミング分析の両方をサポートし、Apache Kafkaは下流処理向けのイベント・データを処理するイベント・ストリーミング基盤として機能します。
ストリーム処理は、その中核において次の3段階モデルに従います。
取り込み段階では、ストリーミング・コネクターまたはイベント・ストリーミング・プラットフォームが、センサー、接続されたデバイス、モバイル・アプリケーション、エンタープライズ・システムなどのソースからリアルタイム・データを取り込みます。受信データは多くの場合、境界がなく継続的に到着します。つまり、固定された終点を持たずに生成され、新しいイベントが発生するにつれて際限なく増加する可能性があります。Kafka ConnectやApache Pulsarといったツールは、高速なデータ取り込みを処理するための重要なツールです。
アウトプット・ストリームは最終段階であり、処理されたデータが下流システム(監視用のリアルタイム・ダッシュボード、ストレージ用のデータベース、またはワークフローとアラートを開始する自動化システムなど)に配信されます。多くの場合、処理済みデータも、柔軟な探索のためにデータレイクに転送されたり、構造化されたクエリーやレポート作成のためにデータウェアハウスに転送されたりします。
さまざまなシステムやデバイスからの入力により、大量の高速データが生成され、低遅延の処理が必要になります。これを効果的に処理するには、組織は水平方向に拡張でき、ノード間でワークロードを分散し、データ量が変動してもパフォーマンスを維持できるストリーム処理エンジンやシステムを設計する必要があります。
組織は、ストリーム処理がより広範なデータ・エコシステムにどのように適合するかを検討する必要もあります。データ・チームは、どのデータをリアルタイムで処理する必要があるか、どのデータを保存して後で分析する必要があるか、またストリーミング・システムが既存のアプリケーションやパイプラインとどのように対話する必要があるかを決定する必要があるため、この統合は困難になる可能性があります。
ストリーミング・アプリケーションは、アプリケーション・プログラミング・インターフェース(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万件のメッセージを処理するイベント駆動型メッセージング・アーキテクチャーにより、盗難などの問題を迅速に検知し、より適切な意思決定を可能にしました。
ストリーム処理とバッチ処理のどちらを選択するかは、データの性質、インサイトの緊急性、分析の複雑さによって異なります。
ストリーム処理は、リアルタイムまたはほぼリアルタイムの応答性を必要とするワークロードに最適です。例えば、ストリーム処理は、データ・パイプラインを流れる大量のデータを継続的に処理できるため、リアルタイムのデータ分析、ライブ監視、パーソナライズされたレコメンデーション、動的な在庫管理を可能にします。
一方、バッチ処理は、大量の履歴データを扱う場合や、レイテンシーがそれほど重要ではない場合に適しています。通常、レポート作成、データウェアハウス、長期的な傾向分析など、複数のデータ・ソースからのデータをスケジュールされた間隔で収集、保管、処理するタスクに使用されます。
バッチ処理は実装がより簡単で、即時の成果を必要としないワークロードではコスト効率が高くなります。多くの最新のアーキテクチャーでは、組織は両方のアプローチを組み合わせています。ストリーム処理を使用して即時のインサイトを得る一方で、バッチ処理を使用してより深い遡及的な分析を行います。このハイブリッド・モデルは、リアルタイム・データと履歴データの両方の価値を最大化します。
IBM DataOpsプラットフォーム・ソリューションでデータを整理し、信頼性を高め、ビジネスがAIを導入できるようにしましょう。
直感的なグラフィカル・インターフェースでスマートなストリーミング・データ・パイプラインを作成、管理できるため、ハイブリッド環境やマルチクラウド環境でのシームレスなデータ統合を促進します。
IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。
1「Emory University Hospital explores 'intensive care unit of the future'」、Emory University News Center、2013年11月5日