As both consultants and product creators, Heavy Water’s engineers have an opportunity to witness new Infrastructure as Code (IaC) trends before they solidify. Over the last 18 months, we have been most interested in the emerging trend towards Continuous Provisioning.
As an IaC practice, Continuous Provisioning is the pattern of dynamically managing the creation, updating, and deletion of virtual infrastructure. Continuous Provisioning is distinct from and complementary to its precursors, including Continuous Integration, Continuous Delivery, and Configuration Management.
In effect, Continuous Provisioning completes the software delivery toolchain by automatically provisioning the infrastructure that is targeted by Configuration Management systems and Continuous Delivery pipelines.
We feel that Continuous Provisioning is a more accurate way to describe the role
currently filled by many IaC engineers. The infrastructure we manage is varied
and complex. Many of the resources inherent to both public and private clouds
challenge concepts of
deployment. Load Balancers, Networking, and Block
Storage are not shipped to the provider; they are provisioned and configured to
order according to a manifest the engineer provides, rather than configured
after the fact.
As engineers we deserve a term that encompasses the totality of our responsibility for managing this infrastructure, in addition to deploying the applications that run on-top of or behind it. When this infrastructure is abstracted as code, such that management can be automated via a pipeline, it becomes Continuous Provisioning.
We see this as a natural progression. As packaging and containerization have made Continous Integration, Delivery, and Deployment easier, IaC concerns have moved to the underlying virtual resources upon and within which an application runs.
Although interest in Continuous Provisioning as a unique problem in DevOps is a recent phenomenon, it is not entirely new as a practice. Spiceweasel was an early step in this direction, while Cloudformation and HEAT are mature APIs that greatly expand the ability to orchestrate resource provisioning.
The advent of tools such as Terraform, Chef Metal, and SparkleFormation has recently made true Continuous Provisioning possible. While each of these takes a different approach to provisioning infrastructure resources as code, there are a some traits that we find are common to Continuous Provisioning tools:
We believe Continuous Provisioning is the next major milestone in modern software delivery. A variety of patterns are in active development, and many of us are thinking about and coding for Continuous Provisioning scenarios. At Heavy Water, it’s going to be a theme we focus on throughout 2015.
We hope you’ll join the conversation.