モチベーション
- Kinesis Data Firehose と Amazon Kinesis Data Streams をAWS SAAの模擬試験中によく読み違えたりしたので、違いを整理してみた。
Kinesis Data Firehose と Kinesis Data Streams の違い
AWSでデータストリームを扱う際、Amazon Kinesis Data Firehose と Amazon Kinesis Data Streams は混同しやすいサービスですが、それぞれ異なる用途と特徴を持ちます。この違いを明確に整理します。
1. 概要の比較
項目 | Kinesis Data Firehose | Kinesis Data Streams |
---|---|---|
主な用途 | データのストリーミング収集とターゲットへの配信 | リアルタイムでのデータストリーミング処理 |
処理のタイミング | ほぼリアルタイム(バッチ形式で配信) | 完全なリアルタイム処理 |
データの保存期間 | 一時的(S3や他のターゲットにデータを送信後消える) | 最大 365 日間(デフォルトは 24 時間) |
管理の必要性 | サーバーレスで自動管理 | サーバー管理が必要(シャード数を手動で設定) |
サポートされるターゲット | S3、Redshift、Elasticsearch、Splunk など | アプリケーション(Lambda、EC2、カスタムコンシューマ) |
スケーリング | 自動スケーリング | シャード数を手動で設定 |
コスト管理 | シンプルな料金体系 | シャード数によって料金が変動 |
データ変換 | サポート(Lambdaによる変換) | コンシューマ側で独自変換を実装 |
2. 特徴の違い
Kinesis Data Firehose : データを収集して保存
-
完全マネージド型サービス:
- サーバーレスでスケーラブル、自動的にデータ収集からターゲットへの配信を管理。
-
データの変換と圧縮:
- Lambdaを利用してデータを変換可能(例: JSONをParquet形式に変換)。
- データを圧縮(例: GZIP)して送信することでストレージコスト削減。
-
ターゲットへの配信:
- データを S3、Redshift、Elasticsearch、Splunk などのターゲットにバッチ形式で送信。
-
ユースケース:
- ログデータの収集と保存(例: サーバーログをS3に保存)。
- データウェアハウス(Redshift)へのデータ投入。
Kinesis Data Streams : リアルタイムデータ処理
-
リアルタイム処理向け:
- データを取得後、すぐにアプリケーションで処理可能。
-
カスタマイズ可能なシャード構成:
- データのスループットに応じてシャードを増減可能(1シャードは1秒間に最大1MB書き込み、2MB読み取り)。
-
データのリテンション:
- デフォルトでは24時間、最大365日まで保存可能。
-
コンシューマライブラリ:
- Kinesis Client Library (KCL) を使ってカスタムアプリケーションを構築可能。
-
ユースケース:
- IoTデバイスのリアルタイムデータ処理。
- 動画やクリックストリームデータの分析。
3. まとめ
- Kinesis Data Firehose は「データを収集して保存」するシンプルなサービスに最適。
- Kinesis Data Streams は「リアルタイムデータ処理」を求めるアプリケーションに適している。