STOVE DEVCAMP 3기/알림 서비스
-
[알림 서비스] 알림 서비스 구조 개선 방향 수립STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:15
💡 구조 개선 방안 상세와 이에 대한 멘토님의 피드백을 정리한 문서입니다. 📌 개선 대상 알림 생성 기능 처리 구조 📌 최종 목적 알림 서버가 재시작되거나 장애가 발생해도 생성된 알림이 유실되지 않고 Firebase에 전송되도록 함 알림 생성 API 지연응답으로 유저/트윗 서비스에 장애를 전파하지 않도록 함 Firebase에 장애가 발생하거나 Firebase 전송 오류가 발생해도 생성된 알림이 유실되지 않고 Firebase에 전송되도록 함 📌 현재 처리 구조의 문제점 및 보완할 점 파악 알림 서버가 재시작되거나 장애가 발생하여 서버가 다운되면, Firebase에 아직 전달되지 않은 알림 메시지는 유실됨 Firebase에 장애가 발생하거나 Firebase 전송 오류가 발생하면, 알림 메시지가 유실됨 알림 ..
-
[알림 서비스] 알림 서비스 구조 개선 - 대량의 알림 데이터 처리를 위한 장기적 관점의 확장 가능한 구조 설계STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:12
📌 개선 대상 현재 구조(알림 요청, 알림 전송) 동작 방식 전송할 알림 메시지를 데이터베이스에 저장하고, 스케줄러를 사용해 주기적으로 전송할 메시지를 데이터베이스에서 조회해 FCM에 알림을 전송함 📌 기존 처리 구조의 보완할 점 파악 1) 알림 요청 부분 Spring Boot에서는 Thread Pool을 사용해 다중 요청을 처리함 주의 : 다중 요청을 받을 수 있다는 의미이고, 이것이 처리량이 향상된다는 의미가 아님 서버 Scale-Out 시 처리량 향상 가능함 따라서, 알림 요청 부분은 장기적인 관점에서 대량의 알림 데이터 처리가 가능한 구조임 2) 알림 전송 부분 일정 간격으로 하나의 스케줄러가 실행되고, 한 번의 실행에서 알림을 조회하고 발송하는 작업을 순차적으로 실행하는 구조임 현재 구조에서는 ..
-
[알림 서비스] 알림 서비스 구조 개선 - 알림 전송 외부 라이브러리 의존성 분리 리팩토링STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:08
📌 개선 대상 알림 요청 처리 구조 📌 기존 처리 구조의 문제점 및 보완할 점 파악 Q. 알림 전송 수단이 추가되었을 때 확장 가능한 구조인가? 알림 요청 처리 비즈니스 로직에 알림 전송 로직이 포함되어 있어 알림 전송 외부 라이브러리와의 의존성이 높은 구조임 알림 전송 수단 추가 시 비즈니스 로직 수정 불가피함 // 알림생성API 요청을 처리하는 비즈니스 로직 @Service public class CreateNotificationService implements CreateNotificationUseCase { ... @Override public void createNotification(CreateNotificationCommand command) { saveNotification.saveAll(..
-
[알림 서비스] 알림 서비스 구조 개선 - 신뢰성 있는 알림 서비스 제공STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 03:04
💡 구조 개선 수행 내용에 대해 정리한 문서입니다. 📌 개선 대상 알림 생성 처리 구조 📌 기존 처리 구조의 문제점 및 보완할 점 파악 *기존 처리 구조 동작 방식 1) 알림 생성 API 호출 2) 알림 서비스 내부에서 알림 데이터 저장 & FCM에 알림 전송을 API 요청 처리 스레드에서 모두 수행함 *기존 처리 구조의 문제점 알림 전송 지연이 발생할 경우 알림 생성 API 지연응답으로 해당 API를 호출한 유저/트윗 서비스에 장애가 전파됨 알림 서비스가 재시작되거나 장애가 발생하여 서버가 다운되면, Firebase에 아직 전달되지 않은 알림 메시지는 유실됨 Firebase에 장애가 발생하거나 Firebase 전송 오류가 발생하면, 알림 메시지가 유실됨 📌 개선 구조 *개선 목적 알림 전송 작업으로 인..