Most companies today are already using some elements of cloud computing – whether that’s through a trusted partner, a service, or directly with one of the major cloud providers like Azure, AWS, or Google Cloud. However, despite this very few are leveraging ‘Infrastructure-as-Code’ (IaC).
IaC was once seen as a gold standard of platform management – something only accessible to the largest enterprises with deep pockets and large developer teams dedicated to managing sprawling infrastructure. This perception was largely true in the early days when tools were complex and difficult to master. However, things changed with tools like Azure Resource Manager Templates (ARM), later evolving to Bicep and third-party tools, like Terraform, becoming commonplace. (Check out my blog on IaC tools here!)
Today, we find the landscape different. IaC is easily reachable for most, if not all ,customers and yet, the uptake still isn’t really there. So, why should we bother and what’s the value-add that IaC can provide all businesses?
The barrier to entry these days is incredibly low. You can start a free trial in Azure, get yourself setup with Terraform or Bicep and start deploying low- or even zero-cost resources to learn the ropes. So, why are companies not making this start?
For most I’ve spoken with, each has a common theme: lack of awareness, perception of complexity, an internal standard that is seen to be ‘good because it works’, or my favourite, ‘I like ClickOps’ (the art of using a GUI). But by standing on the side-lines, businesses are missing huge benefits that could be realised quickly, which could change the way they manage and scale their platform moving forward.
With IaC, as a business, you can define your Infrastructure-as-Code. This, in the simplest of terms, means that your business can define the resiliency you require from a service and ensure that there is no deviation, reducing the chances of human error. Heard about all those people publicly exposing S3 buckets in AWS or blob storage in Azure?…
Deploying infrastructure through ClickOps is slow – click next>next>next – and reviewing each step to make sure you don’t make a mistake. Not so bad when you are deploying a single storage account, far worse when you need to roll out multiple resources across multiple environments (dev|test|uat|stage|prod). Rolling a service out in hours sounds a lot better than days, right? Sure there’s a cost to creating all this, but targeting the repeated deployments is where you’ll speed things up dramatically.
Just like application developers, Infrastructure-as-Code can be managed (and should be!) with Git. That means that all updates to code can be reviewed and tracked, with a full history of changes. Made a mistake? Roll back to the last known working version – done. Need to know who exposed an API key externally? Review the Git commit history – done.
Everyone’s favourite… With Infrastructure-as-Code, you can provision and deprovision at will, even on a schedule. This reduces the risk of overprovisioning infrastructure that push up costs. Additionally, with modules (a topic I’ll cover in the future), we can bake in guardrails to prevent any infrastructure being delivered other than what we want, keeping the risk of that £16,000pcm NV-series VM being deployed at bay.
Whether its scaling up to handle peak demand through your busiest period, deploying a new environment for your developers, or rolling out a new platform as part of merger or acquisition, IaC makes these tasks simple, compliant and repeatable.
Now, this doesn’t suit everyone but if you can get to a place where everything is as-code, you can recreate an environment quickly in the event of failure. Mixing Infrastructure-as-Code in with data replication to other regions, or even cloud providers, is a fantastic way of protecting your business in the event of a disaster, and could help you on your way to delivering a fully robust business continuity plan.
The tools and skills needed to leverage Infrastructure-as-Code within your company are already in reach. What’s often missing is a shift in mindset and a willingness to invest the time to learn and develop, but doing so will allow your business to reap the benefits long term. As the cloud providers continue to develop new tools, and businesses pivot to become more tech-focused, those that embrace automation and standardisation will be better positioned to innovate, scale and respond to the changing landscape. Those that don’t will be wasting time, effort and potentially monthly consumption…
So, why should you bother with IaC? Really the question should be: Can you afford not to?