코어뱅킹 우당탕탕 정산 자동화 개발
두줄요약
월별 수동 정산을 일별 모듈형 정산으로 바꾸고 자동화한 과정을 소개했습니다. 멱등성, 락, 비동기 분산 처리로 중복 정산을 막고 지급 시간을 크게 줄였습니다.
문제 상황
- 월별 수동 정산 방식에서 멱등성 부족으로 중복정산·오정산 발생
- 과거 데이터 추적과 수정이 어렵고, 외부 API 호출 포함 지급 작업에 1시간 이상 소요
원인 분석
- 정산 코드의 상태 관리와 재실행 안전성 부족
- I/O 바운드 지급 작업을 동기적으로 처리해 대기 시간이 누적
- 순서 의존적인 자동 호출 방식은 실패 복구와 운영 안정성에 취약
해결 방법
- 월별 정산을 일별 정산 모듈로 재구성하고 기록·지급·지급 확인·출금으로 분리
- 셀러리 기반 비동기·분산 처리와 주기적 호출로 자동화 구성
- 검증 단계, 모듈별 락, 트랜잭션으로 멱등성 확보
성능/운영 포인트
- 상품 단위와 지급 API 태스크를 독립적으로 병렬 처리해 I/O 병목 완화
- 지급 결과를 DB에 기록한 뒤 폴링으로 확인하는 운영 방식 채택
- advisory_lock으로 동일 태스크의 중복 실행 방지
적용해볼 점
- 정산처럼 재실행 가능한 업무에는 멱등성과 단계 분리가 핵심
- 동기 I/O 작업은 비동기화·병렬화로 처리 시간 단축 가능
- 자동화는 실패 복구 가능성과 중복 방지 장치까지 함께 설계 필요


