- 회계 용어가 낯설어도 계정과 잔액을 시간에 따라 추적하는 구조로 보면 복식부기를 돈의 흐름 모델로 이해할 수 있음
- 현재 잔액만 덮어쓰는 표는 변화 과정을 잃지만, 원장은 거래가 생길 때마다 항목을 추가해 이력과 수정 흔적을 남김
- 단식부기는 계정별 변화 기록에는 충분할 수 있으나, 여러 계정이 함께 움직이면 관련 항목을 거래로 묶어 출처와 도착지를 드러내야 함
- 복식부기는 거래마다 나가는 금액과 들어오는 금액이 같아야 하며, 이 균형 조건이 수작업 회계에서 체크섬처럼 오류를 잡아줌
- 계정과 거래를 노드로, 차변·대변 항목을 방향 있는 간선으로 보면 장부는 시간이 지나며 커지는 방향성 그래프가 되고 재무제표도 그 시각화로 볼 수 있음
잔액만 기록할 때 잃는 정보
- 회계는 시간에 따라 셀 수 있는 대상을 추적하는 일이며, 여기서는 돈의 흐름에 초점을 둠
- 예시에서는 2024년 1월 1일 Alice가 $100, Bob이 $50을 가진 상태에서 시작함
- Alice가 Bob에게 책값 $20을 지급하면 Alice의 잔액은 $80, Bob의 잔액은 $70이 됨
- 여기서 계정(account) 은 돈이 저장되는 장소이고, 잔액(balance) 은 특정 시점에 계정에 들어 있는 돈의 양임
- 현재 잔액만 덮어쓰면 Alice가 왜 $80을 갖게 됐는지 알기 어려움
- 처음에 $0에서 $80을 받은 것인지
- $10,000에서 $9,920을 쓴 것인지 구분할 수 없음
- 잔액 스냅샷만 남기는 방식은 변화가 일어난 과정을 지워버림
단식부기 원장과 불변 기록
- 변화 이력을 남기려면 거래가 발생할 때마다 기존 값을 바꾸지 않고 새 행을 추가해야 함
- 원장 항목에는 보통 다음 정보가 들어감
- Description: 거래 설명, 지급 대상, 참조 번호 등 사람이 읽을 수 있는 설명
- Date: 거래 발생일이며, 월별 보고 같은 기간별 그룹화에도 사용 가능함
- Balance: 거래 이후 계정 잔액으로, 중복 정보지만 데이터 검토에 유용함
- 각 행은 항목(entry) 이고, 한 계정의 항목 모음은 원장(ledger) 임
- Alice 원장에는 2024년 1월 1일 opening balance $100, 2024년 2월 1일 bought book -$20이 기록됨
- Bob 원장에는 opening balance $50, sold book $20이 남음
- 이런 방식은 단식부기(single-entry bookkeeping) 시스템임
- 각 계정이 자기 원장을 가짐
- 한 번에 한 계정에 영향을 주는 항목을 기록함
- 소규모 사업이나 개인 재무에는 잘 맞을 수 있음
원장은 이벤트 소싱처럼 동작함
- 원장의 중요한 특징은 데이터가 불변(immutable) 이라는 점임
- 항목을 한 번 쓰면 전체 이력을 보존하기 위해 수정하지 않음
- 책값을 $20으로 잘못 기록했지만 실제 가격이 $30인 경우, 기존 행을 바꾸면 원래 금액과 수정 사실을 잃게 됨
- 더 나은 방식은 기존 항목을 상쇄하는 새 항목을 추가하고, 올바른 항목을 다시 넣는 것임
- -$20 항목을 +$20으로 취소함
- 이후 -$30 항목을 새로 기록함
- 최종 잔액은 $70으로 같지만, 오류와 수정 이유가 남음
- 이 방식은 컴퓨터 과학의 이벤트 소싱(event sourcing)과 비슷함
- 시스템에서 발생한 이벤트를 저장함
- 이벤트를 재생해 현재 상태를 계산함
- 특정 시점의 상태를 다시 만들 수 있음
복식부기가 필요한 순간
- 여러 계정이 함께 움직이는 거래에서는 단식부기만으로 관계를 명확히 알기 어려움
- Alice의 -$20과 Bob의 +$20은 같은 돈이지만, 단순 원장만 보면 Bob이 Charlie에게서 돈을 받았을 가능성과 구분되지 않음
- 관련 항목을 거래(transaction) 로 묶으면 같은 사건에 속한 항목임을 명시할 수 있음
- Transaction 1: Alice의 opening balance
- Transaction 2: Bob의 opening balance
- Transaction 3: Alice가 Bob에게 책을 구매함
- 거래는 서로 다른 계정에 영향을 주는 관련 항목들의 묶음임
- 복식부기는 계정 간 돈의 흐름을 볼 수 있도록 관련 항목을 거래 단위로 연결함
차변, 대변, 균형 조건
- 전통 회계는 돈의 흐름을 debit과 credit 두 열로 표현함
- Credit: 계정에서 돈이 나가는 항목
- Debit: 계정으로 돈이 들어오는 항목
- Alice가 Bob에게 $20을 지급하면 Alice 계정은 $20 credit, Bob 계정은 $20 debit으로 기록됨
- 은행 카드의 credit/debit 용어와 회계의 debit/credit 용어는 다르게 쓰임
- 종이 장부에서는 왼쪽을 debit, 오른쪽을 credit으로 나누는 T-account 형식이 쓰였음
- 컴퓨터 시스템에서는 꼭 두 열을 유지할 필요가 없음
Type열에 Debit 또는 Credit을 넣고Amount를 따로 둘 수 있음- 또는 credit을 음수, debit을 양수로 정하는 단일 금액 열을 쓸 수 있음
- 전통 용어보다 incoming money와 outgoing money가 덜 혼란스러운 표현일 수 있음
거래는 두 항목으로 제한되지 않음
- 복식부기의 핵심 원칙은 각 거래 후 시스템 전체 돈의 합이 변하지 않는다는 점임
- 특정 계정 잔액은 늘거나 줄 수 있지만, 모든 계정 잔액의 합은 일정해야 함
- Opening balance도 균형을 맞추려면 돈이 어디선가 나와야 함
- 예시에서는 Bank 계정을 추가해 Alice의 $100, Bob의 $50이 Bank에서 나간 것으로 기록함
- 이 Bank 계정은 규칙을 지키기 위한 일종의 임시 계정이며, 회계 용어로는 contra account에 해당함
- 모든 거래는 나가는 돈과 들어오는 돈이 같아야 하며, 이는 수작업 회계에서 오류를 잡는 체크섬(checksum)처럼 작동함
- 복잡한 거래도 같은 원칙으로 모델링할 수 있음
- Alice는 Bob에게 $20을 지급하고 신용카드 회사에 외환 수수료 $2를 지급함
- Bob은 Alice에게 $20을 받고 세무 당국에 판매세 $2, 신용카드 회사에 수수료 $1을 지급함
- 신용카드 회사는 Alice에게서 $2, Bob에게서 $1을 받음
- 세무 당국은 Bob에게서 $2를 받음
- 이 경우 하나의 Transaction 3에는 정확히 8개 항목이 포함됨
- “Double-entry”는 거래가 두 항목만 가진다는 뜻이 아니라, 돈이 나가는 쪽과 들어오는 쪽이라는 두 면을 가진다는 뜻임
장부를 방향성 그래프로 보기
- 복식부기는 돈의 흐름을 방향성 그래프로 모델링한 것으로 볼 수 있음
- 그래프 대응 관계는 다음과 같음
- 계정은 그래프의 노드
- 거래도 별도의 노드
- Credit 항목은 계정에서 거래로 향하는 나가는 간선
- Debit 항목은 거래에서 계정으로 향하는 들어오는 간선
- 항목의 금액은 간선의 값
- 계정 잔액은 들어오는 간선 합에서 나가는 간선 합을 뺀 값
- Transaction 1은 Bank에서 Alice로 $100을 이동시킴
- Transaction 2는 Bank에서 Bob으로 $50을 이동시킴
- Transaction 3은 Alice에서 Bob으로 $20을 이동시킴
- 이 표현에서는 Alice의 잔액이 $80, Bob의 잔액이 $70이 됨
복잡한 거래를 나누는 모델링 선택
- 수수료와 세금까지 하나의 거래에 모두 넣으면 Transaction 3의 간선이 많아져 복잡해짐
- 같은 돈의 흐름을 더 작은 거래로 나눌 수도 있음
- Alice 계정에서는 $22가 나감
- Bob은 $19를 받음
- 나머지 $3는 신용카드 회사로 감
- Bob의 판매세 $2는 별도 Transaction 4로 처리됨
- 어떤 방식으로 거래와 항목을 묶어도 최종 계정 잔액은 같을 수 있음
- Alice: $78
- Bob: $67
- Tax authority: $2
- Credit card company: $3
- 회계 시스템은 다양한 요구를 수용할 만큼 유연하며, 거래와 항목의 그룹화 방식은 사업에 맞게 정해야 함
재무제표는 그래프의 시각화
- 그래프는 새 거래가 추가될수록 시간이 지나며 커짐
- 그래프의 기본 속성은 계속 유지됨
- 계정은 노드로 남음
- 거래는 돈의 흐름을 강제하는 노드로 남음
- 거래마다 나가는 금액 합과 들어오는 금액 합이 같아야 함
- Balance sheet, income statement, cash flow statement는 이 그래프의 시각화로 볼 수 있음
- Assets, liabilities, equity, income, expenses 같은 분류는 그래프 안의 노드 그룹으로 볼 수 있음
- 그래프 관점으로 보면 credit과 debit이 각 분류의 잔액을 어떻게 늘리거나 줄이는지 더 직관적으로 이해할 수 있음