Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between continuous integration, continuous delivery and DevOps?

I hear these terms together and wonder what is the difference? How are they related to continuous builds and continuous deployments?

like image 798
Chaka Avatar asked Jan 21 '16 03:01

Chaka


People also ask

What is the difference between continuous delivery and DevOps?

CI/CD is defined as a set of development practices that enable the rapid and reliable delivery of code changes. DevOps is defined as a collection of ideas, practices, processes, and technologies that allow development and operations teams to work together to streamline product development.

What are the difference between continuous integration continuous delivery and continuous deployment?

To put it simply continuous integration is part of both continuous delivery and continuous deployment. And continuous deployment is like continuous delivery, except that releases happen automatically.

Is continuous integration and delivery related to DevOps?

CI/CD is a best practice for devops teams. It is also a best practice in agile methodology. By automating integration and delivery, CI/CD lets software development teams focus on meeting business requirements while ensuring code quality and software security.

What is the difference between continuous delivery and continuous deployment in DevOps Mcq?

Continuous Delivery means complete delivery of the application to customer; Continuous Deployment includes only deployment of the application in customer environment.


2 Answers

Continuous integration / continuous builds is all about getting developers to commit code to a source code repository little and often (and get the latest version from the repository, so any further changes are based on other developers recent changes). This reduces the time wasted on merge resolution, as it's easier to merge in this case.

The process is best automated using a build server, which can also run any Unit Tests. Feedback is then provided to the developers in the case of a build / test failure, so that any issues can be fixed quickly.

Continuous deployment involves the automated deployment of the build artefacts from the build process onto the test and production environments. To mitigate the risk involved with this, people often use feature toggles to separate the release (in a controlled way) from the deployment.

Continuous delivery is less about the technology and more about the organisations approach to software delivery (although is does make heavy use of automation).

DevOps is a much larger area that generally emphasises breaking down barriers between developers and operations teams, and getting them to collaborate in a way where they benefit from combined skills. More automation of environment provisioning, build deployment, monitoring (and reacting automatically to problems and scalability), and in some cases software defined networks will come out of this in a company. In some organisations, dedicated DevOps team(s) has been created.

like image 147
Tim Snow Avatar answered Sep 28 '22 08:09

Tim Snow


Continuous Delivery (CD) is a concept that was first described in the 2010 book co-authored by Jez Humble and David Farley, both of ThoughtWorks.

Continuous Integration and Continuous Delivery often get confused with one another, but there are some key differences:

  • CI can be done by one dev where CD requires team collaboration
  • CD cannot be done without CI
  • CD is a linear journey where CI is a continuous feedback (build) loop moving CD forward
  • With CD you are always ready to push to prod
  • CI allows you to check your code into repo multiple times so you can detect your issues early on

Here is a quote from Martin Fowler:

"Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly."

The main difference between Continuous Delivery and Continuous Deployment, is automation. You automate the deployment side of things. This works well if you are pushing to production multiple times a day or for a variety of other reasons.

As for DevOps, that's a whole other ball of wax. People often think DevOps is a role or a tool, but it's really a culture. You don't "do" DevOps. Here's a quote from Mike Kavis that I like quite a bit:

"DevOps is a culture shift or a movement that encourages great communication and collaboration (aka teamwork) to foster building better-quality software more quickly with more reliability."

like image 24
Louda Peña Avatar answered Sep 28 '22 09:09

Louda Peña