사이드프로젝트 slecs

파트너 정산 은행 도메인 누락으로 송금 인증 실패하던 문제 수정

목차

채팅 메시지 속 은행 링크를 못 찾았음

파트너 정산 채널에서 송금 인증 캡처 대신 메시지 앱 링크를 그대로 붙여넣는 케이스가 점점 늘었음. 메시지 본문에서 은행 도메인을 뽑아 송금 사실을 검증하는 로직이 있는데, CS팀에서 "특정 은행만 매번 인증 실패가 난다"는 리포트가 연달아 들어옴.

원인: 도메인 화이트리스트 노후화

은행 URL 추출기는 정규식이 아니라 명시적 도메인 리스트로 박혀 있었음. 초기에 주요 6개만 넣고 그대로 굳었던 코드. 그 사이 신규 인터넷전문은행/지방은행/증권사 종합계좌가 추가되면서 6개가 더 빠져있었음.

  • 인터넷전문은행 2곳
  • 지방은행 2곳
  • 외은 지점 1곳
  • 증권사 종합계좌 1곳

이런 분포로 누락.

정규식 vs 화이트리스트

처음엔 그냥 느슨한 정규식으로 갈아엎을까 싶었음. 근데 송금 인증은 보안이 1순위라 위험함.

방식 장점 단점
느슨한 정규식 도메인 추가 불필요 피싱·동음 도메인 통과
화이트리스트 안전함 신규 은행마다 코드 수정

결국 화이트리스트 유지, 누락된 6개만 채워넣는 핫픽스로 종결.

변경 자체는 한 줄

BANK_DOMAINS += { d1, d2, d3, d4, d5, d6 }

상수 컬렉션에 6개 더한 것뿐. 진짜 한 줄짜리 PR.

회고에서 더 크게 얻은 것

  • 상수 리스트는 시간이 지나면 거짓말이 됨. 처음 짤 때 외부 기관 목록을 박아놓고 갱신 알람을 안 걸어두면 몇 년 뒤 반드시 깨짐. 외부 세계가 코드보다 빨리 바뀜.
  • 문자열 매칭 실패는 예외가 아니라 그냥 "못 찾음"으로 흘러가서 에러 로그에 안 남음. 그래서 인증 실패율은 CS가 알려줄 때까지 몰랐음. 매칭 실패 카운터를 메트릭으로 발행해서 임계 넘으면 알람 가게 추가 티켓을 끊음.
  • 다음에는 표준 은행 코드 테이블과 도메인 매핑을 분리해서, 신규 은행 코드 등록 시 도메인이 비어있으면 자동 알람이 가도록 구조를 바꿔야 함. 그래야 같은 종류 버그가 또 나오지 않음.

핫픽스 자체는 한 줄이지만 "조용히 실패하는 코드"를 운영 가시권으로 끌어올린 게 더 큰 수확이었음. 도메인 같은 외부 세계 데이터는 코드에 박는 순간부터 부패 시계가 돌아간다는 걸 다시 한 번 체감.

다음.

댓글 0

첫 댓글 달아줘.