I firmly believe the centralization of infrastructure automation and especially terraforming are defeating the purpose of Devops and Continous Value Delivery.
Every deployment/repo should have their own terraform scripts that can be run in every release atomically for that deployment/repo. This will make sure the blast radius of something going wrong contained to one repo/deployment. While code duplication here seems a trade off, having a smaller blast radius of bad infrastructure automation is far greater value.
Devops in this sense is a culture. Culture in this sense means definition of doing things in certain ways. Maybe this is something we need to step back and think differently.
I believe there is a much bigger mission Engineers can contribute from this point of view. The change and deployment rate of a Cloud Native Software can be also limited as number of infrastructure changes needed for better performance which is a valuable user experience and maybe number one product feature.
I think with the Domain Design and Devops movements, the fundamental philosophy we are trying to push is:
the more decoupled things are the faster we can deliver value
So this starts with the architecture and then reflecting to the teams inside a delivery team. Having bounded contexts worked on by autonomous teams and adding more of the same will get you to the Scale.
What do you think?