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

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

무신사
무신사
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, 인프라 지표를 함께 모니터링해 이상 징후를 조기 감지
  • 주 단위 상태 점검으로 성능 저하와 병목을 사전 식별

댓글 0

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

댓글을 불러오는 중...