We built a proxy to migrate Kafka producers with zero downtime

exposition1 pts0 comments

Move Fast And Don’t Break Things: Automatic Apache Kafka® Migrations With Orbit - WarpStream

PricingCustomersBlogCompanyContactDocs<br>Switch to WarpStream

Sign InStart FreeStart Free

Back To Blog

Subscribe

RSS

Yusuf Birader + Brian Shih

Senior Software Engineers

August 18, 2026

orbit-kafka-auto-migration

HN Disclosure: WarpStream sells a drop-in replacement for Apache Kafka built directly on-top of object storage.

When we built WarpStream, the goal was to redesign Apache Kafka® from the ground up in a way that was dramatically cheaper and easier to operate: stateless Agents, object storage, and no disks to manage or partitions to rebalance. But there has always been a catch: before you can run Kafka the easy way, you have to get there, and migrating an existing Kafka cluster to WarpStream can be notoriously difficult. A cluster rarely serves a single application, many teams produce and consume through it, and all of them have to be migrated with minimal disruption to production traffic.<br>At a high level, that work breaks down into three parts: migrating the data, migrating the consumers, and migrating the producers. The data has to be replicated without loss or reordering. Consumers need their group offsets carried over so they can resume where they left off. And producers, the hardest of the three, need to be moved quickly and with minimal downtime, since pausing them means halting durable writes, with real potential for data loss if anything goes wrong.<br>What Orbit Already Solves<br>Part of this picture is already solved by Orbit, WarpStream's built-in replication feature, which makes migrating the data and the consumers easy. Orbit continuously replicates topic data and consumer group offsets from any source Kafka cluster into WarpStream while preserving the exact offset of every record.<br>This makes migrating consumers straightforward: since the data and committed offsets are replicated, Kafka consumers can simply switch their bootstrap URL from the source cluster to WarpStream and pick up exactly where they left off. There is no reprocessing, no skipped records, and no shared cutover window, because each consumer group can move whenever its team is ready.

Migrating Producers Was Still Hard<br>That leaves the producers. Until now, migrating them was an entirely manual four-step process. It involved:<br>Stopping every producer for a topic.<br>Waiting for Orbit's replication lag to reach zero.<br>Disabling Orbit replication for the affected topics.<br>Restarting the producers with their bootstrap URLs pointing at WarpStream.<br>In practice, this usually translated to downtime and an operator watching a dashboard and deciding when it's safe to migrate. Worse still, because a single forgotten producer still writing to the source cluster means data loss, every team had to move together. Producers were the one part of migrating to WarpStream that still required a maintenance window.<br>Some of our most sophisticated customers that couldn't tolerate any migration downtime wrote custom scripts and modified their application code to leverage dynamic feature flags to automate the migration as much as possible. Some even used clever tricks like applying ACLs on the source cluster as an automated "signal" to their application that it was time to instantiate a new client and cut over to WarpStream.<br>We wanted to solve this problem once and for all for our customers, but many of the automated solutions that our customers came up with weren't practical solutions for us. We couldn't rewrite each of our individual customer's applications to use dynamic feature flags, for example.<br>Another potential solution was for us to provide our customers with custom WarpStream "fat clients" that they could embed in their applications that would automate the migration process for them, but that had its own challenges as well. The clients would have to work in every programming language, and for many of our enterprise customers getting many different teams to swap out the clients in their application was an impossible task.<br>As a result, we settled on a different approach: a proxy. Or more specifically, a very limited type of proxy that only does one thing: forward produce requests. We reasoned that customers could update the bootstrap URL for all of their applications to point to the WarpStream cluster, and then WarpStream would just forward those Produce requests to the source cluster. This way, every team could move at its own pace to update their application with zero downtime, but also it would allow us to concentrate all of the Produce traffic in a single location that we controlled so that we could automate steps 1 through 4 from above for our customers.<br>The result is Orbit Auto Migration: seamless migrations of Kafka producers from any source cluster to WarpStream with zero downtime, zero restarts, and zero maintenance windows. Producers update their bootstrap URL to point at the WarpStream cluster ahead of time, at whatever pace suits each team,...

warpstream kafka cluster producers migrating orbit

Related Articles