What is Continuous Delivery in DevOps?
Continuous Integration was explained in detail in our last tutorial. Here, we will see Continuous Delivery in DevOps.
Continuous delivery is the important process of delivering the software/Updates to production in smaller increments, ensuring that the software can be released at any time. With this approach of DevOps, the team will be always ready on ‘Delivering any time’ to the production.
Also Read => A Complete DevOps Guide
So, continuous delivery is a pipeline or a life cycle of a code, where the code newly developed or updated by the software team, gets tested at different stages both through manual and automated tests and passes both the manual and automated stage gates and gets into production.
The main focus and objective of continuous delivery are to build, test and release to the customer quite faster and more frequently, in short cycles.
Given below are the benefits of the CD.
-
- Increases the number of deliveries.
- Minimizes the risk of failure in production.
- Reduces manual work.
- Increases confidence in the team.
- Enables the team to automate everything.
- Enables faster feedback.
VIDEO Part 3 Block 2: Continuous Delivery – 10 minutes 28 seconds
Transcript:
We have completed Part 1 and part2 of this lecture series and currently on part 3- block 2
In block1, we studied about Continuous Integration, which is an important automated process in DevOps practice where we understood that continuous integration is a continuous process of merging all developers code to a central repository and validating each one’s merge with a successful build and automated unit tests.
We also studied the benefits of CI.
Now let us understand about Continuous Delivery, which is another important process in DevOps practice.
We know that the main objective of DevOps is to deliver continuously with small increments of value to customers.
So, in line with this objective, Continuous Delivery, CD, in short, is something like where the Team is always ready on ‘delivering any time’ to the production, instead of our age-old model of delivering only on the certain committed delivery date and sticking to that date alone.
Thus, continuous delivery is a pipeline or a life cycle of a code, where the code newly developed or updated by the software team, gets tested at different stages both through manual and automated tests and passes both the manual and automated stage gates and gets into production.
The main focus and objective of continuous delivery is to build, test and release to the customer quite faster and more frequently. You know faster and frequently refers to just a few hours in DevOps.
In short, Continuous delivery is an approach of delivering software in short cycles.
So, Obviously, CD intends to deliver value to the customer more frequently, by reducing the cost, increasing the speed of delivery, increasing the reliability and reducing the risk of delivering heavy chunks of code.
Hence, Continuous Delivery is a Process of delivering the software/Updates to production in smaller increments, ensuring that the software can be released at any time.
This is the diagrammatic representation of Continuous Delivery.
We will understand a little more detail about it.
Obviously when faster deliveries which focus on cost, time, quality and reliability is the objective of continuous delivery, then ‘Automation throughout’ is a must.
CD embraces the total automation for its complete cycle which starts with the code check-in, compiling and building, running automated unit tests, running acceptance testing and till the code is in the production and this pipeline is called ‘Automated deployment pipeline’.
So, in DevOps, continuous delivery is also called ‘Automated deployment pipeline’.
This will include few manual testing as well like ‘User acceptance testing’ which generally will be run by the end user and also few manual approval gates, as the code comes close to the production environment.
Well, the definition of CD pipeline and inclusion of different test phases, no of test phases and approval gates, either manual or automated depends on the organizations, based on the program requirement.
So, if you see this diagram, we can clearly say that continuous Delivery includes, two pipelines, one is built a pipeline which includes CI, which consists of automated build trigger, compiling, building and deploying.
The other one is the test pipeline which basically includes ‘continuous testing’ which we will discuss in the next block.
After understanding the continuous delivery approach, let us collate the benefits of continuous delivery.
Continuous delivery is an automated deployment pipeline and hence Obviously,
#1. Increases the number of deliveries
#2. CD is a short cycle as small as that runs in a few hours. So, CD being small and frequent deployments, it removes the higher risk of failure at production.
#3. Unless there is a mandated requirement of human intervention, everything in the pipeline, from start to finish is automated. So, a lot of manual works are reduced.
#4. Continuous delivery boosts confidence in the team and team will be ever prepared for ‘delivery to production’ and their mind will be constantly wired to the quality and the speed that is expected in the production
#5. Continuous delivery enables and enriches both development and Operations to automate everything in the pipeline, which includes development as well as operations activities, triggering, building, unit testing, deploying, defining infrastructure and environment configurations as code, higher levels of testing (functionality, security, performance, UI etc.,)
#6. Last but not least, Continuous delivery, being a short deployment cycle, helps the team in getting the faster feedback on the delivery, that too not just from the development environment, but also from the production environment and hence makes the software deliveries a low-stress activity or BAU, business as usual to the team.
With this, we are completing, learning about the continuous delivery approach and its benefits.
In our upcoming video, let us also understand, what is Continuous Deployment and how does it differ from Continuous Delivery. We will also learn about the continuous testing pipeline.