The Quest Begins (The "Why")

I still remember the night our API started to cough. A flash sale lit up traffic, and suddenly every request was hammering the primary database. Our first instinct? Slap a tiny in‑process map behind each service and call it a day. The hit‑rate looked great on a single node, but as soon as we scaled out we saw two nasty symptoms:

Stale data – each node had its own copy, so updates on one host were invisible to the others.

Hot‑spot meltdown – a few popular keys lived on the same few instances, causing those nodes to melt while the rest twiddled their thumbs.

We felt like we were trying to dodge Agent Smith in a hallway with a broom – we could swing, but we were never really in control. The problem wasn’t that caching was hard; it was that we were treating a distributed problem like a local one. Time to level up.