ストリーミングデータは、数千ものデータソースによって継続的に生成されるデータです。通常は、小さなサイズ (キロバイト単位) で同時にデータレコードが送信されます。ストリーミングデータには、お客様のモバイルアプリケーションやウェブアプリケーションで顧客によって生成されるログファイル、e コマースでの購入内容、ゲーム内でのプレイヤーのアクティビティ、さらにはソーシャルネットワーク、証券取引所の立会場、または地理空間サービスからの情報、およびデータセンター内の接続されたデバイスや計器からのテレメトリなど、広範なデータがあります。

これらのデータは、レコード単位またはスライドした時間窓で連続的および増分的に処理する必要があり、相関分析、集計、フィルタリング、およびサンプリングなど、広範な分析に使用することができます。これらの分析から得られる情報により、企業では、顧客のサービス使用状況 (計測/請求用)、サーバー アクティビティ、ウェブサイトのクリック数、ならびにデバイス、ユーザー、物品の地理的場所など、自社ビジネスおよび顧客アクティビティの様々な側面を可視化し、新しい状況にすばやく対応できるようになります。たとえば、ソーシャルメディアのストリームを継続的に分析することで、自社のブランドや製品への好感度の変化を追跡し、必要に応じてすばやく対応することができます。


新しい動的なデータが継続的に生成されるほとんどのシナリオで、ストリーミングデータ処理には利点があります。これは、ほとんどの業界およびビッグデータのユースケースに当てはまります。企業では一般に、システムログの収集や、ローリング最小値/最大値の計算などの基本的処理をはじめとする、シンプルなアプリケーションから始めます。その後、このようなアプリケーションはより洗練された、ほぼリアルタイムの処理に移行します。当初は、アプリケーションではデータストリームを処理してシンプルなレポートを生成し、重要指標が特定のしきい値を超えたときにレスポンスとしてアラームを発するなどのシンプルなアクションを実行することができます。最終的には、そのようなアプリケーションでも、機械学習のアルゴリズムを適用するなど、洗練された形のデータ分析を行い、データから深いインサイトを抽出するようになります。やがて、現在最も人気のある動画を検出するための減衰時間窓などの複雑なストリームおよびイベント処理アルゴリズムが適用され、さらに充実したインサイトが得られるようになります。


  • 輸送車両、産業機器、および農業機械のセンサーは、ストリーミングアプリケーションにデータを送信しています。アプリケーションは、パフォーマンスをモニタリングして事前に潜在的なエラーを検出し、交換部品を自動的に発注して機械のダウンタイムを防ぎます。
  • ある金融機関では、株式市場の変化をリアルタイムで追跡して最大損失予想額を計算し、株価の変動に基づいて自動的にポートフォリオをリバランスしています。
  • ある不動産会社のウェブサイトでは、コンシューマーのモバイルデバイスのデータサブセットを追跡し、コンシューマーの現在住所に基づいて訪れることのできる推薦物件をリアルタイムで紹介します。
  • ある太陽光発電会社では、顧客に対する出力電力を維持できないと、違約金を支払う必要があります。その会社では、ストリーミングデータアプリケーションを実装して現場の全パネルをモニタリングし、リアルタイムで修理をスケジュールして、各パネルの低出力の時間とその間の違約金の支払いを最小限に抑えることができました。
  • あるメディアでは、オンライン資産から数十億ものクリックストリームレコードをストリーミングし、ユーザーに関するデモグラフィック情報が含まれるデータを集計および拡充して、サイトへのコンテンツ配置を最適化し、高い関連性とより良いエクスペリエンスをユーザーに提供しています。
  • あるオンラインゲーム会社では、プレイヤーとゲームのインタラクションに関するストリーミングデータを収集して、それをゲームプラットフォームに供給しています。さらに、そのデータをリアルタイムで分析することで、プレイヤーを囲い込むためのインセンティブとダイナミックなエクスペリエンスを提供しています。

ストリーミングデータを扱う前に、ストリーム処理バッチ処理について整理しておくとよいでしょう。バッチ処理は、様々なデータセットに対する無作為のクエリをコンピューティングするのに使用できます。バッチ処理では、通常、対象となるすべてのデータから得られた結果をコンピューティングし、ビッグデータセットを深く分析します。バッチジョブをサポートするプラットフォームの例には、Amazon EMR などの MapReduce ベースのシステムがあります。これに対し、ストリーム処理では、データのシーケンスを取り込んで、データレコードが供給されるたびに増分的にメトリックス、レポート、サマリー統計を更新する必要があります。ストリーム処理はリアルタイムモニタリングおよびレスポンス機能に適しています。

  バッチ処理 ストリーム処理
