목록 보기
“이번 달도 밤샘 정산입니다.” — 정산 시스템은 어떻게 만들었을까 (실전편)
백엔드

“이번 달도 밤샘 정산입니다.” — 정산 시스템은 어떻게 만들었을까 (실전편)

무신사
무신사
2026년 1월 27일

두줄요약

정산 도메인의 특성에 맞춰 이벤트 처리와 배치 처리를 분리한 하이브리드 구조를 설명했습니다. Kafka, Spring Batch, Argo Workflow로 실패와 재처리를 전제로 한 정산 시스템을 구현했습니다.

구조와 흐름

  • 정산 원천 데이터는 Kafka 이벤트로 수신하고, 멱등 저장과 DLT 격리로 중복 수신·재처리 상황을 전제로 처리
  • 정산 수행은 Spring Batch 기반 배치로 마감·리포트·복구를 담당하고, Argo Workflow가 실행 시점과 재실행 흐름을 제어
  • 정산 대상 데이터에 PENDING, PROCESSING, COMPLETED 상태를 두어 배치 실패 시에도 대상 단위로 재정의·재처리 가능

선택 이유

  • 실시간 반영이 필요한 이벤트 처리와 회계 마감처럼 안정성이 중요한 배치 처리를 분리한 하이브리드 구조 채택
  • 예측 가능성, 재현성, 장애 대응 용이를 우선해 Kotlin, Spring Boot, Spring Batch, Kafka, MySQL 조합 선택
  • 정산 결과의 Source of Truth와 멱등성 갱신을 위해 트랜잭션이 명확한 RDB 사용

성능/운영 포인트

  • DLT 발생률이 전체 이벤트 대비 0.001% 미만으로 유지되며, 실패 이벤트는 전체 정산 흐름을 멈추지 않도록 격리
  • 배치 실행 상태, 실패 로그, 지연(Lag), Latency, 인프라 지표를 함께 모니터링해 이상 징후를 조기 감지
  • 주 단위 상태 점검으로 성능 저하와 병목을 사전 식별

다음 읽기

#Kafka 주제를 이어서 읽기

“이번 달도 밤샘 정산입니다.” — 정산 시스템은 왜 필요했을까 (설계편)

정산을 사람의 기억이 아닌 시스템의 책임으로 옮기기 위한 MASS 설계 원칙을 다뤘습니다. 멱등성, 결정적 계산, 고정 반올림으로 재처리와 재계산에도 동일한 결과를 보장했습니다.

무신사
무신사
아키텍처

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...