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.
Context for this system design kata
Serve live sports scores to a massive audience using layered caching without overwhelming the origin. This system design kata keeps the stakes low so you can rehearse trade-offs before taking ideas into production reviews.
Scenario and practice focus
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."
Difficulty: Beginner–Intermediate. Estimated time: 20–35 min. Domain: Sports Media.
Constraints to balance
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.
Scenarios 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.
Learning outcomes
- 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.
Give it a try!