Kinesis
AWS のリアルタイムデータストリーミングサービスで、大量のデータを収集 / 処理 / 分析する
Kinesis とは
Amazon Kinesis は、リアルタイムデータストリーミングサービスで、大量のデータ (ログ、クリックストリーム、IoT データ) を収集・処理・分析する。SQS がメッセージキューであるのに対し、Kinesis はデータストリームである。
Kinesis ファミリー
Kinesis ファミリーを以下にまとめる。
| サービス | 用途 |
|---|---|
| Kinesis Data Streams | リアルタイムデータストリーム |
| Amazon Data Firehose (旧 Kinesis Data Firehose) | S3/Redshift/OpenSearch への配信 |
| Amazon Managed Service for Apache Flink (旧 Kinesis Data Analytics for Apache Flink) | ストリームデータの Flink 処理 (Flink SQL を含む) |
| Kinesis Video Streams | 動画ストリーミング |
配信と分析の 2 つは Kinesis ブランドから独立した名前に変わっている。古い資料の名前でコンソールや資料を探すと見つからないため、CLI の名前空間 (firehose / kinesisanalyticsv2) が旧名のまま残っていることも併せて覚えておくとよい。SQL だけでストリームを処理する旧 Kinesis Data Analytics for SQL Applications は段階的に終了し、2026 年 1 月 27 日以降はアプリケーションの削除が始まってサポートも提供されない。SQL でストリームを処理したい場合の移行先は Managed Service for Apache Flink (Flink SQL) である。
SQS との比較
SQS との主な違いを以下に比較する。
| 観点 | Kinesis | SQS |
|---|---|---|
| モデル | データストリーム | メッセージキュー |
| 消費者 | 複数のコンシューマーが同じデータを読める | 1 メッセージ = 1 コンシューマー |
| 順序保証 | シャード内で保証 | FIFO キューで保証 |
| データ保持 | 既定 24 時間 (延長で 7 日・長期保持で最大 365 日) | 最大 14 日 |
| スループット | シャードあたり書き込み 1 MB/秒 | 標準キューは実質無制限 (FIFO は別枠の上限あり) |
| 用途 | ログ分析、リアルタイム処理 | タスクキュー、非同期処理 |
アーキテクチャ
アーキテクチャを図で示す。
[プロデューサー] → [Kinesis Data Streams] → [Lambda] → [DynamoDB]
→ [Firehose] → [S3] → [Athena]
→ [別の Lambda] → [OpenSearch]
1 つのストリームを複数のコンシューマーが独立して読める (ファンアウト)。
シャード
Kinesis Data Streams のスループットはシャード数で決まる。シャードは課金と性能の両方の基本単位で、上限は方向ごとに分かれている。
| 方向 | シャードあたり |
|---|---|
| 書き込み | 1 MB/秒 or 1,000 レコード/秒 |
| 読み取り | 2 MB/秒 |
容量モードは 2 つある。プロビジョンドモードではシャード数を自分で指定し、必要に応じて増減させる。オンデマンドモードでは AWS がシャードを自動管理するが、内部の単位は同じシャードなので上限自体が消えるわけではない。パーティションキーが偏ると特定のシャードだけが上限に張り付き、オンデマンドでも書き込みスループット超過のスロットリングが出る。オンデマンドの新規ストリームは 4 シャード分 (書き込み 4 MB/秒) から始まり、シャードの平均取り込み利用率が 50% に達すると分割される。分割の完了までは時間がかかるため、瞬間的なスパイクは吸収しきれないと考えておく。
Enhanced Fan-Out を使うと、シャードごとに、登録した各コンシューマーへ最大 2 MB/秒が個別に割り当てられる。使わない場合は、コンシューマーが何個あってもシャードあたり 2 MB/秒を分け合う。ファンアウトの図を見てコンシューマーを増やしたのに読み取りが遅くなるのは、この共有が原因である。
Amazon Data Firehose
旧称は Kinesis Data Firehose。コードを書かずに S3、Redshift、OpenSearch、Splunk などへストリームデータを配信する。送信先ごとにバッファのサイズと時間を設定するため、Data Streams から Lambda で処理する構成より到着は遅れる。逆に、シャード管理もコンシューマー実装も不要で、保存先へ流し込むだけならこちらが単純である。
Kinesis の背景や設計思想は関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
SQS FIFO キュー
メッセージの順序保証と厳密な 1 回配信を提供する Amazon SQS のキュータイプ
変更データキャプチャ (CDC) とは - DB の変更をリアルタイム連携するパターン
変更データキャプチャ (CDC、Change Data Capture) はデータベースの INSERT/UPDATE/DELETE を検出して検索エンジンや分析基盤へリアルタイムに伝播させるデータ統合パターン。実装 4 方式と AWS での構成を解説
シャーディング
データを複数のデータベースインスタンスに水平分割し、書き込みスループットとストレージ容量をスケールさせる手法
Apache Kafka
大規模なリアルタイムデータストリーミングのための分散メッセージングプラットフォーム
バックプレッシャーとは - ストリーム処理の流量制御を図解で理解する
バックプレッシャーは下流の処理能力を超えるデータ流入時に上流へ減速を伝える仕組み。Node.js Stream/RxJS/Kafka での実装パターンと OOM 回避策を解説