Nodivex from TraitSpan
Beginner–Intermediate

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.

Sports Media20–35 min

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

Trade-off prompts
  • 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

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.
Ready to run
Open this kata in the simulator.

Give it a try!

Open the app