初めに
Kinesis Data StreamとSQSは役割がちこっと似ている。pub/subサービスという意味で。
結論
KinesisとSQSのユースケースの違い
| Kinesis |
SQS |
| ビッグデータ向けのユースケース |
開発向けのユースケース |
| 速いログやイベントデータを収集し処理する |
注文を処理する |
| リアルタイムなメトリクスレポート |
画像処理をする |
| モバイルデータキャプチャ |
メッセージによってキューをオートスケールする |
| リアルタイムデータ解析 |
メッセージをバッチ処理する |
| 複雑なストリーム処理 |
リクエストをオフロードする |
| ゲームやIoTからのデータ取り込み |
ー |
Kinesis Data StremaとSQSとの比較
| Kinesis Data Stream |
SQS |
| データは何度も処理できる |
アプリケーション同士を切り離す |
| データは特定の時間が過ぎたら消える |
アプリケーションごとにキューは一つ |
| シャード単位では順番は保たれる |
データは利用後に削除される |
| 複数のアプリから読み込みが可能 |
データはの順番は守られるとは限らない |
| MapReduceのクエリで読み込みができる |
データ順番を遵守したい場合はFIFOキューを使う |
| データ利用状況を追跡できるチェックポイント機能がある |
メッセージを遅延させることができる |
| キャパシティはシャードで管理される |
バッチ読み込みができる |
| IMBのデータペイロード |
256KBのメッセージペイロード |
サービスごとの違い
| - |
Kinesis Data Streams |
Kinesis Data Firehose |
Amazon SQS Standard |
Amazon SQS FIFO |
| Managed by AWS |
yes |
yes |
yes |
yes |
| Ordering |
Shard / Key |
no |
no |
Specify Group ID |
| Delivery |
at least once |
at least once |
at least once |
exactly once |
| Replay |
yes |
no |
no |
no |
| Max Data Retention |
365days |
no |
14 days |
14 days |
| Scaling |
Provsion Shards. 1MB/s producer. 2MB/s consumer |
no limit |
no limit |
3000 messages per second with batching(soft limit) |
| Max Object Size |
1MB |
128MB at destination |
256KB(more if using extended lib) |
256KB |
Discussion