레거시 정산 개편기: 신규 시스템 투입 여정부터 대규모 배치 운영 노하우까지
강민주/박진현 토스 · 토스 기술 블로그
AI 핵심 요약
20년 넘게 운영한 정산 시스템은 비즈니스 로직이 거대한 공통 SQL에 얽혀 있고, 집계 데이터로는 거래별 오류를 추적하기 어려우며, 거래량 증가에 따라 배치 처리 시간도 늘어나는 한계가 있었습니다. 팀은 로직을 도메인별 객체로 분리하고 거래 단위 결과와 계산 당시 설정 스냅샷을 저장했으며, 날짜 기반 파티셔닝·인덱스와 조회 전용 테이블로 데이터 증가에 대응했습니다. Spring Batch에는 설정 캐싱, 청크 단위 Bulk 조회, JDBC Batch Insert와 병렬 처리를 적용하고, 자동화 테스트 및 레거시와 신규 결과를 비교하는 배치 카나리로 안전하게 전환했습니다. 운영 측면에서는 Kubernetes 이전 과정의 성능·중복 실행 문제를 겪은 뒤 Jenkins를 선택하고, 동적 자원 할당과 Job DSL 기반 설정 관리로 대규모 배치 운영을 개선했습니다.
- 거대한 SQL은 도메인과 세부 기능 단위로 나누면 변경 지점과 영향 범위를 파악하기 쉬워집니다.
- 거래별 결과와 당시 계약 설정 스냅샷을 함께 저장하면 오류를 추적하고 과거 계산을 재현할 수 있습니다.
- Spring Batch에서는 설정 캐싱, 청크 단위 Bulk 조회, JDBC Batch Insert로 반복적인 데이터베이스 I/O를 줄일 수 있습니다.
- 멀티스레드 배치의 중복·누락을 막으려면 동기화에만 의존하기보다 스레드별 처리 대상을 명확히 분할해야 합니다.
- 배치 전환은 자동화 테스트와 레거시·신규 결과 비교를 거치는 카나리 방식으로 작은 단위부터 진행할 수 있습니다.
소개
토스페이먼츠 정산 플랫폼팀의 레거시 개편 여정을 공유합니다.
비슷한 학습 자료
컨퍼런스 SLASH
토스ㅣSLASH 22 - 토스뱅크의 완전히 새로운 대출 시스템
컨퍼런스 SLASH
2022년 1월 1일, 토스뱅크 대출 오픈런을 견뎌낸 토스뱅크 대출의 시스템은 어떻게 구성되었는지 살펴봅니다. 토스뱅크의 시스템 아키텍처를 공유하고 DB 스키마를 안전하게 설계하는 방법과 kafka, redis를 활용한 유량제어 시스템을 공유합니다. 민재슬 / 토스 Server Developer 발표 자료 👉🏻 https://bit.ly/3zyJT4N 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-22 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스 #개발자컨퍼런스 #SLASH
백엔드 데이터베이스 데브옵스 · 인프라
문서 박순현/양권성
레거시 결제 원장을 확장 가능한 시스템으로
문서 하태호
20년 레거시를 넘어 미래를 준비하는 시스템 만들기
문서 서소희/문은진