Continuous Delivery is a set of software development methods. It helps to ensure that the code is ready for deployment.

History

The combination of continuous delivery could be seen in the agile manifest from 2001 at the beginning of the basic principles list: “Priority is the solution of customer problems using the continuous supply of relevant software.”

In 2010, Jez Humble and David Farley released Continuous Delivery. According to the authors, the CD complements the Continuous Integration approach and makes it easier to prepare the code for deployment.

After the publication of the book, the approach began to gain popularity and in just a couple of years became almost universally accepted. According to a survey among more than 600 developers and IT managers in 2014, 97% of technical managers and 84% of programmers were familiar with Continuous Delivery.

Now this approach remains one of the most popular. According to a 2018 study involving the DevOps and Jenkins Community IT community, half of the more than a thousand respondents use it.

How Continuous Delivery Works

The basis of the CD is the readiness of the code for deployment. To accomplish this task, is used automation of the software preparing process for release. It should be standard for various development environments, which will help you quickly find weaknesses and optimize them. For example, speed up testing.

If the Continuous Integration approach is responsible for the automation of the assembly and unit tests, then Continuous Delivery is responsible for the rest. Stability of the process is ensured, among other things, by configuration management systems. They monitor changes in infrastructure, databases, and dependencies. Deployment itself can be automated, or it can be done manually.

The process has the following requirements:

  • Availability of information about readiness to enter the production environment and immediate release (CD tools test the code and make it possible to evaluate the effect of changes in the release).
  • Overall responsibility for the final product. The product team – managers, developers, testers – think about the result, and not just about their area of ​​responsibility (the result is a working release, which is available to users of the product).

A CD usually uses code review, and the principle of dark launching is used to collect customer opinions. First, a new feature is released for a small segment of users – their experience with the product helps to find flaws and bugs that weren’t noticed during internal testing.

What is the benefit

Continuous Delivery helps to simplify code deployment, which has a positive effect on productivity and reduces the possibility of employee’s burnout. Ultimately, this reduces overall development costs. For example, a CD helped one of the HP teams to reduce such costs by 40%.

In addition, according to a 2016 study, companies that implement the CD solve problems with information security 50% faster than those who don’t use the approach. Actually, this difference can be explained by the work of process automation tools.

Another plus is the acceleration of releases publishing. In the Finnish development studio, continuous delivery helped to increase code assembly speed by 25%.

Potential difficulties

The first and main problem is the need to rebuild familiar processes. To show the benefits of the new approach, you should switch to the CD gradually, starting not with the most labor-intensive applications.

The second potential problem is a large number of code branches. The consequence of the “branching” is frequent conflicts and subsequent losses of a large amount of time. A possible solution is the no branches approach.

In particular, in some companies, the main difficulties arise with testing – it takes too much time. Test results often have to be analyzed manually, but parallelization of tests in the early stages of CD implementation may be a possible solution here.

You should also train employees to work with new tools – a preliminary educational program will save developers time and effort.

Instruments

Here are a few open tools for Continuous Delivery:

  • GoCD is a server for continuous delivery in Java and Ruby on Rails. Allows you to control the entire application delivery process: build — test — release. The tool is licensed under Apache 2.0. On the official website you can find the setup guide.
  • Capistrano – a framework for creating scripts that automate the deployment of applications in Ruby, Java or PHP. Capistrano is able to execute commands on a remote machine, connecting to it via SSH. Works with other continuous integration and delivery tools, such as the Integrity CI server.
  • Gradle is a multi-platform tool that automates the entire application development cycle. Gradle works with Java, Python, C / C ++, Scala, etc. There is integration with Eclipse, IntelliJ, and Jenkins.
  • Drone is a platform for GoCDs. Drone can be deployed on-premise or in the cloud. The tool is built on the basis of containers and uses YAML files to manage them.
  • Spinnaker is a platform for continuous delivery of code in multi-cloud systems. Developed by Netflix, a large role in the development of the tool was played by Google engineers. Installation instructions can be found on the official website.