When things go wrong
In the previous section, we wrote about patterns that benefit from adverse events and unpredictability. But it is just as important to realize which patterns we should avoid, since they are fragile, prone to failure, inflexible, brittle, and temporal. In most of this book, the authors have sought to warn away from certain behaviors, structures, approaches, and implementations for these reasons. In this final section of the book, we will attempt to bring it all together into a series of steps to take to first avoid, and second to recover, from potential disasters and failures.
What to avoid
It can be beneficial to re-state the obvious at times. More experienced architects will just assume these fundamental axioms, and thus run the risk of not passing them on to more junior staff. Let’s review the basics:
- Always have a plan B. That means that you should assume that code (or networks and systems) will fail at the most inconvenient moments and...