Ir para o conteúdo principal
ArchPrompts
Voltar ao blog
Caderno técnico / Nota de campo

Radar Tech: migração de produtores Kafka com zero downtime — a state machine por tópico que domina o debate de eventos

O sistema de migração automática de produtores Kafka que virou destaque no Hacker News detalha como fazer um corte sem parar serviços, sem janela de manutenção e sem perder mensagens. Um padrão de arquitetura (state machine por tópico + proxy de produce + rollback automático) aplicável a qualquer plataforma de eventos.

João Gabriel
4 min de leitura
Radar Tech: migração de produtores Kafka com zero downtime — a state machine por tópico que domina o debate de eventos
AP / Prancha visual 01
Leitura principal

Nas últimas 24 horas, uma das discussões mais comentadas de arquitetura em sistemas orientados a eventos voltou a girar em torno de um problema clássico e doloroso: como migrar produtores Kafka de um cluster para outro sem parar a produção, sem janela de manutenção e sem perder uma única mensagem. O estopim foi um engenheiro da WarpStream detalhando como construiu o sistema de migração automática de produtores da plataforma — tema que reuniu dezenas de comentários no Hacker News pela combinação rara de rigor técnico e aplicabilidade imediata.

O problema que todo mundo conhece

Um cluster Kafka raramente atende a um único time. Muitos serviços produzem e consomem o mesmo tópico, e migrar tudo "de uma vez" é receita para outage e perda de dados. Dividir a tarefa em três frentes — dados, consumidores e produtores — expõe o calcanhar de Aquiles: os produtores. Dados podem ser replicados sem perda e sem reordenar. Consumidores conseguem carregar os offsets de grupo e recomeçar exatamente de onde pararam. Já os produtores, se pausados, significam parar a escrita durável; um único produtor esquecido ainda gravando no cluster antigo pode custar dados para sempre.

A resposta madura passa por uma combinação de padrões que cabe em qualquer plataforma de eventos, independente do fornecedor: uma state machine por tópico, um proxy de encaminhamento de produce e um mecanismo de reversibilidade explícita.

A state machine por tópico

O ponto de partida é tratar cada tópico como uma unidade independente de migração, com quatro estados:

  • REJECT — enquanto o destino replica os dados do fonte, qualquer escrita direta nele é recusada. Isso preserva a paridade de offset registro a registro.
  • PROXY — os produtores trocam o bootstrap para o destino quando quiserem, no ritmo de cada time. O proxy recebe a escrita e a reencaminha de forma fiel ao cluster fonte. Cada time migra no seu tempo, sem coordenação sincronizada.
  • MIGRATING — o corte em si. Os proxies param de encaminhar e respondem com erro retriável; os produtores seguram as escritas no buffer e tentam de novo. O control plane drena o lag de replicação a zero.
  • COMPLETE — o destino passa a servir as escritas diretamente; o próxima retry do produtor é atendido pelo novo cluster.

Reversibilidade é parte do contrato: se o lag não zerar dentro do timeout, o tópico volta automaticamente ao estado PROXY e retoma o encaminhamento. O corte é uma porta que só se tranca quando a migração termina de verdade.

As garantias que fazem a diferença

O que separa uma migração bem-feita de um "torcer para dar certo" são quatro decisões sutis de arquitetura, todas replicáveis:

  • Durabilidade antes de tudo. A replicação só pode ser desligada depois que todos os proxies confirmarem que pararam de encaminhar e drenaram as escritas em voo — só então o lag é medido a zero. Uma mensagem reconhecida ao produtor jamais pode ficar para trás no fonte.
  • Lease de escrita em vez de confiança cega. Cada proxy tem uma permissão temporária de encaminhar que expira em segundos. Um proxy particionado, que não consiga renovar a lease, deixa de encaminhar sozinho — e respostas de escritas incertas viram erro retriável, nunca sucesso. Trocar perda de dado por duplicata ocasional é o trade-off correto.
  • Medir lag em tempo, não em offset. Atrasar um milhão de registros pode ser segundos num tópico de alto tráfego ou uma semana num de baixo. O corte só inicia quando o descompasso, em segundos, cabe confortavelmente no timeout.
  • Ajustar a latência antes do corte. Se o destino demora mais para reconhecer (ex.: armazenamento em objeto), o produtor precisa de buffers e in-flight maiores. Esperar o corte para descobrir isso é o pior momento possível — o proxy "modela" a latência do destino ainda na fase PROXY, e a regra de ouro é a lei de Little: throughput ≈ (requisições em voo × tamanho da requisição) / latência de ack.

