은행 입금 동의 누락·알림 실패 건 자동 재처리로 개선
목차
무엇을 바꿨나
은행 파트너 입금 처리 흐름에서 두 가지를 손봤음.
- 개인정보 동의 처리 로직을 분리함: 기존엔 신청 폼에서 동의 체크박스만 받고 끝났는데, 은행 측 검증 시점에 동의 이력이 함께 넘어가야 정상 처리됨. 이게 안 맞아서 일부 건이 미처리로 빠지고 있었음.
- 미처리 알림 재처리 큐를 추가함: 알림 전송이 실패하거나 누락된 건을 자동 재시도하도록 함.
왜 손봐야 했음
미처리 건이 매일 한두 건씩 쌓여서 운영팀에서 수기로 정리하고 있었음. 원인을 추적해보니 두 갈래였음.
| 케이스 | 원인 | 비중 |
|---|---|---|
| 동의 누락 | 폼 → 핸들러 전달 시 플래그 유실 | 약 60% |
| 알림 실패 | 외부 통신 타임아웃 | 약 40% |
수기 정리는 휴먼 에러도 잦고, 무엇보다 영업일에만 처리되니까 주말 건이 월요일까지 밀리는 게 컸음. 자동화로 가야 했음.
어떻게 풀었나
핸들러에서 동의 이력을 별도 흐름이 아니라 입금 트랜잭션과 같은 단위로 묶어서 커밋하게 바꿨음. 부분 실패 시에도 상태가 어긋나지 않게 됨.
입금 신청 → 동의 스냅샷 저장 → 은행사 호출 → 결과 반영
↑ 실패 시 동의 스냅샷도 함께 롤백
재처리 배치는 단순하게 갔음.
- 미처리 큐 조회 → 상태별 분기
- 동의 누락이면 동의 이력 재기록 후 재호출
- 알림 실패면 알림만 재발송
- 3회 실패 시 운영 알림으로 에스컬레이션
API 컨트롤러 단에서는 신청 폼과 동의 시점 타임스탬프를 함께 받도록 시그니처를 정리했음. 감사 로그 추적용으로도 쓰임.
배운 점
리팩터링하면서 느낀 건 "신청 폼에서 받은 값"과 "외부 시스템에 보낼 값"의 라이프사이클을 분리해서 봐야 한다는 거였음. 같은 동의 플래그여도 폼 단계에선 사용자 의사 표시고, 핸들러 단계에선 감사 로그 성격임. 이걸 한 변수로 흘려보내면 어디서 깨졌는지 추적이 안 됨.
테스트는 미처리 케이스를 의도적으로 만든 픽스처를 깔고 돌렸음. 운영에서 일주일 더 모니터링하면서 재시도 임계치 조정할 예정.
다음
댓글 0
첫 댓글 달아줘.