The business value of orchestration in software delivery
September 17, 2022
In today’s fast-paced market, the team can forget about business success if the team cannot quickly react to customer preferences shifts. Customers expect deep personalization and a seamless user experience – if the team can’t provide these, competitors will do that instead.
Being able to detect issues in software products and roll out fixes quickly is one of the keys to continued customer satisfaction and business success. But the team has serious problems if the software delivery process is riddled with inefficiencies and if it takes days or weeks for an update to be pushed to production.
Improvements in software delivery begin with cultural changes, which the team could execute by adopting DevOps. Then, software delivery approaches like orchestration could help the team cement the new culture in the workspace with specific tools and workflows (Saito, et al., 2019).
But how exactly can orchestration improve software delivery? And more importantly, what are its business benefits? We are going to give answers to these questions below.
What is Orchestration?
Orchestration is the process of combining several automated tasks to create an end-to-end automated workflow or pipeline. The team can use orchestration to automatically manage, provision, and monitor elements like:
- Compute resources and computer systems.
- Applications and services.
- Steps in a software delivery workflow.
The main goal of orchestration is to string together and automatically perform successive steps in a process or workflow. Orchestration is performed by an orchestrator – a service or piece of software that is connected to the automated steps in a workflow. When the orchestrator receives a user request or a developer commits a new piece of code, it automatically invokes its child processes and/or microservices to carry out the specified workflow.
Orchestrated systems can make rule-based decisions to make automation adaptable to different conditions and situations. With that in mind, orchestration allows you to automate the steps of a workflow and the workflow’s entire decision-making process.
Here are a few examples of automated decision-making in orchestrated workflows based on simple rules:
- In response to increased traffic to a website, the orchestrator might provision additional VMs to meet the sudden increase in bandwidth requirements.
- In software delivery, the orchestrator can notify developers when their committed code fails to compile, doesn’t pass security checks, or doesn’t meet performance requirements.
- If the orchestrator detects that the updated application has degraded in performance (compared to KPIs), it can roll back to a previous version and notify developers about the issues.
These examples are very simple and serves to demonstrate how orchestration works. But in practice, the team can use orchestration to automate much more complex workflows and pipelines from start to finish.
Orchestration vs. Automation
Orchestration and automation are related terms that are frequently confused with each other. However, they are not the same, so it’s essential to understand how they differ. Automation is the process of automating a single distinct task, such as application testing. Some examples of tasks that the team can automate in software delivery include the following:
- Building an application after each code commit.
- Running individual unit, integration, API, or security tests on new code.
- Pushing feature updates to a staging or production environment.
Automation is the first step in optimizing software delivery, but it’s insufficient. Suppose we initially automate individual steps in a software delivery pipeline but don’t orchestrate them. The team will have to manually invoke them one after another to get our application from build to production.
Here’s where orchestration comes into play. Orchestration connects individual automated tasks to perform them sequentially without manual involvement. If we take software delivery as an example, an orchestrator could automatically build, stage, test, and deploy new application code without any extra action from the software delivery team. We could thus say that orchestration is an evolution of automation because it extends automation across multiple tasks.
How is this beneficial to software delivery and IT processes in general? At a technical level, the main benefits of orchestration are as follows:
- Orchestration makes processes repeatable and coordinated. Orchestration takes manual work out of the equation entirely, minimizing the chance of human error and making workflows repeatable and reliable. Orchestration can also coordinate multiple tasks, ensuring they are performed precisely when necessary.
- Orchestration is device- and platform-agnostic. Automation is typically applied to specific applications or pieces of code. Orchestration, on the other hand, can be device- and platform-agnostic and can operate in a wide range of environments via API calls.
- Orchestration can adapt to changing conditions in its workflow. An orchestrated workflow doesn’t have to run from start to finish in a straight line – it can branch out to different sub-workflows based on simple rules.
Orchestration is essentially what most people mean when they say “automation.” Even though automation in its strict sense (as explained above) is useful and can save time, it is not complete without orchestration. Without orchestrating the software delivery process, the team cannot say that it is truly automated.
Orchestration vs. CI/CD
What about CI/CD? CI/CD and orchestration are not competing concepts – CI/CD is just one way to do orchestration. CI/CD relates explicitly to software delivery, while orchestration can be applied to any task or process that can be automated. Without orchestration and automation, CI/CD cannot exist and has limited practicality.
Orchestration is a concept that defines how a process should be automated end-to-end at a high level (Rathod and Surve, 2015, January). It does not represent the specific steps for automation. CI/CD, in contrast, is a workflow with detailed steps and goals.
Without orchestration, a software delivery workflow can include many manual steps. Developers may need to manually build new code, push it to a staging environment, test it, and release it to production. But with orchestration on top, software delivery becomes an automated CI/CD pipeline that can do most of the repeatable steps for developers and let them focus on coding new features and fixing issues (Steffens, et al., 2018, May).
Orchestration vs. Choreography
Like orchestration, choreography also aims to automate entire workflows and pipelines. However, it operates somewhat differently – with large implications for efficiency, scalability, and reusability (Singhal, et al., 2019).
In orchestration, the orchestrator directly controls its child workflows and microservices. Microservices in an orchestrated pipeline are tightly coupled, and the interactions between the orchestrator and its child microservices are explicitly defined. When the orchestrator service receives a request from a customer, it sends explicit calls to relevant microservices so that they can carry out their functions.
In choreography, messages are exchanged between microservices indirectly through an event broker. Each microservice in a pipeline listen to a predefined type of event. When the central microservice sends a request, it emits an event visible to other microservices. The microservices that the event is addressed to pick up the request and automatically perform their functions. The central microservice doesn’t explicitly call its child microservices – they are invoked automatically based on the emitted event.
Overall, choreographed pipelines are more modular and more easily scalable than orchestrated ones because adding new microservices is easy. Each new microservice needs to be explicitly connected to the orchestrator in orchestration. In contrast, the new microservice only needs to be told which events it should be listening to in choreography.
To hopefully better understand the differences between orchestration and choreography, remember these two analogies:
- An orchestrated process is like an orchestra where each musician waits for commands from the conductor to play their part.
- A choreographed process is like a dance team where each dancer follows cues in the music and moves accordingly.
The team can also view orchestration as a naive approach concerned strictly with automating a process. Efficiency and scalability are not their priorities. With that in mind, orchestration can work well for simple processes that don’t change frequently and/or can be easily changed.
On the other hand, choreography puts more emphasis on scalability and efficiency. Microservices can be easily added to an existing pipeline – the new microservice just needs to know which events it is supposed to be listening to. Not only that but choreographed microservices can be used and reused across various applications.
What Are the Benefits of Automation and Orchestration for Tech-Enabled Businesses?
Automating and orchestrating software delivery is not an easy process. However, for organizations that can afford to assess and change their workflows, orchestration is a worthwhile investment, according to studies like “Modernizing Software Delivery with End-to-End Automation, Orchestration, and Collaboration” from Forrester Consulting and CloudBees. This particular study investigated the maturity of software delivery in American and European enterprises and the effect of orchestration/automation on business outcomes.
Among other things, the study shows that just 27% of respondents practiced continuous deployment with automation from commits to final release. Not only that, but just 24% of respondents had enough visibility into their SDLC processes to be able to locate bottlenecks in them.
The study also brings up some comparative metrics between organizations with mature and low-maturity software delivery:
- Mature organizations were almost three times as likely to grow revenue by 15% or more annually than “immature” organizations.
- 35% of organizations with mature software delivery processes said that their DevOps transformation programs exceeded their business expectations, versus just 6% in low-maturity organizations.
- 46% of mature organizations reported that their user adoption figures exceeded expectations, versus just 25% among low-maturity respondents.
- 36% of mature organizations achieved better market share than they had expected, versus only 14% among low-maturity respondents.
- 49% of mature organizations reported that they had responded to the COVID-19 pandemic better than their peers, versus 27% among low-maturity organizations.
In another study, Forrester investigated the effect of testing automation on behalf of American automation software vendor BMC. According to this study, BMC Compuware Topaz For Total Test enabled four BMC customers to achieve the following outcomes over three years:
- 20% fewer bugs, which led to savings of $376,000.
- $2.9 million saved through automation efficiencies, quicker testing, and earlier bug detection.
- $2.6 million saved by reducing the risk of major mainframe defects and preventing negative customer impact from bugs.
- $4.5 million worth of time savings, increased developer output, and about one day of work saved every two weeks.
- $10.34 million in business benefits on a $3.4 million investment –205% ROI.
Automation and orchestration can also be extremely beneficial in other areas like network management. According to a study carried out by technology company Cisco, its major service provider customers were able to use orchestration to significantly reduce their operational expenditures and increase efficiencies across the entire lifecycle of their services, starting from customer acquisition and ending with ongoing maintenance and monitoring.
Over five years, automation and orchestration allowed providers from Tier 3 to 5 to save between $3 and $16.7 million. Tier 1 and 2 providers saved over $70 million. Additionally, process efficiencies across the service lifecycle of Cisco partners increased between 60% and 70%.
Automation approaches like orchestration and choreography can be potent tools for optimizing software delivery. They can cut the time from commit to production from weeks to minutes and enable software delivery teams to respond to changes in customer needs several times per day (Leone, 2016).
But while the benefits of orchestration are clear, implementing it might not be straightforward. Orchestration requires dealing with data and staff silos and adopting a more agile work culture. Aside from that, software delivery teams need to properly standardize and modularize their tasks to be able to automate them.
Even after all this is completed, orchestration might require some fine-tuning. There is no one correct way to execute orchestration, so the software delivery teams might need to try different pipelines to see which one meets the business goals. Software delivery simulation can be an extremely useful tool at this stage because it allows teams to quickly test different pipelines back-to-back and figure out which pipeline is the most optimal. Ask the team to consider some inexpensive seminars on either orchestration and/or choreography:
- Containerized Applications on AWS
- Automation & Architecting DevOps Toolchains
- Deployment Orchestration with AWS Elastic Beanstalk
Leone, M. (2016). The economic benefits of puppet enterprise. Technical Report. ESG. https://puppet.com/resources/analyst-report/the-economic-benefits-puppet-enterprise.
Rathod, N., & Surve, A. (2015, January). Test orchestration a framework for continuous integration and continuous deployment. In 2015 international conference on pervasive computing (ICPC) (pp. 1-5). IEEE.
Saito, H., Lee, H. C. C., & Wu, C. Y. (2019). DevOps with Kubernetes: accelerating software delivery with container orchestrators. Packt Publishing Ltd.
Singhal, N., Sakthivel, U., & Raj, P. (2019). Selection mechanism of micro-services orchestration vs. choreography. International Journal of Web & Semantic Technology (IJWesT), 10(1), 1-13.
Steffens, A., Lichter, H., & Döring, J. S. (2018, May). Designing a next-generation continuous software delivery system: Concepts and architecture. In 2018 IEEE/ACM 4th International Workshop on Rapid Continuous Software Engineering (RCoSE) (pp. 1-7). IEEE.