Moving a live streaming estate onto private networking without a pause
Context
In 2025 I led the migration of Rocket India’s Kafka estate to Confluent Private Service Connect, moving every producer and consumer in every environment onto private networking, and separately architected a real-time data exchange platform for secure, low-latency sharing across isolated environments.
The problem
The estate was reachable over public networking, a security posture nobody wanted to keep defending and increasingly out of step with what 200+ teams needed. At the same time, some of those teams sat in genuinely isolated environments that still needed to share data with each other in real time, securely, without punching a hole through the isolation to do it.
Constraints
- Nothing could take the estate down to make this change. Producers and consumers were live, in production, for 200+ teams.
- A migration that required a maintenance window would have been a much easier project and a much worse one to be on the other end of.
- Existing topics could not be re-keyed, so the cutover had to preserve every offset and every partition assignment as it stood.
Approach
I moved the estate to PSC incrementally, team by team, verifying zero data loss at each cutover rather than attempting a single cluster-wide switch, which kept the blast radius of any single cutover to one team rather than the whole estate.
For cross-environment sharing, I used Confluent cluster linking to replicate topics between clusters directly, with end-to-end lag, retry and DLQ monitoring built into the replication path itself rather than left to whichever team was consuming on the other side.
Outcome
The full estate moved to private networking with zero data loss, ahead of schedule, cutting over one team at a time rather than the whole estate at once, and PSC is now the secure-by-default standard for 200+ teams. The cluster-linking based data exchange platform gives isolated environments a monitored, real-time path to share data without weakening the isolation that put them in separate environments in the first place.
What I'd do differently
I under-communicated the DNS behaviour early. Two teams debugged connectivity for a day before we produced a one-page explanation of what resolves where. A diagram on day one would have been worth more than the runbook we wrote on day ten.