advanced 2 min answer

A team wants to self-manage Kafka on Kubernetes to save money against the managed service. Evaluate.

managed-servicestcooperations
Show the full answer Hide the answer

The comparison they have probably made

Instance cost versus managed service list price. That comparison usually favours self-managing by a wide margin, and it omits most of the actual cost.

What the comparison must include

Engineering time to operate, continuously: broker replacement, partition rebalancing, storage expansion, version upgrades (Kafka upgrades are not trivial and involve rolling restarts with careful ordering), certificate rotation, and capacity planning.

On-call burden. Someone must be able to diagnose an under-replicated partition, a stuck controller or a consumer group rebalancing loop at 3 a.m. That is specialist knowledge, it must exist in more than one head, and it must be maintained.

The cost of getting it wrong. Kafka's failure modes are recoverable by people who know it and data-losing by people who do not. min.insync.replicas, unclean.leader.election, and retention configured wrongly are each capable of silent data loss.

Opportunity cost. The engineers operating it are not building product.

And the cost that is genuinely on their side: at very large scale the managed premium is substantial, and networking costs in the managed service can be significant.

The questions I would ask

What is the actual throughput and retention? The economics differ by an order of magnitude between a few thousand messages a second and a few million. Below a modest threshold, the managed premium is small in absolute terms and the answer is easy.

Do we have the expertise, in more than one person? A single expert is a resignation away from an unsupportable system.

Is this our core domain? Almost certainly not, which is the strongest argument.

Have we considered the middle option? Managed Kafka from a specialist vendor, or a managed Kafka-compatible service, often sits between the two on both cost and control.

Do we need Kafka at all? A meaningful share of Kafka deployments would be adequately served by a managed queue plus a managed stream, at a fraction of the operational cost. Worth asking before optimising the operation of something that may not be required.

Where I would land

Managed, unless throughput is very large, the expertise genuinely exists in depth, and the saving is material in the context of the whole budget. And if self-managing is chosen, it should come with a named owning team, a runbook, a tested restore, and a stated review date — not as a decision made once by whoever was enthusiastic.

What a strong answer adds

Framing it as five-year TCO including the team, and noting that the calculation legitimately changes over time. The right answer at 50,000 messages a second is not the right answer at five million, and organisations rarely revisit the decision when they cross that line.