What goes wrong.
DISTRIBUTING A SYSTEM THAT DID NOT NEED IT
Adding network calls, partial failure and operational complexity to solve a problem that did not exist.
BUILDING FOR IMAGINED SCALE
Optimising for load that never arrives, at the cost of everything else.
NO BOUNDARIES
Everything able to reach everything, so nothing can be changed safely.
BOUNDARIES NOT ENFORCED
Which erode, silently, until they are gone.
SHARED DATABASES BETWEEN SERVICES
Making the schema a dependency nobody can change.
BUSINESS LOGIC IN THE WRONG PLACE
In the interface, in the database, or in several places at once.
TECHNOLOGY CHOSEN BEFORE THE PROBLEM WAS UNDERSTOOD
NO RECORD OF WHY DECISIONS WERE MADE
IGNORING OPERATIONAL CONCERNS
Building something nobody can deploy, monitor or debug.
TREATING ARCHITECTURE AS A ONE-TIME ACTIVITY
WHAT PREVENTS MOST OF THESE
Starting simple, drawing boundaries where change occurs together, enforcing them, and recording the reasoning.