← 카탈로그

잔액-원장 — 캐시 잔액 + append-only 원장

architecturevcraft

포인트나 적립금 같은 걸 관리할 때, 지갑에 적힌 숫자(빠르게 보는 용) 와 가계부(진짜 기록) 를 둘 다 두고, 언제나 서로 딱 맞게 유지하는 방법이에요.

비유: 지갑 겉면 숫자 + 가계부 📒

용돈을 관리한다고 해봐요. 두 가지를 같이 써요.

  • 지갑 (잔액) — 겉면에 "지금 3,000원" 이라고 큼직하게 적혀 있어요. 얼마 있는지 한눈에 빠르게 보려고요.
  • 가계부 (원장) — "7/1 용돈 +5,000 / 7/3 과자 -2,000" 처럼 모든 거래를 한 줄씩 적어요. 왜 3,000원이 됐는지 이유가 전부 남아 있어요.

규칙은 딱 하나예요: 지갑 숫자 = 가계부에 적힌 걸 다 더한 값. 항상 똑같아야 해요.

돈이 움직일 때 (항상 둘을 같이!)

거래가 생기면 가계부에 한 줄 쓰기와 지갑 숫자 고치기를 반드시 같이 해요. 하나만 하고 멈추면 둘이 안 맞아버려요.

이 두 가지는 한 묶음이에요. 가계부만 쓰고 지갑을 안 고치거나, 그 반대도 안 돼요. 중간에 하나라도 실패하면 아예 처음부터 다시 해요. (반쪽만 되는 건 절대 금지!)

가계부는 지우지 않아요

가계부는 틀려도 지우지 않아요. "아까 그거 잘못 적었다" 싶으면, 지우는 대신 반대로 되돌리는 줄을 새로 하나 더 써요.

  • 잘못 +2,000 적었다 → 지우지 말고 -2,000 줄 추가로 되돌려요.
  • 이렇게 하면 "언제 무슨 일이 있었나" 가 전부 그대로 남아요.

그리고 가계부 줄마다 "이 거래 직후 지갑은 얼마였다" 도 같이 적어둬요. 나중에 "그때 얼마였지?" 를 다 더해보지 않고 바로 알 수 있게요.

두 사람이 동시에 만지면? (자물쇠)

지갑 숫자는 빠르게 보려고 겉에 적어둔 거라, 동시에 두 명이 고치면 사고가 나요. 그래서 지갑을 만질 땐 잠깐 자물쇠를 걸어요. 한 명이 다 고칠 때까지 다른 사람은 기다려요.

자물쇠가 없으면 둘이 동시에 고쳐서 지갑 숫자와 가계부가 안 맞아버려요.

만약 지갑 숫자가 의심스러우면? 가계부를 처음부터 다 더해보면 진짜 값을 알 수 있어요. 그래서 진짜 진실은 언제나 가계부 쪽이에요. 지갑은 빠르게 보려고 베껴둔 것뿐.

핵심만 다시

  1. 지갑 숫자(빠른 조회) + 가계부(진짜 기록) 를 둘 다 둬요.
  2. 거래가 생기면 가계부 쓰기 + 지갑 고치기를 한 묶음으로 — 반쪽만 되면 안 돼요.
  3. 가계부는 지우지 않아요. 틀리면 되돌리는 줄을 새로 추가해요.
  4. 동시에 만지면 사고 나니 자물쇠를 걸고, 의심되면 가계부를 다 더해 검증해요.

더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.