Versionamento de Eventos
Migração sem downtime
Tutorial de rollout gradual de versões de evento com rollback e métricas.
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
- Preparar consumidor para aceitar v1/v2.
- Ativar dual publish no produtor (v1 + v2).
- Monitorar adoção de v2 até atingir meta.
- 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
v2por 7 dias. - Taxa de erro estável.
- Nenhum consumidor crítico apenas em
v1.
Passo 4 - Rollback
Se falhar:
- Desative flag
dual_publish_customer_created. - Volte consumidor para parser prioritário de v1.
- 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.