はじめに
過去に開発業務で、ある程度Kinesisに触れていた経験があるのですが、しばらくAWSに触れていない間にKinesis Data StreamsとKinesis Firehoseを混同するようになってしまいました。
一度自分なりにまとめておこうと思います。
これら2つの違いを簡単に説明できるようにすることが本記事の目標になります。
公式ドキュメント
Kinesis Data Streams (KDS) と Kinesis Firehose の違い
表形式でまとめました。
| 特徴 | Kinesis Data Streams (KDS) | Kinesis Firehose |
|---|---|---|
| 主な目的 | リアルタイムデータストリームの収集と加工 | リアルタイムデータの収集とデータストアへの転送 |
| データ加工 | 高度なカスタム処理やフィルタリングが可能 | 限定された単純なデータ変換のみ可能(例: JSONからParquetに変換) |
| スケーラビリティ | 手動でスケールアップ/ダウンが必要 | 自動スケーリング |
| リアルタイム処理 | 高度なリアルタイムのデータ加工に対応 | 即時データ転送に焦点 |
| データの送信先 | Lambda、Kinesis Firehose、Kinesis Data Analyticsなど | Amazon S3、Redshift、Elasticsearch Serviceといったデータストアサービス |
| 利用シナリオ | 複雑なリアルタイムデータの分析、複数の消費者への配信 | 単純なリアルタイムデータの転送と保存、データの直接的なストレージへのロード |
※ここで言う消費者とは、ストリームからデータを受け取り、それを処理または分析するシステム、アプリケーション、サービスを指します。
まとめ
高度なデータ加工や複数の消費者へのデータ配信に対応する必要がある場合、Kinesis Data Streamsが適していると思われます。
一方で、必要な加工が限定的であり、データの単純な転送が求められる場合は、Kinesis Firehoseが効果的かと思われます。
状況に応じて、適切なツールを選択していきたいですね。
以上になります。
どなたかの参考になれば幸いです。
関連記事
以下の記事も勉強になるかと思います。