Most systems that fail under load were not broken - they worked perfectly for the traffic they were designed for. Scaling is the problem of anticipating the wrong number and building so the surprise doesn't destroy you. These four lessons cover the patterns engineers use to build systems that survive success: load distribution, data at scale, async processing, and the resilience designs that keep one failure from becoming a cascade.