피드로 돌아가기
올리브영 온라인몰 정산개편 이야기
올리브영 테크블로그올리브영 테크블로그
Backend

올리브영 온라인몰 정산개편 이야기

올리브영이 정산 데이터 수집 구조를 개편해 월 150건 이상의 보정 작업을 완전히 제거

2024년 12월 2일10intermediate

Context

기존 정산 시스템은 주문, 배송, 클레임 등 각 프로세스에서 데이터를 별도로 정제해 정산 테이블에 저장했다. 이 방식으로 인해 데이터 정합성 불일치가 빈번하게 발생했으며, 정산 개발자가 월 150건 이상의 보정 작업을 수동으로 처리해야 했다. 세일 행사 시에는 하루에 320건의 보정이 필요할 정도로 운영 리소스 부하가 심각했고, 월 마감 시 개발자와 운영 담당자 모두 야근이 필수였다.

Technical Solution

  • 원천 데이터와 정산 데이터를 분리: 주문, 클레임, 배송 데이터는 각 원천 테이블에만 적재하고 정산 단계에서 필요 시점에 수집
  • 데이터 무결성 기반 정산: 원천 테이블의 데이터 무결성을 보장한다는 전제 하에 정산 데이터를 생성해 정합성 불일치 문제를 근본 해결
  • BigDecimal 라이브러리 도입: 모든 상품 단위에 통일된 계산식을 적용하고 정확한 소수점 계산으로 주문번호별 데이터 안정성 확보
  • 다중 Sub Project 순차 오픈: 정산 개편을 여러 개의 Sub Project로 나누어 단계적으로 오픈해 리스크 최소화
  • 정산 화면 통합 및 개선: 혼용되던 화면을 통합하고 불필요한 프로세스와 데이터를 제거

Impact

  • 월별 정산 데이터 보정 건수: 150건 이상 → 2024년 4월 이후 0건 (완전 제거)
  • 예상 세일 행사 일일 보정 작업: 320건 → 0건
  • 정산 화면 조회 시간: 5~10분 이상 → 30초 이내 (80~95% 단축)
  • 월 마감 처리: 개발자 야근 필수 → 운영 담당자가 업무 시간 내 자체 처리 가능

Key Takeaway

다중 프로세스가 얽힌 데이터 파이프라인에서는 각 단계마다 데이터를 변형하기보다 원천 데이터의 무결성을 보장하고 필요 시점에만 수집·가공하는 구조를 채택해야 운영 부담을 근본적으로 제거할 수 있다. 정합성 문제의 대증 치료(사후 보정)에서 근치 치료(설계 개선)로 전환하면 장기적으로 개발 생산성과 시스템 안정성이 동시에 향상된다.


주문, 반품, 배송 등 여러 도메인에서 데이터를 생성하는 전자상거래 시스템에서는 각 도메인 모듈이 독립적으로 원천 데이터만 기록하고, 정산·매출·통계 등 비즈니스 관점 데이터는 별도의 수집 계층에서 원천 데이터를 조회해 생성하는 구조를 도입하면 정합성 보정 작업을 제거하고 개발 복잡도를 크게 낮출 수 있다.

원문 읽기