[1] The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources.
In 2006, the launch of Amazon Web Services’ Elastic Compute Cloud and the 1.0 version of Ruby on Rails just months before[2] created widespread scaling difficulties in the enterprise that were previously experienced only at large, multi-national companies.
The ability to treat infrastructure as code and use the same tools as any other software project would allow developers to rapidly deploy applications.
These outcomes and attributes help the enterprise move towards implementing a culture of DevOps, the combined working of development and operations.
Broadly speaking, any framework or tool that performs changes or configures infrastructure declaratively or imperatively based on a programmatic approach can be considered IaC.
Now enterprises are also using continuous configuration automation tools or stand-alone IaC frameworks, such as Microsoft’s PowerShell DSC[10] or AWS CloudFormation.
These visual, object-oriented systems work well for developers, but they are especially useful to production-oriented DevOps and operations constituents that value models versus scripting for content.
As the field continues to develop and change, the community-based content will become ever more important to how IaC tools are used, unless they are model-driven and object-oriented.
[14] Automation in general aims to take the confusion and error-prone aspect of manual processes and make it more efficient, and productive.