Pular para o conteudo principal

Fronteira entre consistência forte e aceitação operacional no backend

Quando o backend trata consistência forte como virtude moral, ele começa a pagar custo demais por garantias que o produto nem sempre precisava.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Backend costuma cair em dois extremos:

  • quer consistência forte em tudo
  • aceita divergência em tudo e chama isso de pragmatismo

Os dois dão problema.

No primeiro caso, o sistema fica mais lento, mais acoplado e mais difícil de escalar.

No segundo, o produto começa a conviver com estado quebrado sem saber onde isso é aceitável.

Modelo mental

A pergunta útil não é:

“nosso sistema usa consistência forte ou eventual?”

A pergunta útil é:

“em quais fronteiras o fluxo realmente precisa fechar antes de seguir?”

Normalmente, cada fluxo tem pedaços diferentes:

  • um núcleo que precisa confirmar algo agora
  • efeitos derivados que podem atrasar
  • atualizações secundárias que podem ser reconciliadas depois

Exemplo simples

Imagine um backend de pagamento.

Quando o cliente confirma a compra, talvez você realmente precise garantir antes da resposta:

  • que o pedido foi criado
  • que a cobrança foi registrada

Mas talvez não precise garantir no mesmo instante:

  • atualização de dashboard
  • envio de analytics
  • projeção para relatórios
  • score derivado de risco

Se tudo entrar no mesmo fechamento forte, você transforma efeito secundário em gargalo do fluxo principal.

O erro comum

O erro comum é usar consistência forte como atalho mental para “sistema sério”.

Na prática, isso costuma gerar:

  • transação grande demais
  • acoplamento entre módulos
  • mais timeout
  • mais chance de falha total por causa de efeito lateral

O erro simétrico é empurrar qualquer coisa para fila e dizer que depois reconcilia.

Sem critério, isso vira só terceirização do problema.

O que normalmente ajuda

Ajuda separar três perguntas:

  • o que precisa ser verdadeiro antes da resposta?
  • o que pode atrasar por alguns segundos ou minutos?
  • o que pode ser corrigido depois sem dano inaceitável?

Isso força o backend a explicitar a fronteira entre:

  • garantia imediata
  • aceitação operacional
  • reconciliação posterior

Quando essa fronteira fica clara, o desenho melhora.

Como um senior pensa

Quem tem mais julgamento costuma perguntar:

  • qual erro seria inaceitável para usuário, finanças ou auditoria?
  • o que é desagradável mas recuperável?
  • onde uma falha parcial pode ser resolvida com compensação?
  • que custo operacional eu pago por exigir sincronismo forte aqui?

Essa conversa tira o sistema do campo da ideologia e coloca no campo do risco.

Ângulo de entrevista

Esse tema aparece em backend, pagamentos, pedidos, estoque, eventos e system design.

O entrevistador quer ver se você entende:

  • que consistência é decisão de produto e operação, não só de banco
  • que diferentes partes do fluxo podem pedir garantias diferentes
  • que compensação e reconciliação não são desculpa para desenho frouxo

Resposta forte costuma soar assim:

“Eu separaria o que precisa fechar forte no fluxo principal do que pode seguir com aceitação operacional controlada. Se tudo exigir sincronismo forte, o backend fica caro e frágil. Se nada exigir, você transfere risco demais para depois.”

Takeaway direto

Consistência forte vale onde a divergência é inaceitável.

No resto, o backend precisa de aceitação operacional consciente, não de fé.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Fronteiras de mutação e side effects sem concentrar tudo num service Deus Artigo anterior Transação e fechamento de fronteira: o que fica dentro e o que deve sair

Continue explorando

Artigos relacionados