시스템 디자인 아틀라스학습 문서 / 집계 시스템 / Chapter 25전체 로드맵
CASE · INTERMEDIATE읽기 24분검토일 2026-08-23VERSIONED RANK

실시간 게임
리더보드 설계

순위는 숫자 하나가 아닙니다. server-authoritative score event를 멱등·sequence 경계로 적용하고, Top N·내 주변 rank는 빠른 파생 모델로 읽으며, 부정행위 조정과 시즌 보상은 버전이 있는 원장으로 재현합니다.

순위 모델점수 입력면접 질문장애 대응진도 저장
30초 핵심 요약

점수 이벤트는 `score_event_id`와 player sequence로 한 번만 적용합니다. sorted rank read model은 빠른 Top N·rank·around-me를 제공하지만 정본이 아니며, hot board는 shard의 local Top M을 merge합니다. 시즌은 새 version pointer로 전환하고 correction·reward snapshot은 삭제하지 않습니다.

INPUTevent id + player sequence
READTop N · rank · around-me
TRUTHseason version + adjustment
01 · REQUIREMENTS

빠른 순위와 재현 가능한 경쟁 결과를 함께 만든다

# 요구사항

검색 캐시가 최종 예약 권한이 아니듯, rank cache도 보상·분쟁의 정본이 아닙니다. 실시간 화면의 freshness와 시즌 보상의 정확성을 다른 경로와 상태로 설계합니다.

IN권한 있는 점수

match authority만 score event를 제출하고, client 누적 점수는 최종 정본이 아닙니다.

RANKTop N·내 주변

Top N, 내 rank, 내 주변 K명을 board version과 freshness로 반환합니다.

TIE결정적 동점

score 뒤 first-reached time과 player id로 재현 가능한 tie-breaker를 둡니다.

SEASON버전과 보상

reset pointer, immutable snapshot, correction을 분리해 winner를 재현합니다.

02 · ARCHITECTURE

이벤트 원장과 빠른 rank 모델의 책임을 분리한다

# 고수준 아키텍처
점수 수집에서 시즌 보상까지score event → state → rank shard → merge/cache → snapshot
실시간 게임 리더보드 아키텍처게임 서버의 점수 이벤트가 ingest gateway와 내구 event log를 거쳐 sequence와 idempotency 처리기로 들어간다. anti-cheat 판정과 player score state가 shard rank writer에 전달되고, shard sorted rank model의 local Top M을 merger와 cache가 합쳐 read API에 제공한다. reconciliation이 시즌 snapshot과 보상을 검증한다.Game servermatch authorityscore_event_idIngest + event logidentity · replay · durableseason · rulesetScore statesequence · tie keyanti-cheatRead APITop N · around-meversion · freshnessShard rank writerssorted rank model · revisionSeason snapshotreconcile · rewardsorted rank은 빠른 projection이고, winner의 정본은 versioned event·state·snapshot이다.
표시 계약 · read API는 `board_version`, `computed_at`, `freshness_seconds`를 반환합니다. Top N cache와 글로벌 merge가 늦으면 last-known-good 여부를 표시하고, reward는 승인된 snapshot 밖의 잠정 rank로 지급하지 않습니다.
03 · SCORE FLOW

점수를 한 번 적용하고, 순위는 버전과 함께 읽는다

# 요청 흐름
1Authorize

match authority가 event id·sequence·ruleset을 만들고 workload identity로 제출합니다.

2Accept

gateway가 hash·season·match를 검사한 뒤 durable event log에 수락합니다.

3Apply once

state가 duplicate·stale sequence를 판별하고 score와 tie key를 원자 전진합니다.

4Rank shards

유효 score를 shard rank revision으로 반영하고 local Top M을 냅니다.

5Read + reconcile

merge/cache가 Top N과 around-me를 제공하고 snapshot job이 winner를 대조합니다.

04 · TRADEOFFS

실시간 rank의 단순함과 hot board 확장성을 비교한다

