패스잇
시스템 설계 · 심화

뉴스피드(News Feed) 시스템을 설계해주세요. (인스타그램, 트위터 등)

힌트 · Fan-out on Write vs Fan-out on Read 방식, 팔로워 수에 따른 전략 분기, 캐싱 계층을 설명해보세요.

팬아웃캐싱CQRS데이터베이스 샤딩랭킹 알고리즘

모범답안

네, 뉴스피드 시스템 설계에 대해 말씀드리겠습니다.

가장 먼저 고려할 점은 '팬아웃(Fan-out)' 방식입니다. 크게 '쓰기 시 팬아웃(Fan-out on Write)'과 '읽기 시 팬아웃(Fan-out on Read)' 두 가지 전략이 있습니다.

쓰기 시 팬아웃은 게시물을 작성할 때 팔로워들의 뉴스피드에 미리 넣어두는 방식입니다. 읽기 성능은 빠르지만, 팔로워가 많은 사용자의 경우 쓰기 성능에 부담이 될 수 있습니다.

읽기 시 팬아웃은 뉴스피드를 요청할 때 팔로잉하는 사람들의 게시물을 가져와 조합하는 방식입니다. 쓰기 성능은 좋지만, 읽기 성능이 느려질 수 있습니다.

팔로워 수에 따라 전략을 분기하는 것이 좋습니다. 팔로워가 적은 사용자는 쓰기 시 팬아웃, 많은 사용자는 읽기 시 팬아웃 방식을 적용할 수 있습니다.

캐싱 계층을 활용하여 뉴스피드 응답 속도를 높일 수 있습니다. 자주 접근하는 뉴스피드를 캐싱하여 데이터베이스 부하를 줄일 수 있습니다.

랭킹 알고리즘을 통해 사용자에게 가장 관련성 높은 게시물을 먼저 보여주는 것도 중요합니다. 시간, 좋아요 수, 댓글 수 등을 고려하여 게시물 순서를 결정할 수 있습니다.

데이터베이스 샤딩을 통해 데이터 저장 및 처리 성능을 향상시킬 수 있습니다.

CQRS 패턴을 적용하여 읽기/쓰기 모델을 분리하면 시스템 확장성과 유지보수성을 높일 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 시스템 설계 면접 질문

← 시스템 설계 면접 질문 전체 보기