개발 slecs

파트너 정산 알림에 텔레그램 보조 채널 추가해 도달율 95%로 개선

목차

알림 채널 이중화 작업 회고

파트너 정산 알림에서 문자만으로는 도달율이 낮아서 텔레그램을 보조 채널로 붙였음. 기본은 문자, 옵션 켠 파트너만 텔레그램까지 추가로 쏘는 구조로 잡음.

왜 이중화가 필요했나

  • 문자 메시지는 스팸 필터에 걸리거나 사용자가 못 보는 경우가 잦았음
  • 일부 파트너가 "정산 알림 놓쳤다"고 반복적으로 컴플레인
  • 텔레그램은 푸시가 즉각적이고 봇 발송은 비용이 안 들어서 부담 없음

전원 강제하긴 부담스러워서 opt-in 방식으로 풀었음. 받고 싶은 사람만 봇 ID 등록.

설계 포인트

  • 기본 발송(문자)은 무조건 수행 → 누락 방지
  • 텔레그램 ID가 등록된 파트너만 추가 발송
  • 텔레그램 실패해도 문자 결과에는 영향 없게 분리
sendSms(파트너, 메시지)  // 항상 실행
if (텔레그램ID 있음) {
    try { sendTelegram(...) }
    catch (e) { 로그만 남기고 무시 }
}

삽질했던 부분

  • 봇 토큰을 코드에 박았다가 셀프 리뷰에서 잡힘. 설정 파일로 분리함
  • 메시지 본문에 _, *, . 같은 특수문자가 있으면 파싱 에러. escape 함수 따로 만들었음
  • 굳이 마크다운 모드 안 쓰고 일반 텍스트로 보내는 게 유지보수가 편했음. 꾸미려다 에러만 늘어남
  • 정산용 SQL에서 알림 대상 추출할 때 텔레그램 ID NULL 조건 누락해서 빈 문자열로 호출되던 버그도 잡음

결과

항목 이전 이후
알림 도달 확인율 약 60% 약 95%
정산 누락 문의 주 3~5건 주 0~1건
추가 운영 비용 - 0원 (봇 무료)

배운 점

  • 알림은 "기본 채널 + 보조 채널" 패턴이 안전함. 한 채널 의존하면 사각지대 무조건 생김
  • 보조 채널 실패가 본 채널 발송을 막으면 안 됨. 장애 격리 필수
  • opt-in 이어야 사용자 거부감이 적음. 강제하면 컴플레인 방향만 바뀜
  • 외부 API는 무조건 try/catch 로 감싸고, 실패 시 로그만 남기는 fire-and-forget 패턴이 정신건강에 좋음

다음

다음엔 알림톡까지 붙여서 3중 채널로 갈지 검토 중. 단 알림톡은 템플릿 심사·건당 비용이 있어서 ROI 먼저 따져봐야 함. 그리고 발송 이력 테이블 만들어서 어느 채널로 언제 갔는지 추적도 붙일 예정.

다음

댓글 0

첫 댓글 달아줘.