피드로 돌아가기
Real-Time Notification Systems Are Harder Than Most Teams Expect
Dev.toDev.to
Backend

Delivery Semantics 중심의 분산 메시징 기반 알림 시스템 설계

Real-Time Notification Systems Are Harder Than Most Teams Expect

Damir Karimov2026년 6월 9일6advanced

Context

단순 WebSocket 전송 방식은 대규모 트래픽 발생 시 재연결, 순서 보장, 중복 전송 문제를 해결하지 못하는 한계 존재. 전송 수단보다 Delivery Semantics의 부재로 인한 데이터 불일치와 사용자 신뢰도 하락이 핵심 병목 지점으로 작용.

Technical Solution

  • At-least-once delivery 환경에서 발생하는 중복 전송 해결을 위해 Idempotency Key와 Redis 기반 Deduplication Storage 도입
  • 전체 Global Ordering의 비용 문제를 해결하고자 User Sharding 기반의 Sequence Number를 통한 Per-user Ordering 구조 설계
  • Mobile 환경의 불안정한 네트워크 상태를 극복하기 위해 WebSocket, APNs/FCM, Durable State 기반의 Hybrid Push 전략 채택
  • Fan-out으로 인한 Queue Amplification 및 Retry Cascade 방지를 위해 Traffic Shaping 및 Consumer Side Protection 로직 적용
  • 시스템 복구력 확보를 위해 Durable Cursor와 Replay Support를 포함한 이벤트 기반 아키텍처로 전환

1. 비즈니스 중요도에 따라 At-most-once, At-least-once, Effectively-once 중 적절한 Semantics를 먼저 결정했는가?

2. 모든 Side Effect 발생 전 Idempotency Key를 통한 중복 체크 로직이 구현되었는가?

3. 사용자별 순서 보장을 위해 Sequence Number와 Partition Key(User ID)를 일치시켰는가?

4. APNs/FCM의 불안정성을 보완할 서버 사이드 Durable State 및 Sync Checkpoint가 존재하는가?

5. 단순 Happy Path가 아닌 Kafka Rebalance, Consumer Crash 등 Failure Mode에 대한 테스트를 수행했는가?

원문 읽기