Infrastructure as code (IaC) is an approach to
software development that treats physical compute, storage and network fabric
resources as web services and allows apps to run where they are best
suited, based on cost and performance data.
Essentially, IaC negates the need
for software engineers to be concerned with the physical location of
infrastructure components. Instead, when a software application requests
infrastructure to run, available services are located through an automated
discovery process and resources are allocated on demand. When an infrastructure
resource is no longer required, it is re-appropriated so it can be allocated to
another application that needs it.
Examples of IaC tools include AWS
CloudFormation, Red Hat Ansible, Chef, Puppet, SaltStack and HashiCorp
Terraform. Each of these tools has its own way of defining infrastructure, and
each allows an administrator to define a service without having to configure a
physical infrastructure. These tools are also able to roll back changes to the
code, should an unexpected problem arise when new code is released.
Some IaC tools rely on a
domain-specific language (DSL), while others use a standard template format,
such as YAML and JSON. When selecting an IaC tool, organizations should
consider the target deployment. For example, AWS CloudFormation is designed to
provision and manage infrastructure on AWS and works well with other AWS
offerings. Alternatively, Chef works with on-premises servers and multiple
cloud provider IaC offerings.
IaC can be managed through the
same version control and automated testing procedures that developers use to
maintain quality assurance (QA) in their continuous integration and continuous
delivery (CI/CD) pipelines. As of this writing, there are no agreed-upon
standards for implementing IaC and the concept is known by several other names,
including composable infrastructure, programmable infrastructure and
software-defined infrastructure.
Comments
Post a Comment