Kinesis Data Streams と Firehose の違い
どうしても覚えられないのでまとめました。
Kinesis Data Streams
Kinesis Data Firehose
基本の違い
項目 | Kinesis Data Streams | Kinesis Firehose |
---|---|---|
ユースケース | リアルタイムデータ処理 | データのバッチ転送 |
制御性 | 高い(データ保持、シャード数の設定など) | 低い(設定は簡単、フルマネージド) |
処理の複雑さ | ユーザーがアプリケーションで処理を実装する必要がある | AWS側で自動的にデータを処理・配信 |
転送先 | 自由に選択可能(例: Lambda, S3, DynamoDB) | 固定(S3, Redshift, Elasticsearchなど) |
データ保持期間 | 最大7日間 | データを保持しない(リアルタイム転送のみ) |
リアルタイム性 | ミリ秒単位のリアルタイム処理が可能 | 遅延が発生する可能性がある(60秒以内) |
覚え方
1. 「ストリームは流れ、ホースは給水」
- Streamsは「常に流れる」→ リアルタイム処理。
- Firehoseは「一気に注ぐ」→ バッチで目的地に注ぎ込むイメージ。
2. 「カスタムな流れとホース任せ」
- Streamsは「自分で流れを制御」する。→ 開発者が細かくコントロール。
- Firehoseは「AWS任せ」→ フルマネージドで手間いらず。
3. 「ストリームは一時的、ホースは運搬」
- Streamsは一時的にデータを保持する(最大7日間)。
- Firehoseは保持せず直接運搬。
具体例で理解
1. Streams
- シナリオ: 株価データをリアルタイムで分析。
- 動作: 開発者がアプリを作り、データを取り出して処理。
2. Firehose
- シナリオ: IoTセンサーのデータをS3に保存。
- 動作: AWSが自動的にデータをS3に送る。
シンプルにまとめた語呂
- 「ストリームは細かく作る、ホースはAWS任せ」
Kinesis Data StreamsとFirehoseの違い
特徴 | Kinesis Data Streams | Kinesis Data Firehose |
---|---|---|
シャード | 必須。スループット管理に使用 | 不要。完全管理型でスケーリング自動化 |
スケーリング方法 | 手動でシャード数を調整 | 自動スケーリング |
データ処理の柔軟性 | コンシューマーがカスタムロジックを実装可能 | 簡易なデータ変換(Lambda関数で対応可能) |
配信先 | 一時的に保存しながら、消費者が取得する | データを直接指定されたターゲットへ送信 |
レイテンシ | ミリ秒単位での処理 | 数秒から1分程度 |
適用例 | カスタム処理や高スループットが必要な場合 | シンプルでストリーミングデータを保存する場合 |