출금 실패 알림과 포인트 조회 오류 동시 수정
목차
출금 실패 복구에 긴급 알림 붙임
결제대행사 webhook 처리 중 출금 실패가 났을 때, 자동 복구는 돌아가는데 운영자가 모르고 지나가는 사고가 있었음. 새벽에 터지면 다음날 아침에 발견해서 정산 마감 직전에 허둥대는 패턴이 반복됨. 복구 자체보다 인지 지연이 진짜 리스크라는 걸 늦게 깨달음.
알림 분기를 단순하게 잡았음.
| 트리거 | 채널 | 멘션 |
|---|---|---|
| 출금 재시도 성공 | 운영 로그 | 없음 |
| 출금 재시도 실패 | 긴급 | @담당자 |
| 잔액 차감 불일치 | 긴급 | @담당자 |
페이로드는 이런 식으로 떨어지게 함.
[ALERT] 출금 복구 실패
파트너ID: ****
원인: 잔액 부족 (수동 보정 필요)
시도: 3/3, 다음 자동재시도 없음
성공까지 알림 보내면 채널이 도배돼서 진짜 실패가 묻힘. 그래서 성공은 조용히 로그만 쌓고 실패 + 정합성 깨짐만 사람을 부르도록 했음.
브라우저 쪽 잔불 정리
파트너 관리자에서 포인트 조회/조정할 때 가끔 화면이 뻗는 제보가 누적돼 있었음. 까보니 한 가지 원인이 아니라 셋이 겹쳐 있었음.
- 동일 세션 연속 요청에서 잔액 갱신 race
- 포인트 계산 유틸이 반올림 모드를 디폴트에 의존 → 환경따라 끝자리 1원 튀는 케이스
- 일부 브라우저가 stale 응답을 캐싱해서 조정 직후 값이 안 바뀐 것처럼 보임
유틸 쪽은 반올림 모드를 호출부에서 명시적으로 받도록 시그니처를 바꾸고, 음수 잔액이 노출될 수 없게 가드 추가. 컨트롤러 응답에는 캐시 무효화 헤더 박아서 stale 노출 차단했음. 단위 테스트로 경계값(0원, 1원, 마이너스 직전) 세 케이스 박아둠.
배운 점
- 자동 복구가 있다고 안심하면 안 됨. "복구의 실패"까지 알림 체인에 넣어야 안전망이라 부를 수 있음
- 금액 계산은 디폴트 반올림 의존 금지. 호출부에서 모드를 강제로 받게 해야 운영 환경 옮겨도 동일하게 동작함
- 화면 버그 제보는 보통 한 원인이 아니라 여러 잔불이 같은 증상으로 모이는 경우가 많음. 첫 원인 잡았다고 닫지 말고 재현 끝까지 봐야 함
알림 붙이고 나서 그 주에 바로 한 건 잡혔음. 새벽 2시에 멘션 받고 일어난 건 좀 화가 났지만, 다음날 아침에 발견했으면 더 큰일이었을 거라 결과적으론 이득.
다음
댓글 0
첫 댓글 달아줘.