Day 1: the big picture. Day 2: databases. Day 3: caching. Day 4: load balancing, and how the load balancer itself becomes a new single point of failure. Today: message queues and asynchronous processing — a topic that quietly reframed how I think about "handling a request."

The Assumption I Didn't Know I Had

Up until today, my mental model of a system was: request comes in, server does the work, response goes out, all in one continuous chain. Synchronous, start to finish.

Today's lesson was basically: that assumption breaks down the moment any part of the work is slow, unreliable, or doesn't need to happen right now. Sending a confirmation email, resizing an uploaded image, generating a report, notifying a third-party service — none of that needs to block the response the user is waiting on.

What a Message Queue Actually Does