refactor: 디스코드 알림을 커밋 이후 비동기로 전송하도록 #851
Copy link
Copy link
Closed
Labels
Description
어떤 부분을 리팩터링하려 하나요?
디스코드 알림이 업무 트랜잭션 안에서 동기로 전송되어, 디스코드 장애가 성적 제출·멘토 신청·관리자 검수 실패로 이어집니다.
AS-IS
- 검수 요청 알림과 검수 결과 표시가 트랜잭션 안에서 동기로 호출되고, 실패하면 예외가 전파되어 롤백된다 (500)
- 디스코드 응답을 기다리는 동안 DB 커넥션을 점유한다
- 커밋 전에 전송되어 롤백된 건의 알림이 남을 수 있다 (신고 알림 포함)
TO-BE
- 커밋 이후 비동기로 전송한다
- 전송 실패는 로그만 남기고 업무 흐름에 영향을 주지 않는다
작업 상세 내용
- 알림 호출을 이벤트 발행과 커밋 이후 비동기 리스너로 전환
- 검수 요청 알림의 message id 저장을 리스너로 이동
- 검수 결과 표시가 실패해도 예외를 전파하지 않도록 변경
참고할만한 자료(선택)
- fix: 성적 승인 시 디스코드 이모지 요청 실패로 500 에러 발생 #840, fix: 디스코드 관련 성적 검수 오류 수정 #841
- 커밋 직후 서버가 죽거나 디스코드 장애가 나면 알림이 유실될 수 있음. 유실이 문제가 되면 아웃박스를 별도로 검토
Reactions are currently unavailable
Activity