Continuity is the heart of the DevOps lifecycle and people often get confused between the terms Continuous Delivery and Continuous Deployment. In this blog on Continuous Delivery vs Continuous Deployment, I’m going to compare these two highly conflicting terms in the industry.
So, before I deep dive into differentiating these terms, let me brief you about DevOps first.
What is DevOps?
DevOps is basically a software development strategy that bridges the gap between the dev side and the ops side of the company. In simple terms, you can say that DevOps is, how a developer gets a new feature, an enhancement request, or a change out to production, so that, when the customers give feedback, the developers can improve based on that feedback.
But, what are the factors that developers can work on?
Well, developers can work on mainly 3 important factors:
- The software which is delivered.
- The efficiency and performance of the environment to which the software is delivered.
- Making the process of delivering software more efficient, capable and faster at a lower cost.
So, when you deliver software it’s not just delivering it to the production, but, there’s an entire software delivery lifecycle involved with it.
As you can refer to the diagram, the developers build the software and store it in a software configuration management or version control system. After that, the QA environments assure the quality, and the system integration test, user acceptance test is performed. Finally, when the software passes through all these stages, it reaches production where the software actually runs and customers interact with it.
Now, the environments in which developers are working might be the same as the environments, customers are working in, but the configurations may differ. So to match these configurations, automated deployment is required.
Automated deployment is the ability to get software deployed in any environment at any given time and Continuous Delivery is the capability to deploy this software to any particular environment at any given time.
Now, you might have heard about large web companies deploying changes every day, all the way onto their prod servers.
Continuous Delivery vs Continuous Deployment
Now that you have a basic understanding of both the terms let me define Continuous Delivery and Continuous Deployment for you.
Continuous Delivery
Continuous Delivery is a software development practice where you build software in such a way that the software can be released to production at any time.
You achieve Continuous Delivery by continuously integrating the products built by the development team, running automated tests on those built products to detect problems and then push those files into production-like environments to ensure that the software works in production.
The benefit of continuous delivery lies in the fact that the code is ready to deploy at all times. So, as you can see here the Quality Assurance team tests if each feature is working or not, and then they manually deploy it to production based on the need of business to increase the quality and velocity of the product. So, each and every change is not deployed on to the production.
Now, let me tell you how different is Continuous Deployment from Continuous Delivery.
Continuous Deployment
Continuous deployment means that every change that you make, goes through the pipeline, and if it passes all the tests, it automatically gets deployed into production. So, with this approach, the quality of the software release completely depends on the quality of the test suite as everything is automated.
For example, if you have a function to check various conditions in the test suite, then in Continuous Delivery a manual test can be performed to check the quality of the function. So, if anyone finds out that there could more cases included in that particular function, then it would not be deployed on to production.
But, in the case of Continuous Deployment there would be no approval required, so that function would be automatically deployed onto the prod servers.
So, if we have to summarize in a single line, then, in the world of DevOps using Continuous Deployment, there’s no release approval required. So, the code moves automatically from the developer site to the production site, which is not the case with continuous delivery.
It is always recommended that we should not use, Continuous Deployment as we need to consider many factors before releasing the software like marketing the product before it’s out to the world, but we must do Continuous Delivery so that we have the capability to deliver the software to any given environment at any given time.
Have you ever wondered if there is any case of Continuous Deployment with Continuous Delivery?
Continuous Delivery with Continuous Deployment
Well, there are many cases where you use both of them. Let me show you one example:
Consider a situation where a customer finds out a bug in the software and sends feedback to the Dev team.
The Dev team has to recreate that bug as quickly as possible and then fix it. So, in such emergency situations if the team uses continuous delivery then they have the ability to provide an environment that has the same configuration as that of the customer, to deploy the right version of the software to that environment and use automated testing to assist every change. Since the final steps are fully automated Continuous Deployment quickly solves the problem.
Therefore, not skipping any step, but ensuring that fixes are quickly tested and implemented, and delivering the highest possible quality make Continuous Delivery and Continuous Deployment go hand in hand.
So, hopefully, that distinguishes for you that Continuous Delivery is a capability that you must have and a Continuous Deployment is an option you might choose based on the kind of products you’re delivering.
If you wish to check out more articles on the market’s most trending technologies like Artificial Intelligence, DevOps, Ethical Hacking, then you can refer to Edureka’s official site.
Do look out for other articles in this series that will explain the various other aspects of DevOps.
2. Git Tutorial
9. How To Orchestrate DevOps Tools?
13. Continuous Delivery vs Continuous Deployment
14. CI CD Pipeline
15. Docker Compose
16. Docker Swarm
18. Ansible Vault
19. Ansible Roles
20. Ansible for AWS
21. Jenkins Pipeline
23. Git vs GitHub
24. Top Git Commands
25. DevOps Interview Questions
28. Git Reflog
30. Top DevOps Skills That Organizations Are Looking For
33. Ansible Interview Questions And Answers
34. 50 Docker Interview Questions
36. Jenkins Interview Questions
39. Linux commands Used In DevOps
42. Nagios Interview Questions
44.Difference between Jenkins and Jenkins X
46.Git vs Github
Originally published at https://www.edureka.co on July 23, 2018.