🔔인사이트
시스템 디자인 면접의 핵심: Push 기반 알림 시스템 설계하기
1억 명의 사용자를 위한 알림 시스템 설계 시 팬아웃 문제와 Push/Pull 하이브리드 전략
↗ 원본 링크#시스템디자인#알림시스템#WebSocket#팬아웃#면접
시스템 디자인 면접의 단골 문제
시스템 디자인 면접의 90%에서 등장하는 Push 기반 시스템 설계. 1억 명의 사용자를 위한 알림 시스템을 설계하는 문제를 풀 수 있어야 합니다.
직관적이지만 실패하는 접근법
대부분의 엔지니어가 생각하는 첫 번째 방법:
▸모든 활성 사용자에게 WebSocket 연결 유지
▸업데이트 발생 시 즉시 푸시
하지만 이 방식은 유명인이 게시물을 올리는 순간 무너집니다.
팬아웃 문제 (Fan-out Problem)
1,000만 팔로워를 가진 사용자가 게시물을 올리면:
▸1,000만 개의 연결에 동시 푸시 발생
▸메시지 브로커 포화
▸WebSocket 서버 다운
▸시스템이 가장 필요한 순간에 실패
실전 솔루션: 하이브리드 전략
Push와 Pull을 이분법적으로 생각하지 말고, 팔로워 수에 따라 전략을 선택합니다.
Push 방식 (Push Fan-out)
▸
대상: 1,000명 미만의 팔로워
▸
방식: 각 팔로워에게 즉시 알림 전송
▸
장점: 실시간 업데이트
Pull 방식 (Pull Fan-out)
▸
대상: 수백만 팔로워를 가진 계정
▸
방식: 사용자가 앱을 열 때 피드 조합
▸
장점: 서버 부하 분산
트위터가 실제로 사용하는 방식입니다.
Push 시스템의 추가 도전과제
1. 상태 유지 (Stateful Connections)
▸어떤 연결이 어떤 서버에 있는지 추적 필요
▸Redis pub/sub로 해결: WebSocket 서버가 구독, 백엔드가 발행
2. 연결 끊김 처리
3초간 네트워크가 끊기면?
▸시퀀스 ID 필요
▸메시지 버퍼 구현
▸재연결 시 누락된 이벤트 재생 로직
결론
"Push 기반" 시스템은 실제로는:
▸Push + Pull 하이브리드
▸메시지 브로커
▸라우팅 로직
▸재생 버퍼
면접에서 좋은 평가를 받으려면 첫 번째 다이어그램에서 멈추지 말고, 시스템이 깨질 때까지 계속 질문하고 개선해야 합니다.