레거시 정산 개편기: 신규 시스템 투입 여정부터 대규모 배치 운영 노하우까지
강민주/박진현 · 토스 · 토스 기술 블로그
소개
토스페이먼츠 정산 플랫폼팀의 레거시 개편 여정을 공유합니다.
AI 핵심 요약
20년 넘게 운영한 정산 시스템은 비즈니스 로직이 거대한 공통 SQL에 얽혀 있고, 집계 데이터로는 거래별 오류를 추적하기 어려우며, 거래량 증가에 따라 배치 처리 시간도 늘어나는 한계가 있었습니다. 팀은 로직을 도메인별 객체로 분리하고 거래 단위 결과와 계산 당시 설정 스냅샷을 저장했으며, 날짜 기반 파티셔닝·인덱스와 조회 전용 테이블로 데이터 증가에 대응했습니다. Spring Batch에는 설정 캐싱, 청크 단위 Bulk 조회, JDBC Batch Insert와 병렬 처리를 적용하고, 자동화 테스트 및 레거시와 신규 결과를 비교하는 배치 카나리로 안전하게 전환했습니다. 운영 측면에서는 Kubernetes 이전 과정의 성능·중복 실행 문제를 겪은 뒤 Jenkins를 선택하고, 동적 자원 할당과 Job DSL 기반 설정 관리로 대규모 배치 운영을 개선했습니다.
- 거대한 SQL은 도메인과 세부 기능 단위로 나누면 변경 지점과 영향 범위를 파악하기 쉬워집니다.
- 거래별 결과와 당시 계약 설정 스냅샷을 함께 저장하면 오류를 추적하고 과거 계산을 재현할 수 있습니다.
- Spring Batch에서는 설정 캐싱, 청크 단위 Bulk 조회, JDBC Batch Insert로 반복적인 데이터베이스 I/O를 줄일 수 있습니다.
- 멀티스레드 배치의 중복·누락을 막으려면 동기화에만 의존하기보다 스레드별 처리 대상을 명확히 분할해야 합니다.
- 배치 전환은 자동화 테스트와 레거시·신규 결과 비교를 거치는 카나리 방식으로 작은 단위부터 진행할 수 있습니다.
비슷한 학습 자료
토스ㅣSLASH 22 - 토스뱅크의 완전히 새로운 대출 시스템
SLASH · YouTube
레거시 결제 원장을 확장 가능한 시스템으로
박순현/양권성 · 토스 기술 블로그
20년 레거시를 넘어 미래를 준비하는 시스템 만들기
하태호 · 토스 기술 블로그
멈춰있던 PG의 시간, 토스페이먼츠가 다시 흐르게 합니다
하태호 · 토스 기술 블로그
업무 효율화, 작은 단계부터 다시 보기
서소희/문은진 · 토스 기술 블로그
컬리의 새로운 배송 시스템 구축 과정과 우리가 배운점
한경훈 · 컬리 기술 블로그