The rise of cloud computing and DevOps has spawned a lot of buzzwords, along with a lot of confusion, disdain and rhetorical debate over terminology. In this blog post, I'll take a crack at teasing apart these terms and hopefully provide some clarity.
First off, let’s examine the difference between orchestration vs. automation. These two terms are often used interchangeably, and are often confused. The confusion is most likely about semantic hierarchy, because while it's true that orchestration is in one sense just a specialized form of automation (and therefore a sub-category of automation), functionally speaking, orchestration is a “higher form” of automation because it's concerned not just with simple or lower-level tasks, but with control and coordination of multiple component automation tasks.
Now let’s look at the relationship between DevOps and cloud. DevOps describes a culture of technical collaboration between teams from development through IT operations to drive more agile software development lifecycles (SDLC) that result in higher quality software outcomes. Cloud describes a way of managing and consuming infrastructure (and other resources) such that it is self-service, elastic, Internet-accessible and automated.
Since DevOps is the higher order, end-to-end concept, we can consider cloud at least in the context of this discussion, to be a subordinate enabler of DevOps.
Perhaps it's best to mix and match these terms to decrease any possible ambiguities.
Cloud automation. Discrete automation tasks or objects that perform needed aspects of deploying cloud resources. These tasks could be things like spinning up a bare metal server or a VM, installing an OS image, and deploying an application or network function. Cloud automation tasks can be performed by a variety of automation tools such as homegrown scripts, configuration management tools.
Cloud orchestration. End-to-end automation workflow or process that coordinates multiple lower-level automations to deliver a resource or set of resources “as a service.” Cloud orchestration is typically delivered by a cloud management platform (CMP) that includes a number of layers of functionality:
- API and web portal/catalog access
- A service management layer that presents service offerings and allows users or automation processes to customize those service offers in real-time before deploying. The services may be completely consumption oriented (an end-user service catalog), or also allow dynamic service design, infrastructure modeling, live sandboxing, etc.
- An orchestration layer handles the control, governance, coordination aspects of the service delivery processes. It interacts via abstractions with underlying resources. Note that in most cases, this layer’s logic is fairly fixed or is not really exposed to the CMP users. However, some CMPs offer integrated orchestration authoring and some provide that orchestration in a visual form.
- A resource management layer that handles open and abstracted interfacing to all resources whether they be bare metal servers, networking, virtualization, services, applications, etc.
DevOps automation. Discrete automation functions such as build, continuous integration, software configuration management tools.
DevOps orchestration. Automated coordination of an organization’s custom-defined DevOps process and the automation tools and tasks they carry out in that process.
Now that we’ve hopefully clarified some of the terms, how in fact does cloud infrastructure play along with DevOps automation tools, and how are they orchestrated or coordinated to support a desired process?
A good way to think of it is when developers and testers need to access multiple VMs and perhaps even a bare metal server and some networking switches in order to work on an application. In this case, all that cloud infrastructure needs to be allocated, connected and configured as a working environment, and that requires cloud orchestration because it requires coordination of automation working on top of all those VMs, servers and the networking in a particular order.
Orchestration can then go beyond just pulling the cloud infrastructure together to encompass DevOps automation tasks in coordination with that infrastructure. Now you’ve got DevOps orchestration.