본문 바로가기

카테고리 없음

System Design [ 공부 : Twitch System Design 분석]

반응형

1. 트위치란?

  • 실시간 게임 및 IRL(일상) 스트리밍 플랫폼.
  • 사용자는 방송 송출, 시청, 채팅 참여 가능.
  • 전 세계적으로 수천만 명이 실시간으로 콘텐츠를 소비.

2. 트래픽 특성

  • 세계 최대 규모의 라이브 비디오 배포 시스템: 동시 시청자 수가 매우 많음.
  • 이벤트 중심의 트래픽 폭증 현상 발생.
    • 2022년 롤드컵 기준 최고조에 달했을 때 최대 510만명 동시 시청
  • 트래픽이 단시간 내 급변하는 특성 (버스트 현상).
  • 실시간 채팅 시스템
    • 하루에 100억 개 이상의 메시지를 전달

3. 라이브 스트리밍 방식

  • 스트리머 송출 -> 인코딩 서버[데이터 센터(Ingest) → 인코딩(Transcode) → 복사(Repication)] → 분산 전송(Edge; CDN) -> 시청자의 재생.
  • 주로 HLS와 같은 HTTP 기반 스트리밍 프로토콜 사용.
  • Adaptive Bitrate Streaming:
    • 시청자의 네트워크 환경에 따라 실시간으로 화질 전환.
    • 끊김 없는 사용자 경험 제공.

출처 : https://blog.twitch.tv/en/2022/04/26/ingesting-live-video-streams-at-global-scale/

4. 시스템 아키텍처 개요

  • 송출 서버 → 인코딩 서버 → CDN → 사용자.
  • 글로벌 CDN을 통한 스트림 캐싱 및 분산 전송.
  • 엣지 서버: 사용자와 가까운 위치에서 스트림 제공.
  • 인코딩 서버: 다양한 해상도 및 비트레이트로 변환.
    • FFmpeg와 비슷한 TwitchTranscoder 개발
  • Storage 시스템: 방송 후 VOD 저장 처리.

5. 실시간 채팅 시스템

  • Go로 작성
  • Twitch 채팅 시스템은 IRC(Internet Relay Chat) 기반 프로토콜 지원
  • 핵심 구성요소
    • Edge: 클라이언트와 백엔드 서비스 간에 메시지를 수신하고 배포. 원시 TCP와 웹소켓을 모두 사용하여 IRC 프로토콜을 사용.
    • Pubsub: Edge 노드 전반에 메시지를 내부적으로 배포, Pubsub과 Edge는 결합하여 대규모 팬아웃을 실행하는 계층적 메시지 배포 시스템을 형성
    • Clue: 사용자 행동을 분석하여 비즈니스 로직 파이프라인을 통해 전달합니다. 데이터베이스, 내부 API, 캐시 등 다양한 소스에서 데이터를 수집.
    • Room: 시청자 목록을 담당, Room은 모든 채널의 채팅방 시청자 목록을 검색하기 위해 모든 edge에서 멤버십 데이터를 집계, 저장 및 쿼리.

6. 확장성과 안정성

  • 글로벌 CDN → 엣지 캐시 활용으로 전 세계 커버리지.
  • Auto Scaling을 통한 트래픽 변화 대응.
  • 마이크로서비스 기반 구조로 서비스 단위 독립적 확장.
  • 장애 복구: 다중 데이터센터, 로드밸런서, 페일오버 구조.

7. 기술적 과제

  • 낮은 지연 시간 보장 (Low Latency Streaming).
  • 대규모 동시 접속 처리.
  • 실시간 채팅과 스트리밍의 데이터 일관성 유지.
  • 스트리밍 품질 보장 (Adaptive Bitrate + Buffer 최적화).

참고 자료