The Infrastructure Unattainable Triangle
version 0.1, 2023-03-08
Similar to the known concept of the Unattainable Triangle of Quality - Cost - Speed, there is a similar Unattainable triangle in the area of infrastructure provisioning:
Simplicity - Decoupled Life Cycles - DRY
Out of these, I will argue that you should strive for Decoupled Life Cycles first and foremost and then work on the Simplicity piece.
I personally HATE!!! DRY principles and it is when there was a pursuit of these than I have found the most complex spaghetti problems in my career.
Copy Paste is GOODTM
Decoupled Life Cycles
In my experience, the most important Vertex of the Triangle to try an attain is Decoupled Life Cycles.
It is the same concept that drove companies to split their monolithic codebases into micro services. The more independent (decoupled) the pieces are, the easier it is for teams to make changes to the system without stepping on each other.
In infrastructure, most coupled designs make it impossible for you to upgrade or make changes to a single piece. And since the infrastructure layer is
Now, just as in software design some monoliths are impossible to split and you are force to try and strangle them.