【Amazon Kinesis】
Amazon Kinesisはストリーミングデータをリアルタイムで収集・処理するサービスです。
ストリーミングデータとは継続的に生成されるデータのことをいいます。例えばスマートフォンアプリなどでユーザーが生成するログや、証券取引所の株取引情報、SNSやオンラインゲームのデータなどが該当します。Kinesisではこのようなストリーミングデータを収集し、他のAWSサービスと連携してサンプリングや分析などができます。なお、ストリーミングデータを処理することを「ストリーム処理」といいます。
一方、「バッチ処理」はまとまったデータに対して一括で処理を行う方式です。バッチ処理は、日次、週次、月次、年次の集計処理のように特定範囲のデータに対して定期的に実行されます。
多くの企業ではストリーム処理とバッチ処理の両方を用いてシステムを構築し、柔軟なデータ処理を行っています。
【Kinesisの種類】
Kinesisには用途に応じた複数のサービスがあります。
■Kinesis Data Streams
Kinesis Data Streamsは外部から送信されるストリーミングデータを収集するサービスです。センサーなどが生成したストリーミングデータをKinesis Data Streamsのストリームへ送信し、ストリーム上のデータは分析や機械学習などを行う他のAWSサービス(例えばLambda、Data Firehose、Managed Service for Apache Flinkなど)がリアルタイムに読み取って処理します。なお、収集したデータは一定期間(デフォルトで24時間、最長で1年)保持できます。
なお、Kinesisではストリーミングデータを生成し送信するデバイスやサービスなどを「プロデューサー」、ストリーミングデータを読みだして処理する側を「コンシューマー」と呼びます。
Kinesis Data Streamsでは、ストリーミングデータを「データレコード」という単位で処理します。データレコードには、データそのものに加えて「パーティションキー」「シーケンス番号」が含まれます。
・パーティションキー ... どのシャード(後述)で処理するかを決めるもの。プロデューサー側で設定する
・シーケンス番号 ... シャードごとに一意の番号。シャード内のデータレコードの順序性が保証される
データレコードは「シャード」に分散され処理されます。シャードは、ストリームで処理できるデータの容量を決めるもので、シャードが多いほど並列処理の数が増えてスループットが上がります。
■Kinesis Video Streams
カメラやその他のデバイスからリアルタイムで動画データを取り込むサービスです。取り込んだ動画データは、他のAWSサービスと統合して、解析や加工、再生などに利用できます。