A media platform in the mould of Canva moves its self-managed Kafka cluster - 24 brokers, about 1800 partitions, 7-day retention, roughly 9 TB on disk - onto a managed streaming service, to free the two engineers who keep it running. What have they given up, and when does that bill arrive?
Show the full answer Hide the answer
What is gained, quantified
Two engineers' time is the headline, but the real gain is narrower and more valuable: broker replacement, version upgrades, partition rebalancing and disk growth stop being projects. On a self-managed cluster those are the events that produce out-of-hours work, and they arrive on the vendor's schedule rather than the team's. A managed service also removes the single highest-risk operation on the list, the rolling major-version upgrade, which is the one a 24-broker cluster gets wrong once.
What is paid
The bill changes shape, not just size. A self-managed cluster is billed on instances and disk: two numbers, both under the team's control. Managed streaming is typically billed on four axes at once - provisioned capacity or partition count, bytes written, bytes stored over the retention window, and bytes read - and a fifth if reads cross availability zones. The consequence is that decisions which were free now cost money:
- Partition count becomes a line item. 1800 partitions was a reasonable choice when partitions were free; under per-partition pricing, the 600 partitions created "for future scale" are a recurring charge.
- Retention becomes a monthly storage bill. 7 days of 9 TB is a fixed disk purchase on self-managed hardware and a per-GB-month charge on managed. Raising retention to 30 days to help a replay use case quadruples a line somebody must defend.
- Fan-out becomes egress. Every extra consumer group re-reads the whole topic. On your own brokers that is free capacity; on managed it is metered bytes read, so adding the eleventh consumer has a price the tenth did not reveal.
The second cost is operability you can no longer reach: broker-level configuration, custom authorisers, plugin-based interceptors, and the ability to diagnose by logging into a broker. When behaviour is wrong, the diagnosis path is a support ticket.
When the cost becomes visible
Not at migration. It arrives at the first event that multiplies one of the metered axes - a new analytics consumer, a retention increase for a replay, a per-tenant topic design that turns 1800 partitions into 9000. Teams discover the pricing model during an incident or a budget review, which is why the move should start with a spreadsheet of the four axes at today's volumes and at three times today's volumes.
How to keep the option to reverse
Keep the client-visible surface standard - the wire protocol, consumer group semantics, topic naming - and keep schema and offset management in your own control plane rather than a vendor feature. Then reversing is a re-point and a replay, not a rewrite.
When this is the wrong move
Where staying self-managed still wins: a cluster under roughly 100 partitions with a day of retention, where the whole operational burden is a few hours a month and the managed bill exceeds the engineer time it saves. It is also the wrong move when the workload depends on broker-level behaviour the managed service does not expose - a custom authoriser, a tiered-storage configuration, or rack awareness mapped to a non-standard topology. Confirm the feature list before the business case, not after, because the migration is easy and the reversal is not.