# 대안 비교
선택강점주의점적합한 경우
단일 sorted setTop N·rank·around-me가 단순hot key와 memory/CPU 한계작은 board·낮은 update
player-hash shardwrite 분산과 격리global rank·Top N merge 필요대형 이벤트·다지역
local Top M mergeglobal Top N read fan-out 절감M 경계·shard 누락·staleness 운영Top N 화면 중심
rank-on-read최신 rank를 계산 가능hot player 조회 비용 증가낮은 read 또는 admin 조사
materialized around-me모바일 화면이 빠름score 변동 invalidation 비용refresh 주기가 고정된 UX
async fraud adjustment수집 경로 지연·조사 격리잠정 rank·correction을 설명해야 함복잡한 anti-cheat
05 · FAILURE MODES

점수, shard, cache, 시즌의 실패를 따로 복구한다

# 장애 시나리오 8개
score retry·duplicate

network 재전송이 같은 점수를 여러 번 올려 rank를 왜곡합니다.

대응 · event id/hash unique와 state conservation; duplicate 억제율을 확인합니다.
역순 sequence

늦은 이벤트가 이미 반영된 최신 score를 되돌리려 합니다.

대응 · conditional last sequence와 stale event audit; player replay를 대조합니다.
!hot shard 포화

이벤트 종료·influencer stream이 한 board shard의 P99와 lag를 올립니다.

대응 · salting/region split와 local Top M; key skew와 backlog drain을 검증합니다.
×merger shard 누락

global Top N이 한 shard의 revision을 빼고 계산됩니다.

대응 · revision gap 검출, last-known-good 표시, scoped rebuild를 실행합니다.
cache stale

종료된 시즌 또는 오래된 rank가 화면에 남습니다.

대응 · versioned key·pointer rollback; `freshness_seconds`와 mismatch를 봅니다.
?anti-cheat 오배포

정상 유저가 제외되거나 cheater가 대량 노출됩니다.

대응 · canary·kill switch·rule version rollback; adjustment 계보를 샘플 감사합니다.
season pointer 조기 전환

화면 보드와 보상 cutoff가 서로 다른 version을 가리킵니다.

대응 · freeze→snapshot→approve→swap runbook; winner hash를 재현합니다.
privacy revoke 지연

친구 보드에 비공개 프로필이 cache된 채 남습니다.

대응 · consent token invalidate와 graph/cache purge; forbidden read 0건을 검증합니다.
06 · OPERATIONS

순위의 신선도, 공정성, 비용을 한 화면에서 본다

# 운영 관점
보안·개인정보

game server identity, match ownership, nonce·sequence 검증을 적용합니다. public profile projection만 rank model에 두고 IP·fingerprint·support note를 trace와 cache에서 배제합니다.

identity · consent · audit
관측 가능성

accepted/rejected, duplicate/stale sequence, shard queue age, revision gap, Top N freshness, tie diff, pending invalid rate, snapshot hash를 version별로 봅니다.

event → state → rank
비용 모델

active member·tie key·replica·mutation rate, merge fan-out, friend join, event/archive, anti-cheat inference, season rebuild·support를 따로 계산합니다.

hot board × refresh × retention
면접 모드 · 추가 질문06:00
“시즌 마지막 10분에 수백만 플레이어가 동시에 score update를 보내고 Top 100·내 주변 순위를 10초마다 갱신합니다. duplicate·역순 이벤트, hot board, 동점, anti-cheat correction, season reward cutoff를 어떤 정본·version·shard·복구 지표로 설명하겠습니까?”
event id + sequencesorted rank modeldeterministic tielocal Top M mergeboard versionadjustment ledgerreward snapshot
PRIMARY SOURCES

순위 자료구조와 서비스 계약은 공식 문서에서 확인한다

CONNECTED TOPIC결제 시스템에서 멱등성과 원장을 적용하기
EDITORIAL NOTES

작성·검토·참고 자료

콘텐츠 원칙
이 문서는 독립적으로 재작성한 한국어 학습 자료입니다. 사실과 학습용 설계 가정을 구분합니다.
최종 검토
예상 학습 시간
24분

참고 자료

사실 오류·출처 정정은 문의·정정 페이지로 알려 주세요.