데브허브 | DEVHUB | Design WhatsApp Like a Senior Engineer (System Design Interview)Design WhatsApp Like a Senior Engineer (System Design Interview)
- 메시징 앱 시스템 설계는 실시간 전송, 일관성, 확장성, 장애 복구, 다중 기기 동기화 등 복잡한 난제를 해결해야 하는 고난도 과제입니다. 🤯
- 핵심 기능 요구사항으로는 1:1 및 그룹 채팅, 오프라인 메시지 전달, 미디어 파일 첨부, 메시지 상태 추적(전송, 전달, 읽음), 사용자 온라인/오프라인 상태 표시가 필수적입니다. ✅
- 비기능 요구사항은 500ms 미만의 낮은 지연 시간, 메시지 전송 보장, 수십억 사용자 처리 가능한 높은 처리량, 효율적인 스토리지 관리, 개별 컴포넌트 장애에 대한 복원력을 포함합니다. 🚀
- 규모 추정 결과, 일일 5억 활성 사용자 기준 하루 100억 건의 메시지 전송(초당 평균 11.5만 건, 피크 시 35~50만 건)과 일일 10TB의 메시지 데이터 발생이 예상됩니다. 📈
- 초기 고수준 아키텍처는 모바일 앱, 로드 밸런서, 채팅 서버, 메시지 큐, 메시지 스토리지(NoSQL), 사용자 연결 캐시(Redis), Blob 스토리지(S3/GCS) 및 CDN, 알림 서비스, 상태 서비스로 구성됩니다. 🏗️
- 메시지 큐는 채팅 서버와 메시지 저장 및 전달을 비동기적으로 분리하여 시스템의 안정성과 장애 처리 능력을 향상시키는 데 중요한 역할을 합니다. 📨
- 대규모 쓰기 처리량과 단순한 쿼리 패턴을 위해 Cassandra나 DynamoDB와 같은 NoSQL 솔루션이 메시지 스토리지에 적합합니다. 💾
- Redis를 활용한 사용자 연결 캐시는 온라인 사용자 및 연결된 채팅 서버 정보를 마이크로초 단위로 빠르게 조회하여 라우팅 결정을 가속화합니다. ⚡
- Websocket 통신 방식은 지속적이고 양방향 통신 채널을 제공하여 실시간 메시징에 최적화되어 있으며, 폴링이나 롱 폴링 방식의 비효율성을 해결합니다. 🌐
- 서비스 디스커버리 클러스터는 동적으로 변하는 채팅 서버의 상태(시작, 종료, 건강 상태)를 로드 밸런서가 추적하고 관리할 수 있도록 돕는 핵심 컴포넌트입니다. 🧭