Design a Global, Multi‑Game Leaderboard (Ladder) Service
You are designing a global leaderboard platform used by many different games and modes. Each game maintains its own rankings, and player standings should update immediately after a match ends.
Requirements:
-
Define APIs for:
-
Submitting match results (single or batch)
-
Fetching leaderboards (global/region/friends/mode/season)
-
Fetching a player's current rank
-
Propose a data model for players, games, matches, ratings, and leaderboards.
-
Choose a ranking algorithm (e.g., Elo, Glicko‑2, TrueSkill) and explain why.
-
Detail the write path from result ingestion to rank computation and propagation.
-
Detail the read path for low‑latency queries.
-
Propose a caching strategy.
-
Explain sharding/partitioning by game and region.
-
Discuss consistency versus latency trade‑offs for worldwide users.
-
Ensure idempotency for duplicate result submissions.
-
Outline anti‑cheat/fraud detection measures.
-
Describe backfill/recalculation flows (e.g., season reset, algorithm change, bans).
-
Provide fault tolerance and disaster recovery considerations.