11장 뉴스 피드 시스템 설계

가상면접으로 배우는 대규모 시스템 설계 기초

11장 뉴스 피드 시스템 설계

피드 발행 : 피드를 생성하면 데이터 베이스에 저장하고 새 포스팅은 친구들의 뉴스피드에도 전송 된다

뉴스 피드 생성 : 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다

팬아웃 : 어떤 사용자의 새 포스팅을 그 사용자와 친구관계에 있는 모든 사용자에게 전달하는 과정

  • 쓰기 시점 팬아웃(push 모델)

    • 장점
      • 실시간 갱신
      • 뉴스피드가 실시간 갱신되서 읽는 데 드는 시간이 짧아 진다
    • 단점
      • 친구가 많으면 뉴스피드 갱신시간이 오래 걸린다(핫키 문제)
      • 서비스를 자주 사용하지 않는 사용자까지 갱신시켜 자원이 낭비
  • 읽기 시점 팬아웃(poll 모델)

    • 장점
      • 비활성화 사용자, 서비스의 거의 로그인하지 않는 사용자에겐 이방법이 유리하다
      • 핫키 문제가 발생하지 않는다
    • 단점
      • 뉴스 피드를 읽는 데 많은 시간이 소요된다

캐시 구조

  • 뉴스피드
  • 콘텐츠
  • 소셜그래프
  • 행동
  • 횟수

데이터베이스 규모 확장

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

  • SQL vs NOSQL

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

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

  • 일관성 모델

  • 데이터베이스 샤딩

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

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

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

  • 메시지 큐를 사용해서 컴포넌트간의 결합도 낮추기

  • 핵심 메트릭에 대한 모니터링

    • QPS
    • 지연시간

참조