On this page
Short answer
Choose Kinesis Data Streams when the workload lives entirely in AWS, nobody wants to run brokers, and the consumers are AWS services such as Lambda, Amazon Data Firehose or Amazon Managed Service for Apache Flink. Choose Kafka, self-managed or on Amazon MSK, when you need retention beyond 365 days, log compaction, exactly-once processing between topics, Kafka Connect, many independent consumers, or a protocol that also runs outside AWS. Cost crosses over with volume and fan-out: Kinesis bills for shards or data moved, Kafka for the brokers and storage you keep running.
Amazon Kinesis Data Streams and Apache Kafka, on the same criteria
| Amazon Kinesis Data Streams | Apache Kafka (self-managed or Amazon MSK) | |
|---|---|---|
| Unit of scale | Shard: 1 MB/s or 1,000 records/s in, 2 MB/s out | Partition: bounded by broker hardware, not a fixed quota |
| Capacity | On-demand Standard, On-demand Advantage, or provisioned shards | Brokers you size, MSK Standard or Express brokers, or MSK Serverless |
| Retention | 24 hours by default, up to 365 days | 7 days by default; by time, size or unlimited; log compaction |
| Ordering | Within a shard; partition key hashed to a shard | Within a partition; same key, same partition |
| Delivery | At least once; retries create duplicates | At least once; idempotent producer and transactions for exactly-once |
| Consumers | 2 MB/s per shard shared, or enhanced fan-out per consumer (20, or 50 with On-demand Advantage) | Any number of consumer groups; share groups for queue-style reads |
| Record size | Up to 10 MiB | About 1 MB by default, configurable |
| Runs on | AWS only | Any cloud, datacenter or Kubernetes |
How Kinesis Data Streams works
A Kinesis stream is a set of shards. Each record carries a partition key, which Kinesis hashes with MD5 to pick a shard, and gets a sequence number on write. In provisioned mode a shard accepts up to 1 MB/s or 1,000 records/s and serves 2 MB/s to readers, and you resize with UpdateShardCount or by splitting and merging shards. On-demand Standard removes that arithmetic: a new stream starts at 4 MB/s of write capacity and absorbs up to double its peak of the previous 30 days, though traffic that more than doubles within 15 minutes is throttled. On-demand Advantage, an account-level setting, drops the per-stream charge and allows pre-warming before an event, in exchange for committing to at least 25 MiB/s of ingest and of retrieval.
Retention is 24 hours by default and can be raised to 8,760 hours, 365 days. One limit catches teams out: on-demand mode splits busy shards but cannot isolate a hot partition key, so a single key above 1 MB/s or 1,000 records/s throttles in any mode.
How Kafka and Amazon MSK work
A Kafka topic is split into partitions spread across brokers, each a replicated log on disk. Retention is per topic, seven days by default, and can be set by time, size or to unlimited. Log compaction, which Kinesis has no equivalent of, keeps the latest value for every key indefinitely, so a compacted topic can serve as the source of truth for changelogs and state rebuilds. Idempotent producers and transactions give exactly-once processing between topics.
Amazon MSK runs open-source Kafka in your AWS account, with Standard or Express brokers or MSK Serverless. Existing clients, connectors and tooling work unchanged. AWS supports the service; partitions, consumer groups and connectors remain yours, as managed Kafka options compared sets out.
Ordering, delivery and consumers
Both order records only within a shard or partition, so the key decides what stays in sequence, and both deliver at least once. AWS documents duplicates from producer retries and from consumers restarting at the last checkpoint after a failure or rebalance, and advises a unique key in each record for deduplication. Kafka removes producer-side duplicates itself and can commit consumed offsets and produced records in one transaction.
Consumption is where they differ most. A Kinesis shard's 2 MB/s and five GetRecords calls per second are shared by every standard consumer, so AWS recommends enhanced fan-out for more than one consumer application: each registered consumer gets its own 2 MB/s per shard, up to the per-stream cap. KCL applications keep leases and checkpoints in a DynamoDB table, one more resource to size. Lambda reads each shard in order and stops on that shard when the function returns an error, so one bad record holds up everything behind it. Kafka consumer groups store offsets in Kafka, any number of groups can read a topic, and share groups, production-ready since Kafka 4.2, add queue-style consumption with per-record acknowledgement.
Ecosystem and portability
Kinesis integrates natively with Lambda, Amazon Data Firehose, Managed Service for Apache Flink, EventBridge and Glue; if every producer and consumer is an AWS service, that is the main reason to choose it. Kafka brings Kafka Connect, Kafka Streams, schema registries and clients in most languages, and its protocol is also spoken by MSK, Confluent Cloud, Azure Event Hubs and Redpanda. An application written against Kafka can move between them; one written against the Kinesis API stays on AWS.
What drives the bill
Rates vary by region, so compare the meters on the Kinesis Data Streams pricing page rather than a quoted price. Provisioned bills shard-hours, PUT payload units counted in 25 KB chunks per record, retention beyond 24 hours, and enhanced fan-out per consumer-shard hour and per GB. On-demand Standard bills per GB written, each record rounded up to 1 KB, per GB read, per stream-hour, plus retention and fan-out. On-demand Advantage drops the stream-hour charge and the fan-out premium for its minimum commitment.
Kafka's bill follows infrastructure. MSK provisioned clusters bill broker hours and storage, plus a per-GB charge for data written to Express brokers, and do not charge for replication between brokers; self-managed Kafka on EC2 pays for traffic between availability zones and, usually the largest line, the engineers who run it. Small, spiky or single-consumer streams tend to favor Kinesis on-demand; steady high throughput, many consumers or long retention tend to favor Kafka.
When to choose which
- Does anything run outside AWS, or might the workload move? Kafka.
- Do you need retention beyond 365 days, compaction or exactly-once between topics? Kafka.
- Will many independent applications read the same stream? Kafka, without a per-consumer cap.
- Is it all-AWS, with Lambda, Firehose or Flink as consumers and nobody to run brokers? Kinesis.
Moving from Kinesis to Kafka is mostly a consumer rewrite, since DynamoDB checkpoints do not carry over: cut over at a known position and run both until outputs agree.
Frequently asked questions
Is Kinesis the same as Kafka?
No. Both are partitioned, ordered, replayable logs, but Kinesis Data Streams is an AWS service with its own API and Kafka is open-source software with its own protocol; clients for one cannot connect to the other. Amazon MSK is AWS's managed Kafka, a separate service from Kinesis.
What is the maximum retention in Kinesis Data Streams?
8,760 hours, which is 365 days. The default is 24 hours, changed with IncreaseStreamRetentionPeriod or DecreaseStreamRetentionPeriod, and storage beyond 24 hours is billed separately.
Is Kinesis cheaper than Kafka?
It depends on volume, fan-out and retention. Kinesis on-demand has no idle infrastructure, so small or bursty streams often cost less there. Steady high throughput read by many consumers, or data kept for months, usually costs less on Kafka brokers, once the cost of running them is counted.
Should I use Kinesis or Amazon MSK on AWS?
Kinesis if the pipeline is AWS-native end to end and you want no brokers. MSK if you need Kafka Connect, more consumers than enhanced fan-out allows, compaction or longer retention, or a route out of AWS later.
Related
Where this gets done
The work behind this page, run by the same engineers who wrote it.
- 24/7 Kafka supportSelf-managed, MSK or Confluent Platform
- Managed Kafka servicesWe run the clusters, on your infrastructure
- Debezium CDC supportChange data capture from Oracle, SQL Server and PostgreSQL
- Kafka consultingPartition strategy, sizing, security and migration
- RabbitMQ supportIf the estate runs both brokers
- Kubernetes and container servicesKafka on Kubernetes, operated with your team
- Enterprise MQ supportOne contract across Kafka, RabbitMQ and IBM MQ
- Enterprise support plansSLA tiers and what each covers
- Enterprise MQ consultingMulti-broker architecture and migration
Other Kafka guides, comparisons and research
Recent Kafka articles
- Kafka Architecture: Brokers, Partitions and KRaftOct 2026
- How Much Does Kafka Enterprise Support Cost?Oct 2026
- Kafka Disaster Recovery: Architectures, RPO/RTO, TestingOct 2026
- Apache Kafka End of Life: Supported Versions in 2026Oct 2026
- Confluent vs Independent Kafka SupportOct 2026
- Kafka Consumer Lag: Causes and FixesSep 2026
Need this done on your Kafka estate?
Named senior Kafka engineers, 24/7, with a 15-minute emergency SLA — self-managed, MSK or Confluent Platform.