이중 원장 기반 정산 검증 시스템
Java, Spring Boot, MySQL, RabbitMQ
개요
물류 파트너 200개사 대상 월 정산 금액 80억 원 규모. 분기마다 정산 오차로 인한 클레임이 반복되어 파트너 신뢰도 하락
문제
주문·반품·조정 등 다양한 출처의 금액이 단일 테이블에 누적되는 구조. 중간 데이터 유실이나 중복 반영을 사후에 발견하기 어려워 오차 원인 추적 자체가 불가능한 구조라 정의
해결 과정
- 이중 원장 구조로 교차 검증. 거래 원장(이벤트 기반 적재)과 정산 원장(배치 집계)을 분리 운영. 매일 새벽 대사 배치가 양 원장의 파트너별 합산액을 비교하여 불일치 건을 자동 감지. 단일 원장 내 체크섬은 유실 자체를 감지 불가, 실시간 검증은 처리량 대비 지연 부담이 과도
- RabbitMQ로 거래 이벤트 원장 적재. 주문 확정·반품·수수료 조정 등 모든 금액 변동을 이벤트로 발행하여 거래 원장에 append-only로 적재. Consumer 멱등성 키로 중복 처리 방지, 미소비 이벤트는 대사 배치에서 보정
- 불일치 건 자동 알림 및 보류 처리. 대사에서 1원 이상 차이 발생 시 정산 상태를 보류로 전환하고 Slack 알림 발송. 운영팀이 원인 확인 후 수동 승인하는 안전장치 구성
결과
- 정산 오차율 0.3% → 0%, 수동 대사 엑셀 작업 완전 제거
- 파트너 클레임 분기 15건 → 0건