A live football match generates data at a rate most enterprise software was never designed to handle. Every pass, tackle, shot, and throw-in is an event. Every event needs to be captured, validated, enriched, persisted, and broadcast — in under 100 milliseconds.
Why Traditional Request/Response Falls Short
Our first prototype used a conventional REST API. A referee's device would POST a match event, the server would validate it, write it to the database, and return a 200. Simple. But during peak moments — a goal followed by VAR review, substitutions, half-time — the system couldn't sustain throughput without degrading latency.
The Event-Driven Solution
We moved to an event-driven architecture powered by Apache Kafka. Match events are published to a partitioned topic with the match ID as the partition key. Three consumer groups process the stream in parallel: persistence, broadcast, and analytics.