Versionamento de Eventos

Migração sem downtime

Tutorial de rollout gradual de versões de evento com rollback e métricas.

Avançado 30 min 25 pontos Leitura 0%

Nesta aula você vai

  • Executar rollout de evento v2 sem interromper fluxo
  • Monitorar adoção por versão em tempo real
  • Aplicar plano de rollback seguro

Migração sem downtime

Nesta aula você vai fazer migração gradual de customer.created para v2 com monitoramento e rollback.

Plano de rollout em 4 fases

  1. Preparar consumidor para aceitar v1/v2.
  2. Ativar dual publish no produtor (v1 + v2).
  3. Monitorar adoção de v2 até atingir meta.
  4. Desligar v1 com janela de segurança.

Passo 1 - Dual publish no customer-service

Arquivo: services/customer-service/src/main/java/.../CustomerEventPublisher.java

if (flags.isEnabled("dual_publish_customer_created")) {
  kafka.publish("customer.created", eventV1);
  kafka.publish("customer.created", eventV2);
} else {
  kafka.publish("customer.created", eventV1);
}

Passo 2 - Observabilidade por versão

Métrica no consumidor:

customer_created_consumed_total{service="order-service",version="v1|v2"}

Consulta local:

curl -s http://localhost:9090/api/v1/query \
  --data-urlencode 'query=sum by (version) (rate(customer_created_consumed_total[5m]))'

Passo 3 - Critério de corte

Exemplo de política:

  • 95% de eventos em v2 por 7 dias.
  • Taxa de erro estável.
  • Nenhum consumidor crítico apenas em v1.

Passo 4 - Rollback

Se falhar:

  1. Desative flag dual_publish_customer_created.
  2. Volte consumidor para parser prioritário de v1.
  3. Reprocesse eventos pendentes em tópico de retry.

Comando de validação completa

make up
make test-contract
make test-integration

Resumo

Você aplicou uma migração sem downtime com dual publish, métricas por versão e rollback operacional claro.