Design Reddit - 커뮤니티 플랫폼을 단순 게시판으로 설계하면 왜 시스템 디자인 면접에서 탈락하는가
Reddit 서비스의 시스템을 디자인 해보도록 합니다.
Reddit이란?
미국의 Reddit은 소셜 콘텐츠 평가, 토론 플랫폼입니다.
사용자들이 관심 주제별로 서브레딧(subreddit)이라는 커뮤니티를 만들고, 텍스트,링크,이미지, 비디오 포스트를 공유하며, 다른 사용자들이 그 콘텐츠에 업보트(upvote) 또는 다운 보트(downvote)를 통해 평가합니다. 투표 점수와 시간에 따라 콘텐츠가 정렬되어 상단에 노출되며, 사용자들은 포스트 아래에 중첩된 댓글 트리를 통해 깊이 있는 토론을 벌입니다.
2005년에 설립된 Reddit은 현재 월간 활성 사용자 5억 명 이상, 일일 활성 사용자 약 1억 명 규모로 성장했으며, 뉴스, 밈, 취미, 전문 지식 등 거의 모든 주제를 다루는 수백만 개의 서브레딧이 존재합니다.
Functional Requirements - 기능적 요구사항
회원가입, 로그인, 프로필 관리와 같은 사용자 관리가 가능해야함.
서브레딧 생성/가입, 기본적인 모더레이션 기능이 요구됨.
포스트 제출(텍스트, 링크, 이미지), 포스트/댓글에 대한 중첩 댓글 작성 가능해야함.
포스트와 댓글에 업보트/다운 보트
프론트 페이지(개인화 또는 기본), 서브레딧 피드, 사용자별 피드
여러 정렬 알고리즘 지원 - hot, new, top, rising, controversial
포스트/서브레딧 기본 검색(고급 전체 텍스트 검색은 제외)
기본적인 투표/댓글 멘션 알림(실시간 상세 알림은 단순화)
Out of Scope - 범위 제외
Out of Scope 는 앞서 언급했듯이, 서비스 MVP 기능 밖의 범위로 판단될 경우 이 섹션에 해당합니다.
실시간 채팅/메시징
고급 모더레이션 도구(automod 규칙, 밴 항소 등)
광고 제공 및 타겟팅
모바일 푸시 알림 인프라
모더레이터용 분석 대시보드
관련도 랭킹을 포함한 전체 텍스트 검색
Non-Functional Requirements
DAU 약 1억 명, 수십억 포스트/댓글, 동시 수백만 요청 피크 트래픽 지원
피드 로딩, 포스트 제출 low-latency 낮은 지연
투표 반영 eventual consistency 최종 일관성을 허용함.
High Availability 고가용성 지원


