In this book, you will examine ways to architect, design, and build software—particularly distributed systems—for the muck and mire of the real world. You will prepare for the armies of illogical users who do crazy, unpredictable things. Your software will be under attack from the moment you release it. It needs to stand up to the typhoon winds of flash mobs or the crushing pressure of a DDoS attack by poorly secured IoT toaster ovens. You’ll take a hard look at software that failed the test and find ways to make sure your software survives contact with the real world.