This is my: Horizontally Scaling Distributed System

Icon

Research & Defining

Started with a turn-based game tutorial, then self-built Docker, WebSockets, and ECS Fargate integration—drawing from various sources and a Pason Tech Lead.

Photo 1
Icon

Diagramming & Layout

Initially diagrammed the GameServer flow, then restructured the system with a SearchServer as a matchmaking layer to connect players and redirect them to available GameServers.

Photo 1
Icon

Coding & Debugging

This project exposed the limits of Error messages —debugging race conditions, ECS permissions, and Docker issues required much more hands-on problem solving with breakpoints, latency timers, CloudWatch, and manual testing.

Photo 1
Icon

Challenges & Solutions

The system architecture required rethinking early approaches. I first used a tick-rate scheduler for matchmaking but switched to an event-driven thread model after facing race conditions and high CPU usage.

Photo 1
Icon

Highlight of the project

The highlight was deploying a dynamic warm pooling system that cut matchmaking latency by 98% (20s → 0.4s). Its modular design decouples SearchServer from GameServer, enabling game logic changes without affecting matchmaking—showcasing scalable, maintainable architecture.

Photo 1

Extra Information

Visit Link