21. 게임 재화 원장(ledger) 설계: 이중부기·잔액 스냅샷·감사와 멱등성

난이도 중 해설 보기 →
문제

문제 21 — 게임 재화 원장(ledger) 설계: 이중부기·잔액 스냅샷·감사와 멱등성

MMORPG의 골드·캐시·재화는 "잔액 컬럼 하나를 UPDATE" 하는 방식으로 관리하기 쉽지만, 규모가 커지면 분쟁 대응(고객: "골드가 사라졌어요"), 어뷰징 추적, 경제 지표 산출, 롤백/보상 처리에서 한계에 부딪힌다. 많은 상용 게임은 재화를 원장(ledger) 으로 관리한다.

다음을 설명하라.

  1. 잔액 컬럼 단일 UPDATE 방식의 한계: 재화를 users.gold 한 컬럼으로 관리할 때 생기는 문제(추적 불가, 감사 불가, 동시성 갱신 유실, 분쟁 대응 곤란)를 정리하라.

  2. 이중부기(double-entry) 원장 모델: 모든 재화 이동을 불변(append-only) 거래 기록으로 남기는 설계를 제시하라. 각 거래가 출처(source)와 목적지(destination) 계정을 갖고, 시스템 전체 합이 보존된다(생성/소멸은 특수 계정으로)는 개념을 설명하라. 최소 스키마(거래 테이블 컬럼)를 제시하라.

  3. 잔액 조회 성능 — 스냅샷/롤업: 잔액을 매번 전체 거래 합산으로 구하면 느리다. 주기적 스냅샷(잔액 체크포인트) + 이후 델타 합산, 또는 증분 갱신되는 잔액 캐시로 성능을 확보하는 방법과 그 정합성 유지 방법을 설명하라.

  4. 멱등성과 중복 방지: 결제/보상/이체가 재시도·중복 요청될 때 이중 지급을 막는 멱등 키(transaction id) 설계와, 원장에서 유니크 제약으로 이를 강제하는 방법을 설명하라.

  5. 감사·정합성 검증·규제: 원장으로 가능해지는 것들 — 거래 추적, 정기 합계 검증(reconciliation), 어뷰징 탐지, 롤백/보상, 그리고 결제 관련 규제·환불 대응 — 을 정리하라. 원장 방식의 비용(저장량 증가, 쓰기 증폭)과 트레이드오프도 논하라.

답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.