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. |
No comments:
Post a Comment