System Design Interview Volume 2 (8)
실시간 게임 순위표
순위표: Leaderboard of an online mobile game
1단계: 문제 이해 및 설계 범위 확정
- 기능 요구사항
- 순위표에 상위 10명의 player 표시
- 특정 사용자의 순위 표시
- 어떤 사용자보다 4순위 위와 아래에 있는 사용자 표시
- 비기능 요구사항
- 점수 update는 실시간으로 순위표에 반영
- 일반적인 확장성, 가용성 및 안정성 요구사항
- 개략적 규모 추정
- Game을 하는 사용자가 24시간 동안 고르게 분포 가정
- DAU가 5,000,000명인 경우 초당 평균 50명 game play
- $\because\frac{5,000,000DAU}{10^5sec}\simeq50$
- 하지만 그렇게 균등한 경우는 존재하지 않고 북미 지역 기준 저녁 시간이 peak 시간대일 가능성이 높음
- 최대 부하는 평균의 5배라 가정
- $\therefore$ 초당 최대 250명의 사용자를 감당할 수 있어야 함
- 사용자 점수 획득 QPS
- 한 사용자가 하루 평균 10개 game play 가정
- $\therefore 50\times10\times5=2,500$
- 상위 10명 순위표 가져오기 QPS
- 각 사용자가 하루에 한 번 game을 열고 상위 10명 순위표는 사용자가 처음 게임을 열 때만 표시한다고 가정
- 초당 평균 50명이 game play하기 때문에 QPS는 약 50
- Game을 하는 사용자가 24시간 동안 고르게 분포 가정