We've run both Apache Kafka and Amazon Kinesis in production at meaningful scale, and the honest answer to "which should we use" is almost never about raw throughput. Both will move millions of events per second. The decision is really about who operates the thing and how much of AWS you have already committed to.
Total cost of ownership, not sticker price
Kinesis wins the first comparison anyone makes, because there is nothing to run. No brokers, no ZooKeeper or KRaft quorum, no partition rebalancing at 3am. For a team of ten without a dedicated platform group, that operational simplicity is worth more than any per-shard cost on the invoice.
Kafka's economics invert as volume grows. Once you are sustaining high, steady throughput, a well-tuned self-managed or MSK cluster is materially cheaper per gigabyte — but only if you actually have the people to keep it healthy.
Ecosystem and lock-in
- Kafka brings Connect, Streams, and a decade of tooling that assumes a Kafka-shaped world.
- Kinesis integrates natively with Lambda, Firehose, and the rest of AWS with almost no glue code.
- Retention, replay, and ordering guarantees differ in ways that will surface in your worst incident, so test them early.
Pick the boring option your team can operate at 3am, not the one that wins the benchmark on a slide.
Our default recommendation
If you are already deep in AWS and your team is small, start with Kinesis and revisit only when the bill or a missing feature forces the conversation. If streaming is core to your product and you have platform engineers who enjoy the work, Kafka's ceiling is higher and worth the operational tax. There is no universally correct answer — only the one that fits your team this year.