When automating Continous Delivery, what is the difference between Automation and Orchestration? Tuesday April 19th I participated in an online panel on the subject of CD Automation, as part of Continuous Discussions (#c9d9), a series of community panels about Agile, Continuous Delivery and DevOps. Watch a recording of the panel:
Continuous Discussions is a community initiative by Electric Cloud, which powers Continuous Delivery at businesses like SpaceX, Cisco, GE and E*TRADE by automating their build, test and deployment processes.
Below are a few insights from my contribution to the panel:
Automation != Orchestration
Let me tell you some experiences from a team I worked in.
When this team first started with Continuous Delivery a while ago, we noticed that we were not really looking at the big picture. What we did was looking at the first problem that we saw - the release team, which was always behind on deploying the software to right test environments.
So what we thought was, "OK, well let's automate the deployment process". We did that and we really managed to decrease the deploy time from, let's say, a week, to an hour, which was amazing. But then something unexpected happened, we didn't deliver any software faster to the market. So we were a bit disappointed. How could it, that we made such an enormous progress, but still did not improve on customer delivery?
And that's simply because of the Lean principals: you can take one part of the chain and automate it, but if you don't look at the whole holistic view, it just gets stuck in the next phase. And basically what happened was that the delivery got piled up at the test team, and now they could not keep up with the speed that the deployment team was doing.
Having learned that, we noticed that we had to orchestrate all the processes together, to make sure that what you get in will be delivered in a predicable pace to the end customer. Then we started to orchestrate: first, a bit automated and a bit, manual. But we also noticed how important it is to automate all the steps.
So, automate is basically: get out your manual work. But orchestrate is making it a real seamless process. Once we figured that out, we really got to the point that we had Continuous Delivery pipelines.
After a while we noticed that automation was not the only answer to our problems. You really want to get rid of the handovers in the organization. Handovers slow down your delivery and are an important cause of failures. It should be a DevOps team that is responsible for the whole delivery of software, from development, to the complete deployment in production.
The video contains must more insights and learning points. Especially the contributions from Dondee Tan are highly recommendable.