전체 글
-
[알림 서비스] 알림 서비스 구조 개선 - 알림 전송 외부 라이브러리 의존성 분리 리팩토링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 전송 오류가 발생하면, 알림 메시지가 유실됨 📌 개선 구조 *개선 목적 알림 전송 작업으로 인..
-
[알림 서비스] 알림 서비스 데이터베이스 설계STOVE DEVCAMP 3기/알림 서비스 2023. 3. 10. 02:59
📌 선정 데이터베이스 및 이유 1) 선정 데이베이스 : MongoDB 2) 선정 이유 A. 알림 데이터가 문서 데이터베이스에 적합함 하나의 알림 객체에서 데이터를 부분적으로 사용하는 경우가 없다. 각 알림 데이터는 독립적으로, 중복되는 데이터가 없어 별도 정규화가 필요하지 않다. schema-less 구조로 유연한 스키마 대응이 가능하다. 알림 관련 스펙은 구조의 변경이 잦을 수 있음 B. TTL(time-to-live) 인덱스를 지원함 특정 일자 이후의 알림은 보이지 않게 한다면, 알림 데이터를 모두 쌓아둘 필요는 없음 C. DB 인프라 팀에서 지원함 참고 https://engineering.linecorp.com/ko/blog/LINE-integrated-notification-center-from-..
-
[MSA] 클루터 MSA 도입 과정STOVE DEVCAMP 3기/MSA 2023. 3. 10. 02:49
1) 도메인 분리 및 클라우드 환경 배포 클루터가 제공하는 핵심 기능을 중심으로 유저 / 알림 / 트윗으로 도메인을 분리함 도메인별 서버를 구성해 사내 인프라를 사용해 쿠버네티스 클러스터에 배포함 참고 https://helloworld.kurly.com/blog/ddd-msa-service-development/ 2) 이후 구조 수립 과정 A. 초기 구조 설명 API 게이트웨이(스프링 클라우드 게이트웨이), 서비스 레지스트리(유레카), Config 서버(스프링 클라우드 컨피그)와 중앙 저장소(github repository)로 구성하였음 마이크로서비스간 통신은 Feign Client를 사용한 HTTP 통신을 수행하도록 구성하였음 API 게이트웨이 도입 이유 > 기존 구조의 단점 서비스의 개수가 증가함에 ..