Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 알람 서버를 구축합니다. #111

Open
kor-Chipmunk opened this issue May 18, 2024 · 0 comments
Open

feat: 알람 서버를 구축합니다. #111

kor-Chipmunk opened this issue May 18, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@kor-Chipmunk
Copy link
Collaborator

요약 (Summary)

알람 서버를 구축합니다.
이벤트가 발행되면 발행 내역을 저장하고, 발행 타입에 따라 저장소, 메일로 보냅니다.
알람 성공 여부에 따라 발행 내역에 저장합니다. 알람이 실패하면 DLQ에 적재되어 재시도합니다.

배경 (Background)

자체 알람 서버를 분리합니다.
유저에게 알람 전송 시 알림 내역에 적재되도록 합니다.
음원 업로드 처리 완료시 메일로 보내주도록 합니다.

목표 (Goals)

  • 유저 알림 내역에 적재
  • 유저 메일로 전송

목표가 아닌 것 (Non-Goals)

  • 배치를 활용한 예약 송신 : 다음 버전에서 구현

계획 (Plan)

1. 알람 이벤트 정의

유저 서버와 의존성을 줄이기 위해 원본 내용을 받아 처리하도록 함.
유저 서버와 통신이 되지 않더라도 알림을 보낼 수 있도록 구축

  • 알림 내역 적재 이벤트
    • 수신자 ID
    • 알림 내용
  • 메일 전송 이벤트
    • 수신자 이메일
    • 메일 내용

2. 카프카 이벤트 수신 모듈 개발

통합으로 이벤트를 타입별로 처리할 수 있지만,
기능별 장애가 전파되지 않도록 모듈을 분리했습니다.
기존 코드에 영향이 가지 않고 기능 확장이 수월하도록 모듈로 분리했습니다.

이벤트 처리 모듈은 이벤트 저장 내역에 저장하고 각 RabbitMQ 채널에 전파합니다. (즉시 보내기 기준)

  • 알림 이벤트 처리 모듈
  • 메일 이벤트 처리 모듈

3. RabbitMQ 수신 모듈 개발

실제 알림을 처리합니다.

  • 알림 처리 모듈 : 큐에서 받은 수신자 ID 에 해당하는 알림 내역에 알림 내용 적재
  • 메일 처리 모듈 : 큐에서 받은 수신자 이메일과 메일 내용으로 메일 전송

적재 및 전송에 실패하면 DLQ 에 적재합니다.

4. RabbitMQ DLQ 처리

설정된 Retry 횟수 (계획상 3회) 만큼 처리하고 실패한다면 알림 내역에 '실패' 로 저장합니다.

이외 고려 사항들 (Other Considerations)

No response

마일스톤 (Milestones)

.

@kor-Chipmunk kor-Chipmunk added the enhancement New feature or request label May 18, 2024
@kor-Chipmunk kor-Chipmunk self-assigned this May 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant