I recently listened to a talk by Matt Long on Why We Should Test Programmable Infrastructure. You can watch a version of it on the MoT Dojo. During the talk, he used the phrase “infrastructure as code”, which you may have heard before.
Wikipedia describes “infrastructure as code” as: “the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools […] The definitions may be in a version control system. It can use either scripts or declarative definitions, rather than manual processes […]”
ThoughtWorks defines it more plainly as: “writing code […] to manage configurations and automate provisioning of infrastructure in addition to deployments […]”
If we really simplify things, infrastructure as code is simply a form of automation in operations. So why does no-one talk about how we can automate all operations tasks, and get rid of all our operations people in the same way that they talk about automating all testing tasks and getting rid of testers?
Gross misunderstanding is one obvious reason. Another possible explanation is phrasing, or branding. I think phrases like “infrastructure as code” and “continuous deployment” have very different connotations to “automated provisioning” and “automated deployments”.
I wonder how different the narrative might be if we talked about “verification as code” instead of “automated checks”…
Note: This is just a thought I had, written down. I’m not saying we should start some campaign to rename anything, I just think it’s interesting to think about and compare. I’m also trying out shorter-form posts, so I know there’s a lot of things I didn’t talk about here. That was deliberate. As always, please feel free to share your thoughts in the comments.