TL;DR: MSK Serverless (2022) is the first true pay-per-use Kafka in AWS: no brokers to size, no 24/7 idle capacity — you're billed on throughput (MB-hour) and storage (GB-month). It's still Apache Kafka (same APIs, clients, consumer groups), so apps need no code changes. At low or variable volume it's routinely ~97% cheaper than running provisioned brokers; at sustained terabyte-scale the math reverses and provisioned + reserved wins.
The numbers
- Two line items: ingress ~$0.10/GB, egress ~$0.05/GB, storage ~$0.10/GB-month — no hourly broker fee.
- Worked example — medium SaaS logs, 50 GB in / 100 GB out / 80 GB retained: serverless = $5 + $5 + $8 = ~$18/mo vs 3× kafka.m5.large provisioned ≈ ~$550/mo running 24/7 regardless of volume — ~97% cheaper.
- The first cap you hit: per-partition ~5 MB/s ingress, ~10 MB/s egress — serverless scales the cluster, not a single partition; the fix is more partitions.
- Field examples: a 4-person analytics startup ran $30–50/mo vs $500+ provisioned; an enterprise went hybrid (serverless for dev/test + low-volume topics, provisioned for mission-critical high-throughput streams) and got ~10 ops-hours/week back.
Do this
- Start serverless by default — create the cluster, pick VPC/subnets, get a bootstrap endpoint, point producers/consumers at it. Most teams overestimate their throughput.
- Spread load across partitions — if a logical topic needs >5 MB/s ingress, add partitions rather than reaching for a bigger broker (there isn't one).
- Use IAM auth — natively supported and far easier than rotating SASL creds or SSL certs by hand.
- Set retention to your real replay/audit window — indefinite retention quietly inflates the storage line.
- Watch Cost Explorer as volume grows — serverless cost scales linearly with throughput; there are no "free broker hours" to absorb growth, so know where the cross-over to provisioned sits.
Gotchas
- Per-partition throttling, not auto-scaling magic — push 15 MB/s into one partition and you get throttled; serverless never splits partitions for you.
- Cold-start latency — a cluster idle for a while can see higher latency on the first requests of a burst; fine for logs/analytics, a risk for 24/7 single-digit-ms p99s.
- Locked-down broker configs — serverless hides many broker-level knobs; custom tuning and very high partition counts may not fit.
- Linear cost, no free tier of capacity — cheap at low/moderate volume, but at terabyte-scale 24/7 the flat provisioned + reserved model wins.
Skip this if
- You stream sustained massive throughput (terabytes/day, 24/7) — provisioned MSK with reserved capacity is cheaper; run the numbers.
- You need ultra-low-latency p99s or custom broker configs — fine-tuned provisioned brokers win. For the always-on side, run provisioned MSK; and right-size the Lambda consumers processing your Kafka events.