jvnlee / catch-dining

맛집 검색 및 예약 서비스
0 stars 0 forks source link

Notification Failure Handling #34

Closed jvnlee closed 5 months ago

jvnlee commented 6 months ago

개요

NotificationServicenotify()를 통한 FCM 알림 발송 시, 발송에 실패하는 상황에 대한 처리 추가

 

문제 상황

현재 notify()의 로직은 다음과 같음

1) 특정 Seat에 대한 빈 자리 알림을 신청한 User의 목록을 받아옴

2) User가 가진 FCM Token을 가지고 FirebaseMessaging 모듈에 알림 전송을 위임

→ 이 때, `firebaseMessaging.send()`에서 예외가 발생하면 `catch` 블럭에서 에러 로깅만 하고 별도의 처리를 해주지 않고 있음

빈 자리 알림은 비즈니스 요구사항의 핵심 중 하나이기 때문에, 한 번의 알림 발송 시도가 실패했다고 그대로 두게 되면 서비스에 매우 치명적임

 

개선 방안

실패 시, 특정 횟수 만큼 특정 시간 안에 재시도를 하는 방안을 고려중임

→ Spring이 제공하는 모듈인 Spring Retry를 통해 재시도 로직을 구현