MSK vs Kinesis cost: the broker floor that decides it
Kinesis scales down to a single shard with no real floor; MSK runs brokers 24/7 ($400+/month for a 3-broker cluster). Here's the crossover by throughput and the Kafka-ecosystem angle.
Quick answer
Kinesis is cheaper for low-to-moderate or variable throughput — it scales down to a single shard (~$11/month) or on-demand with no real floor. MSK is cheaper at sustained high throughput but has a hard floor: a 3-broker cluster is $400+/month before any data. Choose MSK for the Kafka ecosystem or heavy steady streams; Kinesis for AWS-native, variable, or lower-volume streaming.
Both move streaming data through AWS, but one is a managed Kafka cluster you size and the other is serverless capacity you dial. The cost difference is dominated by one thing: MSK has a standing broker floor and Kinesis doesn't. Below a certain throughput that floor makes MSK the expensive option; above it, broker economics flip the answer.
How each bills
- MSK (provisioned): per broker instance-hour (kafka.m5.large ≈ $0.21/hour, so 3 brokers ≈ $460/month) + per-GB storage + data transfer. The brokers run 24/7. MSK Serverless trades broker sizing for a per-cluster-hour + throughput rate.
- Kinesis Data Streams: provisioned at ~$0.015 per shard-hour (each shard ≈ 1 MB/s in) + PUT payload units, or on-demand per GB ingested/retrieved with no shard management.
The floor is the deciding factor
A provisioned MSK cluster bills its brokers whether or not data flows — an idle 3-broker cluster is still $400+/month. Kinesis provisioned scales to a single shard (~$11/month) and on-demand has essentially no idle floor. So:
- Low or bursty throughput: Kinesis, comfortably. You don't pay for brokers you're not saturating.
- Sustained high throughput: MSK. Once you'd need many shards continuously, broker instance-hours amortize better than per-shard pricing, and you get Kafka's ecosystem.
It's also an ecosystem choice
MSK is real Apache Kafka: existing Kafka producers/consumers, Kafka Connect, MirrorMaker, exactly-once semantics, and long retention all work unchanged. Kinesis is AWS-native with tight Lambda, Firehose, and analytics integration but a different API. If you already run Kafka, MSK's compatibility can outweigh a cost comparison; if you're AWS-native and want serverless, Kinesis fits.
FAQ
Is MSK or Kinesis cheaper?
Kinesis Data Streams is cheaper for low-to-moderate, variable throughput because it's serverless — you pay per shard-hour (~$0.015) plus payload units, or on-demand per GB. MSK is cheaper at sustained high throughput because its broker instance-hours amortize well, but it has a real floor: a 3-broker cluster runs $400+/month before any data.
How is Amazon MSK priced?
Per broker instance-hour (e.g. a kafka.m5.large is ~$0.21/hour, so three brokers ≈ $460/month) plus per-GB-month storage and data transfer. MSK Serverless prices differently, per cluster-hour plus throughput, removing the broker-sizing decision at a higher per-unit rate.
How is Kinesis Data Streams priced?
Provisioned mode: ~$0.015 per shard-hour plus PUT payload unit charges, where each shard handles ~1 MB/s in. On-demand mode: per-GB ingested and retrieved with no shard management. Provisioned is cheaper if you size shards well; on-demand is simpler for spiky traffic.
When should I choose MSK over Kinesis?
Choose MSK when you need the Kafka ecosystem (existing Kafka apps, Kafka Connect, exactly-once semantics, long retention) or sustained very high throughput where broker economics win. Choose Kinesis for AWS-native streaming, lower or variable throughput, and when you'd rather not manage cluster capacity.
Does MSK have a cost floor that Kinesis doesn't?
Yes. A provisioned MSK cluster runs its brokers 24/7, so even an idle cluster costs hundreds per month. Kinesis provisioned scales down to a single shard (~$11/month) and on-demand has no idle floor beyond minimal charges. For low or bursty volume, that floor makes MSK the more expensive choice.
How does C3X estimate these?
C3X prices an aws_msk_cluster from its broker type and count (the always-on floor) and an aws_kinesis_stream from its shard count, so you can compare the fixed broker cost against per-shard streaming for your throughput.
What to do next
The MSK broker floor is the number to see before committing. C3X prices an aws_msk_cluster from its broker type and count and an aws_kinesis_stream from its shard count, so the fixed-cluster vs per-shard comparison is concrete for your throughput. The quickstart runs it in minutes.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.