Both Kinesis and SQS handle streaming data, but they serve different use cases. Choosing the wrong one is a common architectural mistake.
| Feature | Kinesis Data Streams | SQS Standard |
|---|---|---|
| Consumer model | Multiple consumers read SAME data independently | One consumer processes each message |
| Message replay | Yes — replay messages up to 365 days | No — deleted after processing |
| Ordering | Per shard (partition key) | Best-effort (not guaranteed) |
| Throughput | Shard-based (1MB/s write, 2MB/s read per shard) | Virtually unlimited |
| Max message size | 1MB | 256KB |
| Retention | 1 day to 365 days | 4 days (up to 14 days) |
| Consumers | Multiple consumers read same stream | Each message goes to ONE consumer |
| Pricing | Per shard per hour | Per million API requests |
Kinesis Pattern:
Log Producer --> Kinesis Stream
|
+--------+--------+
| |
Analytics Security
(Elasticsearch) (GuardDuty rules)
BOTH consumers get ALL events
SQS Pattern:
Orders --> SQS Queue --> [Worker 1]
--> [Worker 2] (one worker processes each order)
--> [Worker 3]