케이뱅크 송금 알림 파서 분리로 정산 누락 해결
목차
케이뱅크 송금 알림 받기
연락처 송금에 케이뱅크 추가했음. 기존엔 시중은행 두 곳만 지원했는데, 파트너들이 케이뱅크 쓰는 비중이 늘어서 우선순위 올림.
수신 흐름은 단순함:
- 고객이 송금 → 메신저로 알림 도착
- 수신 컴포넌트가 메시지 캡처
- 파서가 금액/송금인/받는계좌 추출
- 매칭 큐에 적재 후 holds 처리
문제는 케이뱅크 알림 포맷이 기존 은행과 미묘하게 다르다는 거였음. 줄바꿈 위치, 통화 표기(1,234원 vs 1234 원), 받는사람 마스킹 패턴(홍*동 vs 홍○동)이 전부 달랐음. 처음엔 정규식 한두 줄만 더 끼워 넣으면 될 줄 알았는데, 기존 패턴이 케이뱅크 메시지를 부분 일치로 먹어버려서 잘못된 필드가 추출되는 케이스가 발생.
메시지 파서 분리
기존 파서는 단일 정규식으로 모든 은행을 처리하다 보니 분기가 누더기였음. 발신자 식별 후 은행별 파서로 라우팅하는 구조로 분리.
| 항목 | Before | After |
|---|---|---|
| 정규식 위치 | 단일 클래스 하드코딩 | 은행별 파서 분리 |
| 신규 은행 추가 | 기존 정규식 수정 → 회귀 위험 | 새 파서 추가 → 격리 |
| 테스트 | 통합 케이스만 | 은행별 단위 테스트 |
[기존] 메시지 → 거대 정규식 → 결과
[개선] 메시지 → 발신자 식별 → 은행별 파서 → 결과
알림 수집기 개선
이전엔 알림 1건당 처리 1건 구조였는데, 메신저가 묶음 푸시를 던져주는 케이스에서 뒤쪽 알림이 누락되는 버그가 있었음.
개선한 부분:
- 멀티 알림을 라인 기준으로 분할 후 개별 파싱
- 파싱 실패 메시지는 폐기하지 않고 별도 큐로 격리 (수동 재처리용)
- 동일 송금 중복 수신 방지를 위해 메시지 해시 + 수신 시각 윈도우로 디듀프
- 파서 실패율을 메트릭으로 노출 → 포맷 변경 즉시 감지
회고
은행별 메시지 포맷 차이를 얕봤다가 1차 릴리스 직후 롤백한 게 뼈아픔. 정규식 한 줄 추가는 쉬워 보이지만, 송금 알림은 한 글자만 못 잡아도 매칭 실패가 누적되고 파트너 정산이 통째로 밀림.
새 은행 붙일 때마다 가장 먼저 하는 일이 “기존 파서를 건드리지 않을 방법 찾기”가 된 게 가장 큰 수확. 다음 추가할 은행은 또 어떤 변종을 들고 올지 벌써 무서움. 다음.
댓글 0
첫 댓글 달아줘.