Continuous Delivery vs Continuous Deployment

Vishal
Edureka
Published in
6 min readJul 23, 2018

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.

Fig 1: DevOps Methodology — Continuous Delivery vs Continuous Deployment

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.

Fig 2: Continuous Delivery — Continuous Delivery vs Continuous Deployment

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.

Fig 4: Difference Between Continuous Delivery & Continuous Deployment — Continuous Delivery vs Continuous Deployment

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.

1. DevOps Tutorial

2. Git Tutorial

3. Jenkins Tutorial

4. Docker Tutorial

5. Ansible Tutorial

6. Puppet Tutorial

7. Chef Tutorial

8. Nagios Tutorial

9. How To Orchestrate DevOps Tools?

10. Continuous Delivery

11. Continuous Integration

12. Continuous Deployment

13. Continuous Delivery vs Continuous Deployment

14. CI CD Pipeline

15. Docker Compose

16. Docker Swarm

17. Docker Networking

18. Ansible Vault

19. Ansible Roles

20. Ansible for AWS

21. Jenkins Pipeline

22. Top Docker Commands

23. Git vs GitHub

24. Top Git Commands

25. DevOps Interview Questions

26. Who Is A DevOps Engineer?

27. DevOps Life cycle

28. Git Reflog

29. Ansible Provisioning

30. Top DevOps Skills That Organizations Are Looking For

30.Waterfall vs Agile

31. Jenkins CheatSheet

32. Ansible Cheat Sheet

33. Ansible Interview Questions And Answers

34. 50 Docker Interview Questions

35. Agile Methodology

36. Jenkins Interview Questions

37. Git Interview Questions

38. Docker Architecture

39. Linux commands Used In DevOps

40. Jenkins vs Bamboo

41.Nagios Tutorial

42. Nagios Interview Questions

43.DevOps Real-Time Scenarios

44.Difference between Jenkins and Jenkins X

45.Docker for Windows

46.Git vs Github

Originally published at https://www.edureka.co on July 23, 2018.

--

--