Laws of software architecture:
- Everything in software architecture is a trade-off. If an architect thinks they have discovered something that isn’t a trade-off, more likely they just haven’t identified the trade-off yet.
- Why is more important than how.
On reuse:
While reuse is beneficial, remember the First Law of Software Architecture regarding trade-offs. The negative trade-off of reuse is coupling. When an architect designs a system that favors reuse, they also favor coupling to achieve that reuse, either by inheritance or composition.
However, if the architect’s goal requires high degrees of decoupling, then they favor duplication over reuse. The primary goal of microservices is high decoupling, physically modeling the logical notion of bounded context.
Architecture Decision Anti-Patterns:
This anti-pattern occurs when an architect avoids or defers making an architecture decision out of fear of making the wrong choice.
The Groundhog Day anti-pattern occurs when people don’t know why a decision was made, so it keeps getting discussed over and over and over.
The Email-Driven Architecture anti-pattern is where people lose, forget, or don’t even know an architecture decision has been made and therefore cannot possibly implement that architecture decision.
Team Warning Signs:
Negotiating with Business Stakeholders:
Phrases such as “we must have zero downtime” and “I needed those features yesterday” are generally meaningless but nevertheless provide valuable information to thearchitect about to enter into a negotiation.
“Five nines” of availability is 5 minutes and 35 seconds of downtime per year, or 1 second a day of unplanned downtime. Quite ambitious, but also quite costly and unnecessary for the prior example. Putting things in hours and minutes (or in this case, seconds) is a much better way to have the conversation than sticking with the nines vernacular.
Does the entire system need five nines of availability?
Negotiating with Other Architects:
Negotiating with Developers:
The 4 C’s of Architecture: communication, collaboration, clarity, and conciseness.
The ThoughtWorks Technology Radar:
There are not right or wrong answers in architecture—only trade-offs.