This is a weird article because it points out that queues don’t solve overload but neither do load shedding or back pressure. All 3 techniques are just different trade offs on what to do in the face of overload. All 3 have negative ramifications for the users of the system. Load shedding reduces availability, back pressure increases complexity and queues increase latency. In “critical” systems you need all 3. And all…
The only real solution to overload (that is, the eventuality of the system not having enough capacity), in modern systems, is autoscaling. Nobody seems to talk about this, I guess because it's taken for granted? But you can literally just keep adding capacity now. We didn't really have that before the cloud; you had the servers you bought, and maybe you'd rush to repurpose some servers to add capacity. Now an algorit…
If you use an efficient language like C# or Go, the performance bottleneck moves to the database layer almost immediately.
Caching can be added and can auto scale, but that has a tradeoff: stale data or eventual consistency.
Databases are hard to scale because typically there has to be a single master instance responsible for write ordering and transaction consistency.
Auto scaling the database layer is fraught with its own issues, and simply doesn’t work in practice for many common scenarios.
For typical business apps, or typical web pages that might suddenly get a huge surge in usage (I.e.: Hug of death), a CDN can help… maybe.
My customers keep asking for auto scale to solve their problems, when the root cause is invariably a missing index in their database.