파트너 정산 은행 도메인 누락으로 송금 인증 실패하던 문제 수정
목차
채팅 메시지 속 은행 링크를 못 찾았음
파트너 정산 채널에서 송금 인증 캡처 대신 메시지 앱 링크를 그대로 붙여넣는 케이스가 점점 늘었음. 메시지 본문에서 은행 도메인을 뽑아 송금 사실을 검증하는 로직이 있는데, CS팀에서 "특정 은행만 매번 인증 실패가 난다"는 리포트가 연달아 들어옴.
원인: 도메인 화이트리스트 노후화
은행 URL 추출기는 정규식이 아니라 명시적 도메인 리스트로 박혀 있었음. 초기에 주요 6개만 넣고 그대로 굳었던 코드. 그 사이 신규 인터넷전문은행/지방은행/증권사 종합계좌가 추가되면서 6개가 더 빠져있었음.
- 인터넷전문은행 2곳
- 지방은행 2곳
- 외은 지점 1곳
- 증권사 종합계좌 1곳
이런 분포로 누락.
정규식 vs 화이트리스트
처음엔 그냥 느슨한 정규식으로 갈아엎을까 싶었음. 근데 송금 인증은 보안이 1순위라 위험함.
| 방식 | 장점 | 단점 |
|---|---|---|
| 느슨한 정규식 | 도메인 추가 불필요 | 피싱·동음 도메인 통과 |
| 화이트리스트 | 안전함 | 신규 은행마다 코드 수정 |
결국 화이트리스트 유지, 누락된 6개만 채워넣는 핫픽스로 종결.
변경 자체는 한 줄
BANK_DOMAINS += { d1, d2, d3, d4, d5, d6 }
상수 컬렉션에 6개 더한 것뿐. 진짜 한 줄짜리 PR.
회고에서 더 크게 얻은 것
- 상수 리스트는 시간이 지나면 거짓말이 됨. 처음 짤 때 외부 기관 목록을 박아놓고 갱신 알람을 안 걸어두면 몇 년 뒤 반드시 깨짐. 외부 세계가 코드보다 빨리 바뀜.
- 문자열 매칭 실패는 예외가 아니라 그냥 "못 찾음"으로 흘러가서 에러 로그에 안 남음. 그래서 인증 실패율은 CS가 알려줄 때까지 몰랐음. 매칭 실패 카운터를 메트릭으로 발행해서 임계 넘으면 알람 가게 추가 티켓을 끊음.
- 다음에는 표준 은행 코드 테이블과 도메인 매핑을 분리해서, 신규 은행 코드 등록 시 도메인이 비어있으면 자동 알람이 가도록 구조를 바꿔야 함. 그래야 같은 종류 버그가 또 나오지 않음.
핫픽스 자체는 한 줄이지만 "조용히 실패하는 코드"를 운영 가시권으로 끌어올린 게 더 큰 수확이었음. 도메인 같은 외부 세계 데이터는 코드에 박는 순간부터 부패 시계가 돌아간다는 걸 다시 한 번 체감.
다음.
댓글 0
첫 댓글 달아줘.