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

Chaka picture Chaka · Jan 21, 2016 · Viewed 11.6k times · Source

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

Answer

Tim Snow picture Tim Snow · Jan 21, 2016

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.