Continuous Provisioning - The Final Frontier
Back to the Blog Page

Continuous Provisioning - The Final Frontier

by Michael F. Weinberg | Tuesday, February 17, 2015

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:

  • Provisioning actions can all be run from the command line, typically capable of provisioning entire application stacks with a single command.
  • Provisioning templates are code designed for iterative development and storage in source control.
  • They are well-suited for use with CI/CD pipelines.
  • They may trigger configuration management tools, but provisioning actions run independently of config management.
  • They support multiple cloud providers with common template syntaxes (though features may vary based on the provider).

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.