Orchestration vs. Automation in the Cloud: How to Use Both
Automation and orchestration sound similar at first but are, in fact, different. Automation is when a specific task or process is done without user intervention. Orchestration manages multiple different (automated) tasks to create one workflow.
So, why do we need that distinction in the first place? Mainly because IT environments are getting bigger and more complex. We need to “automate our automation” to bring more logic to executing automation scripts.
Nowadays, both automation and orchestration are a must. With automation alone, you’ll spend a lot of time executing all the automation tools and scripts. To improve productivity, reduce IT costs, and streamline the processes, we need to increase our use of both orchestration and automation.
What is automation?
As you already know, automation is running a specific task without human intervention. A “specific task” is important here. To automate even complex, multistep processes, you first need to automate each individual task of the process. The point of automation is to make manual, time-consuming processes quicker. Imagine that your application produces a JSON file and you need to change every occurrence of “foo” to “bar” in that file. If we’re talking about a file with over 1,000 lines, it could easily take you a few hours to do it manually. But you can easily automate that process so it takes less than a second.
It’s also worth mentioning that most of the time when we talk about automation, we mean infrastructure or cloud automation, but there is also software and deployment automation. In fact, you can automate any process—it doesn’t matter what it refers to.
No matter what you want to automate, the main point is that automation refers to automating a single task at once. Even if we’re talking about “deployment automation,” that process consists of many smaller automated tasks. Business processes also can be automated.
What is orchestration?
Orchestration by definition is the automated configuration, coordination, and management of computer systems and software. What it means is that it’s much more complex than automation. The orchestrated system needs to make decisions and react to events. It often needs to keep track of the state as well. That’s why when it comes to orchestration we usually talk about orchestration platforms or orchestration tools.
For example, you could automate the provisioning of virtual machines, then automate software installation on that machine, and also automate creating some firewall rules to expose the application running on that machine. It doesn’t matter if we’re talking about your own data center, cloud environment, or even a hybrid cloud. All of these tasks separately are considered automation. If you now make a connection between them and consider them all as one task of “creating infrastructure, deploying, and exposing software,” that’s orchestration.
Automation vs. orchestration
Some say that orchestration is just another word for more complex automation. They’re not necessarily wrong, but there’s a bit more to it than that.
You should think about automation as a simple “if this, then that”-based process, while orchestration has much more advanced logic. It can make decisions based on outputs from one automated task and coordinate multiple other tasks at the same time. Orchestration is more of an “automated system” than just complex automation.
You can’t orchestrate tasks that aren’t automated. You need to automate all the individual tasks first to then orchestrate the whole process. Indeed, it can be hard to discern the line between automation and orchestration at times. Orchestration can be seen as “managing many automated tasks”. Therefore, what’s orchestration for one person may be still automation for someone else. A rule of thumb is that the more complex your automation is, the more likely it is you're moving into the realm of orchestration.
But don’t forget that if you have a process that has 100 steps, and you automate all of them in a chain, that’s still automation. When you start introducing some sort of coordination and decision-making process to your automation, that’s where we can start talking about orchestration.
Another way to look at it is that usually at the beginning of your digital transformation journey, you focus on automating everything. At the end of the journey, you focus on orchestrating all the automation.
Cloud automation vs. cloud orchestration
How does automation differ from orchestration when we’re talking about cloud services? It depends on how you look at it. Cloud providers are orchestrating the cloud for you. If you use managed services, you maybe don’t need to do that much. But realistically, even then you’re probably still using many secondary services, like storage accounts, network rules, etc.
Now ask yourself, what does it take to deploy all of that at once? Do you need to run a few different scripts or tools—for example, different ones for networking stuff, for services, and for the application? Then you have cloud automation. Can you deploy everything automatically, and can parts of your systems recover from scratch independently? Then you most likely have cloud orchestration. The fewer automation processes you need to trigger manually, the greater the chances that we’re talking about orchestration. For example, if your whole CI/CD pipeline runs on a Git push, wherein all the steps are done without human intervention, that’s orchestration. But if your CI/CD pipeline requires you to manually initiate the automated tests, then manually trigger the automated deployment, and so on, then you’re in the realm of automation, not orchestration.
Automation can be achieved in many different forms. Even a simple bash script can be called automation. Orchestration, however, usually needs a whole platform to be used. This is simply because of the nature of orchestration—as I explained in the previous section, orchestration needs to manage automation and make decisions based on events. That’s why you need more than just a code. You also need some components to support orchestration, like a key:value store to keep the state.
Take container orchestration, for example. It’s not only about (re)deploying containers. The orchestrator needs to take care of scheduling, networking, storage, auto-scaling, monitoring, and many other tasks. Container orchestration tools will even manage your cloud infrastructure. The orchestrator needs to constantly make decisions based on events. Under the hood, the orchestrator executes automated tasks, but again, it’s not just “automated automation” because it needs to make decisions in between and constantly react to changes.
Another example could be CI/CD systems. They are also orchestration platforms. To build and deploy software, you need to perform many tasks. Download the source code, build an artifact, push that artifact to some artifacts registry, create deployment manifests, test the artifact, and, if the test is good, deploy the artifact to the production environment. You can automate all these tasks. But to have that whole process automated, you need to orchestrate all of these automated tasks.
Both automation and orchestration are very important in DevOps culture. The point of DevOps is to shorten the system development life cycle, so you definitely need to automate some processes to achieve that. And as I explained in the previous section, software delivery consists of many different steps and tasks. Therefore, to provide high-quality continuous integration and continuous delivery, you need to orchestrate the whole process.
This is a great example of how orchestration helps you achieve DevOps maturity. If your software delivery process consists of many manual steps in between, you probably have only automated and not fully orchestrated processes. Therefore, your DevOps culture could be improved. Some companies avoid creating fully orchestrated deployment processes to avoid the risk. However, human errors are also common.
LaunchDarkly brings automation to release management
LaunchDarkly’s feature management platform has in-built automation for better managing feature releases. Our platform enables teams to use feature flags in sophisticated ways at a large scale, giving them unparalleled control when shipping software to their users. We pair our feature flagging capabilities with a host of other tools in your tech stack via integrations with Slack, New Relic, Jira, GitHub, Amplitude, and more. Through these integrations, LaunchDarkly facilitates better orchestration and automation.
For example, consider an automated kill switch enabled by Flag Triggers in LaunchDarkly. LaunchDarkly integrates with various observability and application performance monitoring (APM) tools to provide end-to-end change visibility. When your APM tool detects a critical issue with your performance metrics (e.g., a surge in error rates), it will “trigger” LaunchDarkly to automatically disable the feature that’s causing the incident. What’s more, the toggling of the feature flag can trigger an alert in your team’s chat tool (Slack, Microsoft Teams, etc.), so key stakeholders are informed of the situation in real-time. In this way, LaunchDarkly automates various facets of the feature management process.
Here's an example of Flag Triggers in action.
LaunchDarkly also helps automate aspects of your feature release process. We do this through Feature Workflows, a set of capabilities that automates your feature rollouts while complying with your team’s processes. Using Feature Workflows, users can essentially define their release template (rollout plans, launch schedules, manager approvals, etc.) within LaunchDarkly for automation.
For example, after a developer has flagged a feature that’s being built, they can apply a workflow template from within LaunchDarkly to automate the release of this feature. This template could include the schedule for when the new feature is released to customers. Taking this a step further, it can also specify multiple team leads from whom to get approvals before rolling it out to more customers.
This is just one example of how Feature Workflows in LaunchDarkly support feature management at scale through automation.
Depending on how you look at it, orchestration is just “more advanced” automation. Regardless of their exact definitions, orchestration and automation are essential for any mature DevOps organization. Understanding how automation and orchestration complement each other will give you more confidence, especially with the deployment process. Automating and orchestrating manual processes will help you streamline your whole infrastructure and software development life cycle. And LaunchDarkly can enable you to automate and control critical workflows related to feature management.