타임라인 구현 방법 2가지 (pull mode, push model)

2024. 2. 23. 15:46Project

pull mode, push model

  • 타임라인을 구현하는 방법에는 총2가지가 있다.
    • 이때, 타임라인은, 인스타그램, 페이스북, 트위터와 같은 sns의 메인 피드를 의미한다.
    • fanout : 사용자가 게시물을 작성하였을 때, 이 글을 봐야하는 모든 사람들(인스타그램의 팔로워, 페이스북 친구 등)에게 전달하는 과정
    • push model(fanout-on-write) : 쓰기 시점에 fanout하는 것을 의미한다.
      • 즉, 사용자 1명이 게시글을 적을 때마다, 자신의 팔로워 모두에게 해당 글을 전파한다.
    • pull model(fanout-on-read) : 읽기 시점에 fanout하는 것을 의미한다.
      • 게시글을 적을 때는 별 동작이 없다가, 팔로워 1명이 새로고침하는 시점에 그 사람의 피드만 갱신한다.
      • 따라서 on-demand모델이며, Lazy하다고 표현할 수 있다.

push mode(fanout-on-write)

  • 사용자 A가 새 글을 기록할 때마다 A의 친구 목록에 있는 모두에게 글이 전송된다.
  • 장점
    • 피드가 실시간으로 갱신된다.
    • 피드를 읽는데 드는 시간이 짧아진다. 새 포스팅이 기록되는 순간, 피드가 이미 수정되기 때문이다.
  • 단점
    • Hotkey problem(핫 키 문제)
      • 친구가 많은 사용자의 경우(ex: justin biber), 그 목록에 있는 모든 사람의 피드를 갱신하는데 오랜시간이 걸린다.
      • 서비스를 자주 사용하지 않는 사람의 피드까지 갱신해야하기때문에 컴퓨팅 자원이 낭비될 수 있다.

pull model(fanout-on-read)