The multi-writer
Manage four competing actors writing to a shared database without contention degrading any single channel.
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
Manage four competing actors writing to a shared database without contention degrading any single channel. This system design kata keeps the stakes low so you can rehearse trade-offs before taking ideas into production reviews.
Scenario and practice focus
RouteHound has four actors all writing to the same fleet database: drivers sending location updates (high frequency, fire-and-forget), dispatchers sending route assignments (lower frequency, needs confirmation), warehouse terminals recording loading events (medium frequency, needs acknowledgement), and the operations dashboard reading everything. The combined write load from three actors exceeds what a single database can handle at peak. The user must decide which writes need synchronous confirmation and which can be buffered via queues, how to isolate the read path for the dashboard, and how to size components so no single actor's spike breaks another's SLA.
Difficulty: Advanced. Estimated time: 35–45 min. Domain: Logistics.
Constraints to balance
Operational pressure
- No manual load balancing between actor channels.
- Driver location updates are fire-and-forget - async acknowledgement is fine.
- Dispatch route assignments need synchronous confirmation.
Customer and product constraints
- Warehouse events need acknowledgement but can tolerate queue wait.
- Four actors means four cost lines - the total must make sense.
Scenarios to explore in the simulator
- Keep all four actor channels operational during peak shift.
- Prevent one actor's traffic spike from degrading another's latency.
- Keep the operations dashboard responsive for real-time decision-making.
- Maintain write reliability - lost location updates mean lost trust.
- Control costs across a 4-actor platform.
Learning outcomes
- Diagnose write contention from per-actor utilization metrics.
- Use async buffering (queues) for high-frequency, low-priority writes.
- Isolate read paths from write paths using replicas.
- Size components per-actor rather than per-system.
- Understand that combined actor load on shared components compounds utilization.
Give it a try!