피드로 돌아가기
Dev.toBackend
원문 읽기
1M+ 유저 대상 중복 없는 메시지 전송을 위한 고가용성 Notification 아키텍처 설계
Designing a Reliable Notification System for 1M+ Users (Push, SMS, Email)
AI 요약
Context
API 요청 사이클 내의 동기적 알림 전송으로 인한 외부 Provider 의존성 및 트래픽 스파이크 시 시스템 전체 장애 위험 존재. 대규모 유저 환경에서 메시지 유실 방지와 중복 전송 억제를 통한 서비스 신뢰성 확보가 필수적인 상황.
Technical Solution
- API 서버와 전송 로직을 분리하여 트래픽 스파이크를 흡수하는 Queue-Based Asynchronous Architecture 도입
- Network Timeout으로 인한 중복 전송 방지를 위해 user_id, notification_type, idempotency_key 기반의 Idempotency Store 구축
- 단일 Provider 장애에 대응하여 Primary 실패 시 자동으로 대체 경로를 타는 Provider Routing 및 Fallback 메커니즘 설계
- 외부 시스템 부하 가중을 방지하고 복구 시간을 확보하기 위한 Exponential Backoff 기반의 Retry 전략 적용
- 처리 불가능한 메시지를 격리하여 엔지니어 분석을 가능케 하는 Dead Letter Queue(DLQ) 운영
- Provider의 'Accepted' 응답과 실제 도달 여부 간의 간극을 메우기 위한 Reconciliation Job 구현
실천 포인트
- 외부 API 호출 시 반드시 비동기 Queue를 배치하여 애플리케이션 가용성 확보 - 분산 환경의 Retry 로직 설계 시 DB 제약 조건을 활용한 Idempotency Key 검증 단계 추가 - Provider 장애를 상수로 가정하고 최소 1개 이상의 Fallback Provider 및 라우팅 로직 구성 - 무분별한 재시도 방지를 위해 지수적 백오프 적용 및 최종 실패 건의 DLQ 격리 프로세스 수립 - Staging 환경에서 Chaos Testing을 통해 Failover 및 복구 시나리오 검증