알림 시스템 설계 시 구체화 해야 하는 명세들
1. 알림의 종류 : 모바일 앱 푸시 / SMS / 이메일 → 알림의 종류별로 각기 다른 제3자 알림서비스를 사용해야 한다.
2. 알림별 처리량(Throughput) : 1일 알림 건수 등 → 리소스 용량을 계획하는데 사용된다.
3. 알림 실패 시 대응 정책 : 알림 실패시 재시도를 위한 장치가 필요하다.
4. 보안 수준 : 알림 발행 단계에서 보안을 위해 인증을 추가해야 한다.
알림 시스템의 구성
1. 알림 발행을 위한 API
2. 보안을 위한 인증 서비스
3. 알림 내용 생성하기 위한 데이터베이스 및 캐시
4. 메시지 큐
5. 메시지를 읽고 알림서비스를 호출하는 알림 서버
6. 실패 시 재시도 및 중복 방지를 위한 알림 로그
7. 제3자 알림 서비스
메시지 큐 설계
1. Kafka vs MQ : 다중화된 작업 서버(그림에서 서버B)중 하나만 메시지를 읽으면 되기 때문에 대용량 스트림을 브로드캐스팅 하는데 특화된 Kafka 대신 MQ를 채택한다.
2. 알림 종류별로 큐를 다르게 쓸 필요는 없다. 작업 서버 내부 로직으로 처리하고, 큐와 작업 서버를 스케일 아웃하는데
참고자료
- 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」 2021, 알렉스 쉬
- reddit - Is it appropriate to use Kafka as a Message queue?
- AWS - Kafka와 RabbitMQ의 차이점은 무엇인가요?
'시스템 디자인' 카테고리의 다른 글
분산 환경 ID 생성기 설계 (0) | 2025.03.26 |
---|---|
TAO, Facebook의 분산 Social Graph (0) | 2025.03.19 |
SNS 피드 시스템 설계하기 (1) | 2025.03.14 |
캐시 적중률(Cache hit ratio)과 캐시 적중률 높이는 법 (1) | 2025.02.28 |
뉴스 사이트와 캐시 교체 알고리즘(Cache Eviction Algorithm) (0) | 2025.02.27 |