FAANG System Design Interview: Design A Chat System (WhatsApp, Facebook Messenger, Discord, Slack)
- 채팅 시스템 설계 시 핵심 기능(1:1, 그룹 채팅, 메시지 전달 보장, 오프라인 메시지 저장, 온라인 상태 표시)에 집중 💬
- HTTP(메시지 전송)와 WebSocket(메시지 수신)을 혼합하여 사용, WebSocket은 실시간 메시지 전송에 적합 📡
- 시스템은 Salus 서비스(인증, 사용자 프로필, 메시지 전송), Staple 서비스(채팅 서버), 타사 통합(푸시 알림)의 3계층으로 구성 🏛️
- 오프라인 사용자에게 메시지 전달을 보장하기 위해 각 사용자에게 메시지 저장 및 전달을 위한 개인 큐인 'Inbox 패턴'을 사용 📥
- 사용자 접속 상태를 추적하기 위해 heartbeat 사용, 서버는 주기적인 ping을 통해 사용자 온라인 상태를 확인 💓
- 채팅 서버 확장 시 연결이 병목 지점이 될 수 있으며, 데이터베이스는 Inbox 메시지로 인해 부하가 발생할 수 있음 💥
- 메시지 순서 보장, 보안 및 암호화, 미디어 처리, 읽음 확인, 입력 표시, 스팸 방지 등 추가 고려 사항 존재 🛡️
- 대규모 실시간 메시징을 처리하는 채팅 시스템의 핵심 기능 설계 방법 제시 ⚙️
데브허브 | DEVHUB | FAANG System Design Interview: Design A Chat System (WhatsApp, Facebook Messenger, Discord, Slack)