IaC automates system configuration, ensuring consistency and rapid deployment. Configuration files define complex environments, integrating software engineering practices. This enables rapid changes and supports experimentation. The convergence cycle adjusts systems by reconciling desired and actual states.
Since 1993 (and possibly earlier), numerous configuration management engines have been created. Why are they important? Well, they provide the invaluable service of configuring computer systems at scale, delivering ways to ensure that only a specific version of the software is running, critical patches to OS applied and guaranteeing that fleet of machines and OSes have proper settings. The above is achieved by the operator describing desired system states and either manually or automatically applying state transition over the machine fleet. The advantages of such operation at scale are numerous:
The advent of virtualisation gave ways for virtual machines, networks, and data centres to be defined within configuration management systems via configuration files. These virtualised environments made one want to describe complex hierarchical configurations in a more concise way. This led to Infrastructure As A Code concept - the ways to define infrastructure from configuration files written in a programming language.
The moment we talk about infra definition as a piece of code, we start talking about multiple aspects familiar to software engineering:
These aspects reduce the cycle of software/infra delivery from several months to several hours, allowing empowered teams to deliver value to business quicker:
A smaller set of changes travel to production with a quick turn-around time, reducing the risk of failure. A whole stack of infrastructure and applications described in the code makes it easy to validate. A complete testing environment can be created on demand, providing each engineer with the capability to experiment with changes without interfering with each other’s work!
In general process of converging infrastructure can be described in the picture below: