Reconciliere prin design: registre care se echilibrează întotdeauna
Majoritatea bug-urilor financiare nu sunt dramatice. Sunt câțiva bani care se îndepărtează între două sisteme de-a lungul unei luni, descoperiți atunci când cineva încearcă să închidă contabilitatea, iar totalurile refuză să se potrivească. Până atunci, cauza este îngropată sub un milion de tranzacții. Reconcilierea făcută ca o reflecție ulterioară este arheologie. Făcută ca principiu de proiectare, este aritmetică ce nu poate minți.
Partida dublă nu este opțională
Fiecare mișcare de bani este înregistrată ca debite și credite echilibrate în conturi, iar invariantul este absolut: pentru orice tranzacție, debitele egalează creditele, iar suma tuturor soldurilor din sistem este zero. Banii nu sunt niciodată creați sau distruși, ci doar mutați între conturi — inclusiv cele externe care reprezintă banca, procesatorul sau cardul clientului. Dacă o singură înregistrare ar strica echilibrul, întreaga tranzacție este respinsă. Aceasta nu este nostalgie contabilă; este cel mai ieftin invariant pe care îl vei avea vreodată pentru a detecta că ceva a mers prost.
Facem registrul de tip append-only. Înregistrările nu sunt niciodată actualizate sau șterse — o greșeală este corectată printr-o înregistrare compensatorie care o inversează, lăsând atât eroarea, cât și remedierea ei vizibile pentru totdeauna. Astfel, fiecare sold are o derivare: este suma înregistrărilor sale, reproductibilă de la zero în orice moment. Când un număr pare greșit, nu ghicim; reluăm înregistrările și urmărim unde adevărul se desparte de așteptare.
Reconciliază cu lumea exterioară
Consistența internă este necesară, dar nu suficientă. Registrul trebuie să fie de acord și cu realitatea — fișierul de decontare al procesatorului, extrasul bancar, raportul furnizorului de portofel. Importăm acele înregistrări externe și le potrivim linie cu linie cu propriile noastre înregistrări, semnalând orice apare pe o parte, dar nu și pe cealaltă. O tranzacție pe care am înregistrat-o, dar pe care procesatorul nu a decontat-o niciodată, sau o plată pe care banca o arată, dar pe care noi nu am contabilizat-o, iese la suprafață în câteva ore, nu la final de lună. Potrivirea rulează continuu, iar elementele nepotrivite ajung într-o coadă de excepții cu suficient context încât un om să le rezolve rapid.
Un registru pe care îl reconciliezi o dată pe lună este un registru care este greșit timp de o lună înainte să afli.— Protocore · Inginerie backend
Disciplina se plătește singură prima dată când un auditor, un reglementator sau un client furios întreabă unde a ajuns un anumit euro. Pentru că registrul este echilibrat prin construcție și reconciliat continuu, răspunsul este o interogare, nu o investigație. Construirea acestui mecanism de la bun început costă mai mult decât o coloană naivă `balance += amount`. Costă însă mult mai puțin decât reconstruirea istoricului tău financiar sub presiune, după ce numerele au încetat deja să se mai adune.
Ai un sistem de construit?
Spune-ne care e problema. Revenim cu o arhitectură și un plan.
Începe un proiect