핵심요약
MASS는 수기 정산의 비효율과 오류를 해결하기 위해 설계된 자동화 시스템입니다. 멱등성과 결정적 계산 원칙을 기반으로 정합성, 재현성, 감사 가능성을 확보했으며, 이벤트 기반 처리와 고정된 계산 로직으로 신뢰성을 높였습니다.
정산 시스템 설계 원칙 및 아키텍처
1. 정산 시스템의 필요성 및 복잡성
- 기존 정산 업무는 수기 작업, 엑셀 검증 등에 크게 의존하여 높은 업무 부담과 오류 가능성을 안고 있었음.
- 정산 시스템은 단순히 금액 계산을 넘어, 회계 마감 데드라인 준수, 단 한 건의 오류도 허용되지 않는 정합성, 과거 기준으로 재계산 가능한 재현성을 요구함.
- MASS(Musinsa Accounting & Settlement System)는 이러한 문제를 해결하고 정산 행위를 시스템이 책임지도록 설계됨.
2. MASS 설계 원칙: 신뢰성 우선
- 핵심 원칙: 빠르게 계산하는 시스템이 아니라, 실패해도 다시 계산할 수 있는 시스템이어야 함.
- 주요 아키텍처 원칙:
- 정합성 및 멱등성(Idempotency) 확보
- 결정적 계산(Deterministic Calculation): 동일 입력 시 동일 결과 보장 (재현성)
- 감사 가능성(Traceability) 보장
- 배치 실패 시 복구 및 재시작성 보장
3. 멱등성 보장을 위한 이벤트 처리
- 이벤트 기반 시스템 전제: 중복 수신 및 재처리를 피할 수 없으므로 이를 전제로 설계.
- 이벤트 재시도(Retry)와 격리(DLT) 분리: 일시적 실패는 재시도, 구조적 실패는 Dead Letter Topic으로 격리.
- 서비스 레벨 멱등 갱신: 고유 식별자(트랜잭션 식별자)를 기준으로 동일 이벤트 재처리 시에도 결과 일관성 유지.
4. 결정적 계산을 위한 로직 설계
- 계산기 모듈: 입력값(정산 기준일, 유형, 단가, 원천 데이터 등)에만 의존하는 순수 함수 형태로 설계.
- 금액 스케일 및 반올림 정책 고정:
BigDecimal사용,MONEY_SCALE강제 고정,RoundingMode.DOWN정책 일관 적용. - 재현성 확보: 동일한 입력과 컨텍스트가 주어지면 언제, 몇 번 실행해도 동일한 정산 결과 보장.