Design a real-time, skill-based matchmaking service for Roblox that supports millions of daily active users across multiple regions and game modes. Players (solo or in parties) queue for a match; the system must form balanced lobbies quickly, assign them to an available game server, and handle drop-outs via backfilling. Key requirements: (1) Latency: p50 time-to-match ≤ 3 s, p95 ≤ 10 s for casual modes; p95 ≤ 30 s for ranked. (2) Fairness: minimize team MMR delta; skill window starts tight and widens with queue time. (3) Regional: prefer same-region server; allow cross-region fallback only after 4 min. (4) Party integrity: keep parties together and respect role preferences. (5) Backfill: replace leavers within seconds. (6) Scale: horizontally shardable, fault-tolerant, monitorable. Deliver high-level architecture, data models, core algorithms (skill bands, queueing, timeouts), sharding strategy, failure handling, and capacity estimates. Discuss trade-offs among latency, fairness, and cost.