How does your system react if a key resource fails? The database becomes unavailable or the message broker fails? What if you get a current surge of load that you have to keep up? Real life and other engineering disciplines can teach us a thing or two on software design and what it means to be reliable.
Learn useful techniques and patterns that you can borrow from other areas of engineering and see how to apply them in your systems to make it more reliable.