
백엔드
구관이 꼭 명관은 아니다: 정산 시스템의 세대교체
두줄요약
레거시 정산 시스템의 성능 한계와 복잡도를 해결하기 위해 Spring Boot와 Spring Batch로 전면 재설계했습니다. 정산 기준별 Step 분리와 일간 집계 추가로 확장성과 운영 안정성을 높였습니다.
문제 상황
- 7년간 운영된 네이버쇼핑 수수료 정산 시스템의 기술 부채 누적
- 정산 데이터 폭증으로 상세 다운로드 API의 성능 한계와 타임아웃 발생
- 거대 PostgreSQL 프로시저와 트리거 중심 구조로 변경·테스트·추적 비용 증가
원인 분석
- Django 단일 스레드와 블로킹 I/O로 대용량 CSV 생성 처리 지연
- 1,000줄 이상 SQL, 다수 조건 분기와 테이블 조인으로 로직 복잡도 증가
- 트리거 기반 암묵적 실행 흐름과 테스트·버전 관리 부재
해결 방법
- Spring Boot 기반 API와 Spring Batch로 배치·서빙 구조 재구성
- 정산 기준별 Step 분리로 병렬 실행, 유연한 기준 추가, 공통 Reader/Processor/Writer 재사용
- 상세 데이터는 기존/신규 테이블을 조건부 조회, 월간 집계는 신규 스키마로 이관
성능/운영 포인트
- 멀티스레드 기반 REST API로 다운로드 병목 완화
- 일간 집계 단계를 추가해 향후 정산 주기 확장성 확보
- 정산 기준 전환 시 누락 가능 주문을 별도 시나리오와 테스트로 보완