Stateless vs Stateful — Why Sessions Break Scaling
QuickMove stores login sessions in memory. Log in on Instance A, get routed to Instance B, and you're logged out. Move the session to Redis and any instance serves any request.
QuickMove's exact bug. Sessions live in instance memory. Send one user through a booking journey and watch the round-robin load balancer scatter them across instances. Then move the session to Redis and run it again.
request 1 of 4
⚖️ Load balancer (round-robin)
🖥️
Instance A
🖥️
Instance B
🖥️
Instance C
Request log
// send a request to begin
What just happened
▹A load balancer spreads requests across instances round-robin — the same user hits a different instance on almost every request. The app has no say in which one.
▹In-memory sessions break this instantly: only the instance that handled login knows the user. The next request lands elsewhere and the user is logged out mid-booking.
▹Move the session to a shared store (Redis) and every instance can serve any request. The app becomes stateless — and only stateless apps can scale out horizontally.