はじめに
AWS認定試験の勉強をしていて、「Kinesis Data Firehose」「Kinesis Data Streams」の違いが明確にわからなくて、問題の回答を導き出すのに「苦労していた。または、苦労している。」経験はありませんか?認定試験では、違いについて理解し、用途や要件に応じて使い分けられるようになる必要があります。今回は、違いがわかるように整理してみました。
1. データ処理速度を優先するか?コストを重視するか?
Amazon Kinesis Data Firehose
・データをバッファリングしてから一定量ごとにまとめて処理するため、処理速度は比較的遅いですが、コストを抑えることができます。
・バッファリング時間を調整することで、処理速度とコストのバランスを調整できます。
Amazon Kinesis Data Streams
・データを逐次処理するため、処理速度は速いですが、コストが高くなります。
・リアルタイム性の高いデータ処理が必要な場合に適しています。
2. ユースケース
-
Kinesis Data Firehose
簡単なセットアップでデータをターゲットに配信する場合に最適。- 大量かつ様々な種類のデータを収集し、データレイクや分析保管場所へロードするのに適しています。
- センサーデータ、ログデータ、Webサイトトラフィックデータなど、幅広いデータソースからデータを収集できます。
- データ変換やフィルタリングなどの前処理機能が充実しており、収集したデータをそのまま保存するだけでなく、分析用に加工してから保存することもできます。
ストリーミングデータを収集・変換し、サポートされている AWS サービスやサードパーティサービスなど分析用のデータストアに配信できるフルマネージドサービス です。データ量の増減に合わせて自動でスケールするため、ユーザーが冗長構成などを考える必要はありません。
https://dev.classmethod.jp/articles/introduction-2024-amazon-data-firehose/ より引用
-
Kinesis Data Streams
高いスループットと低レイテンシが求められるリアルタイム処理に最適。- マイクロ秒単位の低遅延でデータ処理が必要なアプリケーションに適しています。
- IoT機器やリアルタイム分析システムなど、リアルタイム性の高いデータ処理が必要なユースケースに最適です。
- データストリームを複数のコンシューマーに分散配信することができ、スケーラビリティと可用性に優れています。
4. Kinesis Data Streamsと Kinesis Firehose の違い
特徴/機能 | Kinesis Data Streams | Kinesis Firehose |
---|---|---|
主な目的 | リアルタイムデータストリームの収集と加工 | リアルタイムデータの収集とデータストアへの転送 |
スケーラビリティ | 手動でスケールアップ/ダウンが必要 | 自動スケーリング |
リアルタイム処理 | 高度なリアルタイムのデータ加工に対応 | 即時データ転送に焦点 |
管理とスケーリング | ・データはシャードと呼ばれる単位で分割され、各シャードは独立してスケーリング出来る ・手動でシャードを追加/削除する必要がある |
・フルマネージドで自動スケーリング ・インフラストラクチャの管理が不要 |
データの送信先 | Lambda、Kinesis Firehose、Kinesis Data Analyticsなど | S3、Redshift、Elasticsearch Service、Splunkといったデータストアサービス |
データ加工 | 高度なカスタム処理やフィルタリングが可能 | 限定された単純なデータ変換のみ可能(例: JSONからParquetに変換) |
データ変換 | データ変換機能は限られている | データ変換やフィルタリングなどの前処理機能が充実 |
処理速度 | ミリ秒からマイクロ秒単位 | 秒単位 |
コスト | 処理時間に基づく | データ転送量に基づく |
データ保持 | データは最大7日間保持され、複数のコンシューマが同じデータを処理可能 | データはバッファリング後にターゲットに送信され、保持期間は短い |
利用シナリオ | 複雑なリアルタイムデータの分析、複数の消費者への配信 | 単純なリアルタイムデータの転送と保存、データの直接的なストレージへのロード |
データソース | カスタムクライアントライブラリが必要 | 数百種類以上のデータソースに対応 |