Match day scores
Serve live sports scores to a massive audience using layered caching without overwhelming the origin.
Kata overview
You do not need to be an expert to start. This kata keeps the stakes low so you can explore trade-offs, adjust the diagram, and see how the system responds.
What this system design kata asks of you
A high-profile match kicks off and fans flood the platform. Everyone is requesting the same data - the current score - but that score only changes when a goal is scored, roughly every 15–20 minutes. Between goals, every request returns identical content. When a goal IS scored, the score updates and fans refresh aggressively. The platform must serve millions of identical reads cheaply while ensuring updates propagate within a few seconds. The team's mantra after the outage: "Cache everything, invalidate intentionally, never let a fan talk to the database."
Operational pressure
- No human in the data path.
- Score data is identical for all fans viewing the same match.
Customer and product constraints
- Updates are infrequent (goals, cards) but must reach users.
- Cost per fan served matters - don't brute-force with oversized instances.
Match day scores
Sports Media · 20–35 min
Trade-offs to explore in the simulator
- Serve score pages within tight latency during peak viewership.
- Absorb traffic spikes when goals are scored without origin overload.
- Keep cost per fan served as low as possible.
- Score updates must reach users within a few seconds of a match event.
What you will learn
- Configure CDN cache hit ratio based on content change frequency.
- Understand that CDN is load shedding, not just latency improvement.
- Calculate origin load as a function of CDN miss rate and total traffic.
- Design a read path where the database never sees fan traffic directly.
Open Match day scores in the simulator
Sketch your first design, run the traffic and see what the review says. No signup required.