概要
ストリーミングデータはリアルタイム情報の継続的なフローであり、イベント駆動型アーキテクチャのソフトウェアモデルの基盤です。先進的なアプリケーションでは、ストリーミングデータを使用して、データの処理、保存、分析を行うことができます。
ストリーミングデータの捉え方の 1 つとして、データセット (多くの場合、非常に高速で変化するもの) に発生した変更またはイベントの連続しているログと考えることができます。
ストリーミングデータのソースになり得る大規模で動きの速いデータセットは、金融取引、IoT (モノのインターネット)、センサーデータ、物流業務、小売注文、入院患者の監視など、多岐にわたります。次世代のメッセージングと同様、データストリーミングは、イベントへのリアルタイムの応答を必要とする状況に適しています。
ストリーミングデータの一例は、イベント駆動型アーキテクチャの基盤を形成するイベントデータです。イベント駆動型アーキテクチャは、アジャイル開発の一環として、疎結合のマイクロサービスを統合します。
ストリーミングデータが重要である理由
アプリケーションユーザーは、リアルタイムのデジタルエクスペリエンスを期待しています。ストリーミングデータを使用して処理できるアプリケーションは、パフォーマンスのレベルを高め、顧客満足度を向上させます。
従来、イベントへのリアルタイムの応答を必要とするアプリケーションは、データベースとメッセージ処理システムを利用していました。そうしたシステムは、現在のような、急速に生成されるデータの流れを処理しきれません。たとえば、従来の要求駆動型システムでは、複数のソースから出される動きの速いデータ要求に迅速に対応するのが困難な場合があります。
イベント・ストリーミング・モデルでは、イベントはデータベースに保存されるのではなく、ログに書き込まれます。イベントコンシューマーはストリームの任意の部分から読み取りを行い、いつでもストリームに接続することができます。
イベントストリーミング処理は、ストリームから意味のあるパターンを検出するのに使用できます。イベントストリーム処理は、データ・ストリーミング・プラットフォームを使用して、イベントを取り込み、イベントストリームを処理または変換します。
Red Hat のリソース
データストリームの一般的なユースケースとは
ストリーミングデータと言えば、リアルタイム・アプリケーションです。一般的なユースケースには次のようなものがあります。
- デジタルエクスペリエンス:情報への即時アクセスを利用します。
- マイクロサービス・アプリケーション:アジャイルなソフトウェア開発をサポートします。
- ストリーミングシナリオ:以前はバッチ処理で駆動していたデータベース駆動型アプリケーションをモダナイズします。
- リアルタイム分析:特に複数のソースからデータを取り込むもの。
- エッジコンピューティング:統合されていない多様なデバイスやシステムからのデータを統合します。
メッセージング、ジオロケーション、株式取引、不正検出、在庫管理、マーケティング分析、IT システム監視、およびインダストリアル IoT データ用に構築されたアプリケーションは、データストリームの一般的なユースケースです。
Apache Kafka によるストリーミングデータ処理
Apache Kafka はオープンソースの分散メッセージング・プラットフォームであり、大量のリアルタイムのストリーミングデータを処理するための最も一般的な手段の 1 つになっています。
ソフトウェア開発者は、Kafka を使用してデータパイプラインとストリーミング・アプリケーションを構築します。Kafka を使用すると、アプリケーションで次のことが可能になります。
- レコードのストリームの公開とサブスクライブ
- レコードのストリームの保存
- 発生したレコードの処理
Kafka は高速で、水平方向にスケーラブルで、フォールトトレラントであり、ストリーミングデータを管理するように設計されています。Kafka によって、特定のアプリケーションでのデータ共有に対してポイントツーポイントの統合の必要性が最小化されるので、レイテンシーがミリ秒単位にまで短縮されます。つまり、データがすぐにユーザーの手に渡るようになります。これは、IT 運用や e コマースなど、リアルタイムでデータを取得する必要があるユースケースにおいては大きなメリットになり得ます。
Apache Kafka は毎秒数百万のデータポイントを処理できるため、ビッグデータの課題に対する最適な解決策です。IoT やソーシャルメディアなど、多数のデータ処理ユースケースにおいて、データは爆発的に増加しており、現在のデータ量を基準とするアプリケーションではまもなく手に負えなくなります。
データストリーミングの課題とは
定義上、データストリームはシーケンス情報をリアルタイムで配信する必要があります。ストリーミング・データ・アプリケーションには、アクティビティが多い時間帯であっても一貫性があり可用性の高いストリームが必要です。これらの品質を満たすデータストリームの配信や利用は困難な場合があります。
ストリーム内の生データの量は急増する可能性があります。市場の急落時の株式取引、大規模なスポーツイベント中のソーシャルメディア投稿、システム障害時のログアクティビティなどによって生じる新規データは、突然、爆発的に増加します。データストリームは、設計上スケーラブルである必要があります。アクティビティが多い時間帯であっても、適切なデータシーケンス、データの一貫性、および可用性を優先する必要があります。また、部分的なシステム障害が発生した場合の耐久性も考慮した設計であることが必要です。
分散型のハイブリッドクラウド環境全体で、ストリーミングデータのクラスタには特別な配慮が必要です。一般的なストリーミング・データ・ブローカーはステートフルで、再起動した場合に備えて保持する必要があります。スケーリングでは、メッセージングサービスが期待どおりに動作し、レコードが失われないようにするために、慎重なオーケストレーションが必要です。
ストリーミング・データ・サービスを使用する理由
複雑で可用性の高いリアルタイムのストリーミング・データ・プラットフォームを提供するという課題は、大量のリソースを消費する可能性があります。多くの場合、社内の IT 組織の能力を超える専門知識とハードウェアが必要になります。
そのため、ストリーミングデータのユーザーの多くは、インフラストラクチャおよびシステム管理をサービスプロバイダーに任せられるマネージド・クラウドサービスを選択します。これにより、組織は複雑なストリーミング・データ・ソリューションの管理や運用ではなく、コアコンピタンスに集中することができます。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。