Orchestration

In cloud computing, orchestration is the automated configuration and management of cloud-based resources. An orchestration system can help you define and deploy the cloud resources you need in a way that is repeatable, maintainable and easily scalable. Instead of manually performing all deployment steps each time they are needed, you define the deployment you desire and the orchestration system performs the necessary steps for you.

Cloud computing components are often dependent on each other. For example, cloud instances need to have an associated key pair and must be connected to a network. Because the instance has dependencies on these other components, they must be created before the instance can be created. Working with these dependencies as you manually execute the steps to deploy cloud components can be difficult, and it becomes more challenging as your system grows larger. Then when you later "tear down" your system, the order of the steps may need to be reversed. It is easy to get things wrong or forget to perform some part of the process.

A common feature of orchestration tools is the idea of "Infrastructure as Code" (IaC). In this paradigm, the user creates a definition of the deployment they would like to achieve, but does not specify the actions needed to achieve it. The tool parses the definition and identifies implicit dependencies between the desired components. Then, in combination with information about the system's current state, the tool determines which actions to perform so that the system is transformed from its current state to the desired state. In this way, the user has essentially written declarative "code" that the orchestration tool compiles and runs.

Benefits of Orchestration and "IaC"

If you are currently deploying your cloud computing environments manually, you will obviously need to invest time to learn how to use an orchestration tool and then specify your desired system configuration using that tool. Only after making those investments will you begin to reap the benefits of using such a tool. Some of the benefits may only be realized over time. Potential benefits include:

  • Deployment and tear-down are always faster when performed automatically than when performed manually. Orchestration tools do not lose time "thinking" between operations and they execute non-dependent operations in parallel.
  • A deployment can easily be modified, scaled up or scaled down by editing its definition and allowing the orchestration tool to modify only what needs to be changed to update the deployment.
  • A configuration definition can serve as system documentation. IaC definitions usually specify intent rather than the series of actions specified by simple scripts.
  • A system definition may be more portable to another cloud platform than a simple script. While some effort may be needed in either case to migrate a system to a new platform, with an orchestration tool you may only need to alter details that are specific to the new cloud provider.

Terminology

When you read about orchestration, the same terms are sometimes used in different contexts, producing confusion. Throughout this topic we will use two important terms consistently, though perhaps differently than you may see elsewhere. Those terms are:

  • Deploy - In this roadmap, we speak of deploying cloud components as the act of managing their existence. This includes creating and destroying them and also modifying them as cloud platform entities (e.g. renaming them or otherwise changing their cloud provider settings). You will sometimes see this definition of deployment referred to as "inventory management".
  • Provision - In this roadmap, we speak of provisioning a cloud instance as the process of altering the virtual machine (VM) that is running in that instance. This would include updating the operating system, installing software and copying files to the VM. This definition of provisioning is sometimes referred to as "configuration management".

You may find documentation where the term "provision" refers to the creation of cloud instances. This term makes sense in the context of the cloud platform having been deployed by someone else and you are working to "provision" your instances into it, but we will not use this term in that fashion. You may also see the term "configuration management" refer to the work performed by an orchestration tool. Just keep in mind when reading material outside of this topic that these somewhat generic terms may be used in either context.

Terraform

There are several orchestration tools that could be used with Jetstream2. After a careful evaluation of the available options, the Jetstream2 team recommends the use of Terraform for your Jetstream2 deployments. The remainder of this roadmap provides details on using Terraform with Jetstream2, beginning with an introduction of Terraform.

 
©  |   Cornell University    |   Center for Advanced Computing    |   Copyright Statement    |   Inclusivity Statement