Conceitos
Livro-razão de partida dobrada
Intuição
Pense numa rede de canos que leva água de uma torneira até reservatórios: tudo o que sai de um ponto tem de chegar a outro, e os canos do meio, quando o fluxo termina e tudo funcionou, ficam vazios. Se sobrar água parada num cano, você sabe que alguma coisa no caminho deu errado, e sabe exatamente onde olhar. Um livro-razão de partida dobrada faz o mesmo com dinheiro: todo valor que sai de um lugar entra em outro, e nada é apagado do caderno, só se acrescentam novas linhas.
Como funciona
Na contabilidade de partidas dobradas, todo movimento é registrado como um débito em uma conta e um crédito em outra, de modo que créditos e débitos se equilibrem e todo o dinheiro do sistema fique contabilizado. No Ledger da Stripe, cada sistema produtor é modelado como um fluxo lógico de fundos: contas são baldes de dinheiro distinguidos por tipo e propriedades (como id e business), e eventos movem saldo entre elas. Uma cobrança, por exemplo, tem um evento de criação, que coloca valor numa conta de fundos ainda não desembolsados, e um evento de liberação, que o move para o saldo da empresa; os dois são independentes e o Ledger os une pelos identificadores, mesmo que cheguem fora de ordem ou de fontes diferentes. O núcleo é um log imutável de eventos: transações publicadas não podem ser apagadas nem alteradas, e o estado passado pode ser reconstruído processando os eventos até aquele ponto, porque saldos e fluxos são transformações dessa estrutura estática. Em regime estável, quando os fluxos já se completaram, as contas de clearing (intermediárias) ficam zeradas; uma liberação que não chega, ou que chega com id ou business errado, deixa saldo não nulo nelas, e uma consulta simples pelas contas de clearing com saldo diferente de zero quando já deveriam estar zeradas revela o problema. Como não se corrige um dado com um UPDATE, a correção é reverter e reprocessar operações anteriores, com migrações protegidas por revisão e commit em duas fases e por relatórios de qualidade de dados fora do fluxo de execução.
Na prática
Esse desenho aparece em sistemas financeiros que precisam provar a clientes internos e a auditores externos que o dinheiro se moveu como esperado, mesmo com serviços independentes, ritmos diferentes de entrega e dados imperfeitos. Na reconciliação, o saldo de cada conta é derivado do histórico de eventos e, quando o fluxo já deveria ter se completado, um resíduo não zerado numa conta de clearing aponta um evento ausente, atrasado ou incorreto e mostra em qual conta ele ficou. O post reporta mais de 99,9999% de explicabilidade da movimentação de dinheiro; o custo é que correções exigem reversão e reprocessamento em vez de edição direta, e o post não discute idempotência nem tratamento de escritas duplicadas.
Use em um desenho
Pratique na escola de System Design os casos que dependem deste conceito.