ストリーミングデータとは

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

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

ストリーミングデータの利点

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

ストリーミングデータの例

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

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

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


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

 

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

ストリーミングデータ処理での課題

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

AWS でのストリーミングデータの処理

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

Amazon Kinesis は AWS のデータをストリーミングするためのプラットフォームで、ストリーミングデータの取り込みおよび分析を簡易化する強力なサービスを提供するとともに、特定のニーズ用のカスタムストリーミングデータアプリケーションも作成できるようにします。Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams、および Amazon Managed Streaming for Apache Kafka (Amazon MSK) の 3 つのサービスを提供します。

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

Amazon Kinesis Data Streams

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

Amazon Kinesis Data Streams の詳細 »

Amazon Kinesis Data Firehose

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

Amazon Kinesis Data Firehose の詳細 »

Amazon Managed Streaming for Apache Kafka (Amazon MSK)

Amazon MSK は、ストリーミングデータの処理に Apache Kafka を使用するアプリケーションの構築と実行を容易に行えるようにする、フルマネージド型のサービスです。Apache Kafka は、リアルタイムのストリーミングデータパイプラインおよびアプリケーションを構築するためのオープンソースプラットフォームです。Amazon MSK では、ネイティブ Apache Kafka API を使用し、データレイクへの入力、データベースとの間での変更のストリーミング、機械学習および分析アプリケーションの強化を行うことができます。

Amazon MSK の詳細 »

Amazon EC2 で動作するその他のストリーミングソリューション

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

次のステップ

サインアップして Amazon 無料利用枠を獲得
無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
Amazon Kinesis コンソールで構築を開始
AWS コンソールで構築を開始する

AWS マネジメントコンソールで Amazon Kinesis を使用して構築を始めましょう。

サインイン