The Computer Weekly Developer Network (CWDN) continues its Infrastructure-as-Code (IaC) series of technical analysis discussions to uncover what this layer of the global IT fabric really means, how it integrates with the current push to orchestrate increasingly cloud-native systems more efficiently and what it means for software application development professionals now looking to take advantage of its core technology proposition.
This piece is written Red Hat senior solution architect for EMEA region Erica Langhi who writes as follows…
Traditionally, setting up IT infrastructure has been a manual affair which sees an organisation’s IT team having to configure every virtual machine, operating system and application in addition to discrete pieces of hardware.
This has proved a major source of friction for most IT departments, with any new business application or attempt to scale an existing application requiring time for the infrastructure team to procure, install, and configure new infrastructure.
A vast & dynamic constellation
Over the past few years, however, organisations have embraced cloud-based infrastructures that draw heavily from virtualisation and containers.
As opposed to a few large machines and a monolithic infrastructure to deploy, teams instead have a vast and dynamic constellation of components and devices to handle.
This scope of provisioning means that doing it manually is no longer viable for many.
This has helped to popularise Infrastructure-as-Code, or IaC. Under IaC, teams use human-readable configuration files that contain their infrastructure specifications.
This makes it much easier to edit and distribute their configurations, while also helping ensure that their configurations are fully consistent, standardised and documented. This also allows teams to break down infrastructure into modular components whose deployment and integration can be automated.
It is through automation that IaC offers a major value-add, as it means that developers and IT teams will be freed from the task of manually provisioning and managing their servers, storage, OSes… and other components every time they need more resources and can focus on more valuable tasks.
In principle, the configuration files used by IaC are similar to many programming scripts that are already used by developers to automate IT processes. IaC sees teams develop a script in a YAML or JSON file which can be executed on demand to manage the installation and configuration of new in-demand infrastructure.
This means that one of the major benefits of IaC is that it allows infrastructure to be subjected to the very same version control, CI/CD pipeline and automated testing that teams are already using for their applications. It also helps automate interactions between developers and operations teams, reducing both of their workloads and removing room for errors or inconsistencies.
From this, we can see that IaC perfectly complements the adoption of a DevOps culture. IaC can serve to break down a major silo between developers and IT admins through standardising processes between both and encouraging them to use the same practises and language when it comes to their infrastructure. IaC also encourages the adoption of a CI/CD pipeline when it comes to managing those infrastructure scripts, which is a key practice that’s needed to make DevOps a success.
Organisational & cultural change
So, while much attention is rightly paid to IaC’s ability to boost a team’s raw productivity and performance, we should also remember IaC is also a powerful tool to help drive organisational and cultural change.
If you want to either embrace or deepen your existing DevOps culture, you can’t go wrong by looking at how you deploy and configure your infrastructure and seeing if IaC may be a good fit for your needs.