29CM 네이버쇼핑 수수료 정산 시스템: 레거시 기술 부채 해소와 유연한 아키텍처 재설계 경험

🤖 AI 추천

이 콘텐츠는 레거시 시스템의 기술 부채를 해결하고 새로운 시스템으로 성공적으로 전환한 백엔드 개발자, 특히 배치 시스템 및 데이터 정산 시스템 구축 경험이 있는 개발자에게 유용합니다. 프로시저 중심 아키텍처의 한계를 극복하고 Spring Boot, Spring Batch를 활용하여 확장 가능하고 유지보수하기 쉬운 시스템을 설계하는 과정에서 실질적인 인사이트를 얻을 수 있습니다.

🔖 주요 키워드

29CM 네이버쇼핑 수수료 정산 시스템: 레거시 기술 부채 해소와 유연한 아키텍처 재설계 경험

핵심 기술: 29CM의 네이버쇼핑 수수료 정산 시스템은 7년간 운영된 레거시 시스템의 성능 한계와 유지보수의 어려움을 극복하기 위해 Spring Boot 기반의 API 및 배치 모듈로 재설계되었습니다. 프로시저 중심의 복잡한 아키텍처에서 벗어나, Spring Batch를 활용한 모듈화된 처리와 멀티스레드 기반의 고성능 API 구조를 통해 유연성과 확장성을 확보했습니다.

기술적 세부사항:
* 레거시 시스템: Python/Django 기반 배치 스크립트와 PostgreSQL 프로시저/트리거를 사용하여 정산 데이터 생성 및 집계를 수행했습니다. 대용량 데이터 처리 시 블로킹 I/O와 단일 스레드 구조로 인한 성능 저하 및 로직 변경의 어려움이 있었습니다.
* 재설계 배경: 데이터 폭증으로 인한 성능 한계, 거대해진 프로시저로 인한 로직 파악 및 수정의 어려움, 테스트 및 버전 관리 부재, 트리거 기반의 암묵적 실행 흐름 등이 주요 문제였습니다.
* 신규 시스템 아키텍처: Spring Boot 기반 API와 배치 모듈로 구성, 정산 로직을 명확히 분리했습니다. 정산 목적에 맞는 새로운 테이블 스키마를 설계했으며, 마이그레이션 리스크 최소화를 위해 기존 상세 데이터는 마이그레이션하지 않고 조회 시점에 따라 선택적으로 사용했습니다.
* Spring Batch 기반 배치 프로세스:
* 정산 주문 상세 생성: 정산 기준별(결제 완료, 취소 완료, 반품 완료 등)로 Step을 분리하여 병렬 실행 및 유연한 기준 추가/변경이 가능하도록 설계했습니다. Reader는 기준별로 분리하고 Processor/Writer는 공통 재사용하여 응집도와 확장성을 높였습니다.
* 일간 집계 생성: 다양한 정산 주기 요구에 대비하여 일 단위 통계 데이터 생성을 기본으로 했습니다.
* 월간 집계 생성: 일간 집계를 기반으로 월 단위 통계를 생성하여 주기 확장성을 확보했습니다.
* Spring Boot 기반 API: 기존 Django API의 성능 병목을 해결하기 위해 멀티스레드 기반 고성능 처리 구조로 전환했습니다. 동일한 API 기능을 안정적으로 제공하며, 운영 및 장애 대응 측면에서의 유연성을 강화했습니다.
* 정산 기준 전환: 기존의 '출고 완료'에서 '결제 완료'로 정산 기준이 변경됨에 따라, 날짜 기준이 걸쳐 있는 주문에 대한 누락 방지를 위한 시나리오를 정의하고 테스트 코드로 검증하여 안정적인 전환을 이루었습니다.

개발 임팩트: 기술 부채 해소 및 근본적인 체질 개선을 통해, 정산 정책 변경에 대한 빠른 대응 능력과 시스템의 유연성 및 확장성을 확보했습니다. 이는 향후 비즈니스 성장에 따른 데이터 증가와 새로운 정산 요구사항 발생 시에도 안정적으로 대처할 수 있는 기반을 마련했습니다. 또한, 복잡한 프로시저 로직을 애플리케이션 레벨로 가져옴으로써 테스트 용이성과 유지보수성을 크게 향상시켰습니다.

커뮤니티 반응: (원문에서 커뮤니티 반응에 대한 직접적인 언급은 없었습니다.)

📚 관련 자료