O que isso ensina para a arquitetura

A migração de produtores Kafka com zero downtime não é um truque de uma ferramenta específica — é um padrão de design de sistema confiável: isolar a mudança por unidade (tópico), concentrar o controle num único ponto auditável (o proxy), e fazer o sistema defender a própria durabilidade (lease, dreno, rollback) em vez de depender de um operador atento ao dashboard.

Para quem produz no dia a dia, vale o lembrete: se o seu plano de migração de eventos depende de parar produtores, coordenar todos os times ao mesmo tempo ou "esperar o lag zerar olhando a tela", há uma versão mais segura dele — por tópico, reversível e com a durabilidade garantida por construção.

Recursos

  • Artigo técnico original da WarpStream sobre automação de migração de produtores Kafka.
  • Publicado na comunidade como um dos destaques de engenharia de sistemas orientados a eventos das últimas 24h.

Quer aprofundar? O prompt do marketplace desta semana transforma esse mesmo plano de migração em um ADR executável: você descreve o seu ambiente e a ferramenta de IA devolve um protocolo de corte por tópico, com critérios de aceite e checklist de rollback prontos para revisão.

Do conceito à execução

Ferramentas práticas para levar as decisões desta nota ao seu próximo projeto.

06 / selecionados
Antes: reservas em Redis + ledger em MySQL sem atomicidade entre o claim (UPDATE + DEL) - origem do oversell/undersell.
ADR
01 / 03

ADR de Simplificacao de Stack: Consolidar Reservas de Inventario no Banco Relacional (ACID) - Pacote Multi-Arquivo com Few-shot e Harness

por João Gabriel

GPT-4oclaude-3-5-sonnetgemini-1.5-pro
(0)
0 vendas
R$ 49,90
SPA tradicional (REST + JSON) vs HTML over WebSockets: quem renderiza, quem guarda o estado e onde mora a latência em cada abordagem.
Event-Driven
01 / 03

HTML over WebSockets vs SPA — Pacote Multi-Arquivo para ADR de Adoção de Server-Driven UI (Event-Driven) — 5 Arquivos

por João Gabriel

gpt-4GPT-4oClaude+3
(0)
0 vendas
R$ 54,90
Fluxo de Decisão do ADR: do gatilho (lançamento TS 7.0) até a decisão registrada e implementação, passando por avaliação técnica, análise de riscos e estratégia de migração.
ADR
01 / 03

Adoção do TypeScript 7.0: Pacote Completo para Decisões Arquiteturais de Migração de Compilador

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 29,94
State machine por tópico da migração: REJECT → PROXY → MIGRATING → COMPLETE, com rollback automático por timeout.
Event-Driven
01 / 03

ADR de Migração de Produtores Kafka com Zero Downtime: pacote multi-arquivo para projetar corte reversível e sem perda de mensagens em sistemas orientados a eventos

por João Gabriel

GPT-4oclaude-3-7-sonnetgemini-2.0-flash
(0)
0 vendas
R$ 56,90
Arquitetura geral: Stripe e PayPal conectados via barramento de eventos, com microsserviços downstream, Event Store (Kafka + Schema Registry) e CQRS Read Models.
Event-Driven
01 / 03

Integração de Plataformas de Pagamento via Event-Driven Architecture e Strangler Fig — Pacote Premium para Arquitetos de Software

por João Gabriel

gpt-4gpt-4-turboclaude-3-opus+3
(0)
0 vendas
R$ 29,94
O Locksmith Loop: Witness Search → execução paralela → oráculo de paridade → mutação/desbloqueio.
Agentes
01 / 03

Migração de COBOL → Java com agentes IA e validação determinística por paridade (bug-for-bug)

por João Gabriel

gpt-4ClaudeGemini
(0)
0 vendas
R$ 49,90