🔔인사이트

시스템 디자인 면접의 핵심: 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 하이브리드
메시지 브로커
라우팅 로직
재생 버퍼

면접에서 좋은 평가를 받으려면 첫 번째 다이어그램에서 멈추지 말고, 시스템이 깨질 때까지 계속 질문하고 개선해야 합니다.