Pular para o conteudo principal

Reconciliação entre sistemas

Como comparar e corrigir divergência entre sistemas partindo do fato de que sincronismo perfeito não existe.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Dois sistemas deveriam contar a mesma história.

Mas, na prática:

  • um recebeu evento e o outro não
  • uma chamada falhou no meio
  • um backfill foi interrompido
  • um contrato mudou
  • uma fila atrasou

E agora os estados divergem.

Muita gente reage com frase grande:

“Precisamos garantir consistência.”

Só que, nesse ponto, o problema já não é teoria.

É este:

  • como detectar diferença real
  • como decidir qual lado está certo
  • como corrigir sem piorar a situação

Modelo mental

Pense assim:

reconciliação é o processo de comparar, explicar e corrigir divergência entre sistemas que deveriam convergir

Essa definição ajuda porque tira a conversa do teatro.

Não se trata de fingir que tudo sempre esteve sincronizado.

Se trata de admitir que divergência acontece e desenhar um jeito seguro de recuperação.

Quebrando o problema

Primeiro descubra qual diferença importa

Nem toda diferença é erro relevante.

Exemplos:

  • timestamp levemente diferente pode ser ruído
  • status de pagamento diferente provavelmente não é
  • campo opcional ausente pode ser tolerável
  • valor financeiro divergente pode ser gravíssimo

Sem essa classificação, reconciliação vira diff cego e barulho.

Defina a fonte de verdade por tipo de dado

Esse ponto precisa ficar explícito.

Perguntas úteis:

  • para pagamento, quem manda?
  • para cadastro, quem manda?
  • para inventario, quem manda?

Se os dois lados se comportam como fonte de verdade ao mesmo tempo, a correção vira briga de estado.

Compare com identificador estavel

Reconciliar sem chave clara é pedir para errar.

Normalmente você precisa de algo como:

  • order_id
  • payment_id
  • external_reference
  • customer_id

Sem isso, você não sabe se está vendo o mesmo fato em dois lugares ou fatos parecidos que não deveriam ser mesclados.

Corrigir nem sempre significa sobrescrever

Dependendo do caso, a ação certa pode ser:

  • reenfileirar um evento
  • refazer só uma etapa
  • marcar para análise manual
  • reprocessar com proteção idempotente
  • compensar em vez de sobrescrever

O erro comum é assumir que reconciliar significa “copiar A sobre B”.

Às vezes isso só espalha um erro antigo mais rápido.

Reconciliação boa produz aprendizado, não só limpeza

Se divergência aparece muito, o problema não é só operacional.

É estrutural.

Então reconciliação madura também pergunta:

  • por que isso divergiu
  • como detectar antes
  • que contrato, retry ou observabilidade faltou

Sem isso, o time vira faxineiro de divergência eterna.

Exemplo simples

Imagine um sistema interno de pedidos e um ERP externo.

O pedido 123 aparece como:

  • paid no sistema interno
  • pending no ERP

Plano ruim:

  • forçar update no ERP e considerar encerrado

Plano melhor:

  1. confirmar se ambos estão olhando o mesmo order_id
  2. verificar qual evento ou chamada faltou
  3. decidir se a correção certa é reenviar evento, compensar ou intervir manualmente
  4. registrar a causa para não depender da mesma reconciliação sempre

Assim, a correção deixa de ser chute.

Erros comuns

  • Comparar tudo sem separar ruído de divergência relevante.
  • Não definir fonte de verdade.
  • Corrigir sobrescrevendo estado sem entender a origem da diferença.
  • Reconciliar sem identificador estável.
  • Tratar reconciliação como limpeza manual eterna em vez de sinal de fragilidade sistêmica.

Como um senior pensa

Quem tem mais experiência costuma perguntar:

“Essa divergência significa que lado perdeu um fato, ou eu estou comparando coisas que não deveriam bater exatamente?”

Essa pergunta evita correções agressivas e burras.

O que o entrevistador quer ver

Em entrevista, o avaliador quer ver se você sabe lidar com mundo imperfeito sem se esconder atrás de discurso de consistência total.

Você sobe de nível quando:

  • fala de diferença relevante versus ruído
  • define fonte de verdade
  • propõe comparação com chave estável
  • escolhe correção pelo tipo de divergência, não por reflexo

Uma resposta forte costuma soar assim:

“Eu trataria reconciliação como processo: identificar a mesma entidade nos dois lados, classificar a divergência, decidir qual sistema é fonte de verdade naquele dado e corrigir com reprocessamento, compensação ou intervenção manual quando necessário.”

Reconciliar bem não é fingir que os sistemas nunca divergiram. É saber trazê-los de volta sem inventar um problema novo.

Quando a reconciliação vira rotina demais, ela deixou de ser manutenção e virou sintoma de arquitetura.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Como Remover Dependências Antigas Sem Apagar Suporte Cedo Demais Artigo anterior Como quebrar monolito ou sistema acoplado

Continue explorando

Artigos relacionados