개발 slecs

이커머스 결제·정산 전반의 집계 불일치와 상태 누락 개선

목차

한 번에 여러 영역을 만지면서 배운 것

이커머스 플랫폼 전반을 훑으면서 리포트 화면, 입금 정산 배치, 주문 흐름, 엑셀 다운로드 설정까지 한 번에 손을 댐. 처음엔 "검증만 좀 하면 되겠지" 했는데, 막상 들어가보니 영역마다 가정이 조금씩 어긋나 있어서 결국 개선까지 같이 가버림.

영역별로 본 문제와 처방

영역 증상 처방
리포트 관리 화면 필터 조합에 따라 합계/상세가 미세하게 안 맞음 집계 쿼리 단일 소스화, 화면 카드와 테이블이 같은 결과 참조
입금 정산 배치 PENDING 건 상태 전이가 일부 케이스에서 누락 상태머신을 코드에 명시, 홀딩→확정/취소 분기 모두 테스트
주문 처리 동일 주문 재요청 시 멱등성 불안정 요청 키 기준 락 + 결과 캐싱으로 중복 차감 방지
엑셀 설정 신규 컬럼 추가 시 코드 여러 곳 수정 필요 설정 레지스트리에 컬럼 메타 등록 → 한 곳만 고치면 끝

검증을 하다 결국 리팩터까지 간 이유

  • 검증 시나리오를 만들면서 보니 같은 데이터를 화면마다 다르게 집계하고 있었음. 한쪽은 결제 확정 기준, 다른 쪽은 요청 시점 기준. 숫자가 다른 게 당연한 구조였음.
  • 정산 배치는 파트너 잔액에 영향 주는 경로라 PENDING이 빠지면 그대로 회계가 어긋남. 결제대행사 통보 시점과 우리 배치 시점이 어긋나면 어떻게 되는지 케이스로 다 적어둠.
  • 엑셀은 매번 컬럼 늘려달라는 요청이 들어오는데, 그때마다 컨트롤러/서비스/DTO/헤더 4군데를 만지고 있었음. 레지스트리 한 군데로 모음.

구조 한 줄 요약

요청  멱등키 검사  도메인 처리  상태 PENDING 기록
                                   (배치/이벤트)
                          홀딩 만료  CONFIRMED / CANCELLED
                                  
                          잔액 반영 + 리포트 집계

이 흐름이 모든 영역에서 동일하게 보이도록 맞추는 게 이번 작업의 진짜 목표였음. 화면 하나 고치는 게 아니라, 같은 데이터가 어디서 보든 같은 숫자로 보이게 하는 일.

회고

  • "검증"이라고 시작했지만 실제로는 가정의 차이를 메우는 작업이었음. 코드 줄 수보다 머릿속 모델 정리에 시간이 더 들어감.
  • 멱등성·상태머신·집계 단일소스 — 이 세 개는 결제·정산 도메인에서 진짜 안 빠지는 주제.
  • 엑셀 같은 부수 기능도 변경 비용이 누적되는 지점이라 한 번 정리해두면 두고두고 편함.

다음

댓글 0

첫 댓글 달아줘.