군만두의 IT 공부 일지

[스터디9] 03. 뉴스 피드 시스템 설계 - 실습1 본문

프로그래밍

[스터디9] 03. 뉴스 피드 시스템 설계 - 실습1

mandus 2025. 6. 27. 11:08

3장에 나온 것처럼 "시스템 설계 면접"을 대비해서 "뉴스 피드 시스템" 아키텍처에 대해 대략적으로 설계해서 발표/토의하기로 했다.

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

  • 모바일 앱과 웹 앱 둘 다 지원해야 한다.
  • 가장 중요한 기능은 새로운 포스트(post)를 올리고, 다른 친구의 뉴스 피드를 볼 수 있도록 하는 기능이다.
  • 문제를 단순하게 만들기 위해, 뉴스 피드는 시간 역순으로 정렬된다고 가정한다.
  • 한 사용자는 최대 5000명의 사용자와 친구를 맺을 수 있다.
  • 사이트로 오는 트래픽 규모(일간 능동 사용자, DAU)는 천만 명이다.
  • 피드에 이미지나 비디오 같은 미디어 파일도 포스트할 수 있어야 한다.

요약하면 "페이스북이나 인스타그램 같은 SNS의 핵심 기능을 1,000만 명 DAU 규모로 설계하는 것"이다.

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

종이에 핵심 컴포넌트를 포함하는 다이어그램을 그린다. 클라이언트(모바일/웹), API, 웹 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 같은 것들이 포함된다.

 

- 피드 발행(feed publishing): 사용자가 포스트를 올리면 관련된 데이터가 캐시/데이터베이스에 기록되고, 해당 사용자의 친구(friend) 뉴스 피드에 뜨게 된다.
- 피드 생성(feed building): 어떤 사용자의 뉴스 피드는 해당 사용자 친구들의 포스트를 시간 역순으로(최신 포스트부터 오래된 포스트 순으로) 정렬하여 만든다.

 

책에서 나온 플로(flow)에 추가로 정리하면 위 내용과 더불어 포스트 관리, 피드 관리, 사용자 관리 등을 고려할 수 있을 것 같다. MSA로 설계했다.

  • 뉴스 피드: 사용자가 팔로우하는 계정이나 페이지의 새로운 게시물, 콘텐츠 업데이트 등을 시간 순서대로 보여주는 공간

▲ 뉴스 피드 시스템 아키텍처

모바일/웹 클라이언트

  • 사용자 인터페이스 제공
  • 기능: 포스트 작성, 피드 조회, 미디어 업로드

로드 밸런서

  • 기능: 헬스 체크, 세션 유지, SSL 종료

API 게이트웨이

  • 기능:
    • JWT 토큰 검증
    • Rate Limiting (사용자당 초당 100 요청)
    • 요청 라우팅 및 로깅

포스트 서비스

  • 책임: 포스트 생성, 수정, 삭제, 조회
  • POST /api/v1/posts
  • GET /api/v1/posts/{postId}

피드 서비스

  • 책임: 사용자별 개인화된 피드 제공
  • GET /api/v1/feed?page=1&size=20

사용자 서비스

  • 책임: 사용자 정보 및 친구 관계 관리
  • POST /api/v1/users/{userId}/friends
  • GET /api/v1/users/{userId}

+) 비동기 처리 → 메시지 큐, 피드 생성 워커

++) 대규모 트래픽 처리, 캐싱 등에 대해 고려하면 좋을 것 같다.

 

2단계까지는 진행했는데, 책을 참고해도 잘 하고 있는지 모르겠다. 다음 게시글에서는 3단계를 이어서 진행할 예정이다.

 

이 글은 『 가상 면접 사례로 배우는 대규모 시스템 설계 기초』 책을 학습한 내용을 정리한 것입니다.
Comments