データ範囲 データセット内のデータの全部または大部分に対するクエリまたは処理。 ローリング時間窓でのデータまたは直近のデータレコードのみに対するクエリまたは処理。
データサイズ
大きなデータバッチ。
少数のレコードから成るマイクロバッチまたは個々のレコード。
パフォーマンス 数分から数時間のレイテンシー。 レイテンシーは数秒または数ミリ秒程度に抑える必要があります。
分析 複雑な解析。 シンプルなレスポンス機能、集計、およびローリングメトリックス。

多くの組織では、これら 2 つのアプローチを組み合わせてハイブリッドモデルを構築しており、リアルタイムレイヤーとバッチレイヤーを管理しています。リアルタイムインサイトを抽出するため、データはまず Amazon Kinesis などのストリーミングデータプラットフォームによって処理されます。次に、S3 などのストアに永続化されます。S3 では、データは様々なバッチ処理のユースケースに合わせて変換、ロードされます。


ストリーミングデータ処理には、ストレージレイヤーと処理レイヤーの 2 つのレイヤーが必要です。ストレージレイヤーでは、レコードの並べ替えをサポートするだけでなく、大きなデータストリームを低コストで高速に読み書きして再生できるようにする強力な整合性もサポートする必要があります。処理レイヤーでは、ストレージレイヤー内のデータを使用し、そのデータに対するコンピューティングを実行して、その実行後に不要になったデータを削除するようにストレージレイヤーに通知します。また、ストレージレイヤーと処理レイヤーの両方について、拡張性、データの耐久性、および耐障害性を考慮する必要もあります。このため、Amazon Kinesis StreamsAmazon Kinesis FirehoseApache Kafka、Apache Flume、Apache Spark Streaming、および Apache Storm など、ストリーミングデータアプリケーションの構築に必要なインフラストラクチャを提供する多くのプラットフォームが登場しています。


アマゾン ウェブ サービス (AWS) には、ストリーミングデータを処理するためのオプションがいくつか用意されています。Amazon Kinesis で提供されるマネージドストリーミングデータサービスを利用することも、Amazon EC2 のクラウドで独自のストリーミングデータソリューションをデプロイ、管理することもできます。

Amazon Kinesis は、AWS のデータをストリーミングするためのプラットフォームであり、ストリーミングデータのロードおよび分析を簡易化する強力なサービスを提供するとともに、特定のニーズ用のカスタムストリーミングデータアプリケーションも作成できるようにします。Amazon Kinesis には、Amazon Kinesis Firehose と Amazon Kinesis Streams の 2 つのサービスが用意されています。

また、Amazon EC2 と Amazon EMR では、Apache Kafka、Apache Flume、Apache Spark Streaming、および Apache Storm など、他のストリーミングデータプラットフォームも実行することができます。 

Amazon Kinesis Streams を使用すると、特定のニーズに合わせてストリーミングデータを処理、分析する独自のカスタムアプリケーションを構築することができます。1 時間に数十万のソースからの数テラバイトのデータを継続的にキャプチャ、保存することができます。そして、リアルタイムダッシュボードの機能の強化、アラートの生成、動的な価格設定と広告の実装などを行うために、Amazon Kinesis Streams のデータを使用するアプリケーションを構築することができます。Amazon Kinesis Streams では、Kinesis Client Library (KCL)、Apache Storm、Apache Spark Streaming などからストリーミング処理フレームワークを選択することができます。Amazon Kinesis Streams の詳細はこちらをご覧ください »

Amazon Kinesis Firehose は、ストリーミングデータを AWS にロードする最も簡単な方法です。これにより、ストリーミングデータをキャプチャし、Amazon S3 および Amazon Redshift に自動的にロードすることで、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析できるようになります。すばやく ELT アプローチを実装して、ストリーミングデータの利点を手軽に得ることができます。Amazon Kinesis Firehose の詳細 »


選択したストリーミングデータプラットフォームを Amazon EC2 と Amazon EMR にインストールし、独自のストリームストレージレイヤーと処理レイヤーを構築することができます。Amazon EC2 と Amazon EMR にストリーミングデータソリューションを構築することで、インフラストラクチャのプロビジョニング時の摩擦を回避し、様々なストリームストレージフレームワークとストリーム処理フレームワークにアクセスできるようになります。ストリーミングデータのストレージレイヤーの選択肢には、Apache KafkaApache Flume があります。ストリームの処理レイヤーの選択肢には、Apache Spark StreamingApache Storm があります。