11장 : 뉴스 피드 시스템 설계

1단계 : 문제 이해 및 설계 범위 확정


Candidate: Is this a mobile app? Or a web app? Or both? Interviewer: Both
Candidate: What are the important features?
Interview: A user can publish a post and see her friends’ posts on the news feed page.
Candidate: Is the news feed sorted by reverse chronological order or any particular order such as topic scores? For instance, posts from your close friends have higher scores. Interviewer: To keep things simple, let us assume the feed is sorted by reverse chronological order.
Candidate: How many friends can a user have? Interviewer: 5000
Candidate: What is the traffic volume? Interviewer: 10 million DAU
Candidate: Can feed contain images, videos, or just text?
Interviewer: It can contain media files, including both images and videos.

2단계 : 개략적 설계안 제시 및 동의 구하기

  • 피드 발행 : 사용자가 스토리를 포스팅하면 해당 데이터를 캐시와 데이터베이스에 기록한다. 새 포스팅은 친구의 뉴스 피드에도 전송된다.

  • 뉴스 피드 생성 : 지면 관계상 뉴스 피드는 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다고 가정한다.

뉴스 피드 API

뉴스 피드 API 는 클라이언트가 서버와 통신하기 위해 사용하는 수단이다.

  • HTTP 프로토콜 기반

  • 상태 정보를 업데이트

  • 뉴스 피드를 가져옴

  • 친구 추가

피드 발생 API

피드 읽기 API

피드 발행

뉴스 피드 생성

3단계 : 상세 설계

피드 발행 흐름 상세 설계

  • 웹 서버

  • 포스트 팬 아웃 서비스

  • 읽기 시점에 팬아웃하는 모델

피드 읽기 흐름 상세 설계

캐시 구조

4단계 : 마무리

데이터베이스 규모 확장

  • 수직적 규모 확장 vs 수평적 규모 확장

  • SQL vs NoSQL

  • 주-부(master-slave) 다중화

  • 복제본(replica)에 대한 읽기 연산

  • 일관성 모델(consistency model)

  • 데이터베이스 샤딩(sharding)

이 외

  • 웹 계층을 무상태로 운영하기

  • 가능한 한 많은 데이터를 캐시할 방법

  • 여러 데이터 센터를 지원할 방법

  • 메시지 큐를 사용하여 컴포너늩 사이의 결합도 낮추기

  • 핵심 메트릭에 대한 모니터링. 예를 들어 트래픽이 몰리는 시간대의 QPS, 사용자가 뉴스 피드를 새로고침할 때의 지연시간 등

Last updated