Tennis Courts in South Africa
The project started with tennis courts in South Africa. Local tournaments needed a way to display live scores that everyone could see. Not just on a central board, but on phones, on screens around the court, anywhere people wanted to follow the match.
From there it grew to cover other sports. The core problem was the same regardless of the game. A point happens, the score changes, and everyone needs to see it instantly.
Why DynamoDB Was the Key
I tried other approaches first. Relational databases could handle the data but could not guarantee the latency we needed. In memory stores were fast but added complexity for persistence.
DynamoDB was the answer because it does one thing well. You ask for data by a key and you get it back in single digit milliseconds. No query optimization, no connection pooling, no read replicas. Just fast predictable access.
The single table design meant every access pattern was a simple key lookup. Get all messages in a conversation. Get all conversations for a user. Paginate by timestamp. Each query was fast because the table was designed around the queries, not around the data.
How Real Time Works
When a score happens, it goes through API Gateway to a Lambda that writes it to DynamoDB. DynamoDB Streams captures the change and triggers another Lambda. That Lambda broadcasts the update to every connected WebSocket client.
The entire pipeline from score event to spectator screen takes under a tenth of a second.
It Worked Flawlessly
The first time it ran during a real tournament, it just worked. Scores appeared on screens around the court instantly. People watching from home saw updates at the same time as people sitting courtside.
No missed updates. No duplicate points. No delays. The system scaled from a single match to multiple courts without any degradation.
What I Used
AWS API Gateway WebSocket for real time connections. Lambda for score processing and broadcast logic. DynamoDB for persistence with single table design. DynamoDB Streams for change data capture. Svelte for the spectator displays and scoring controls.
답글 남기기