Earlier we
talked about Continuous Integration (CI). Continue with Continuous Delivery. This is a compilation of software development methods. It helps to ensure that the code is ready for deployment.
/ Pixabay / bluebudgie / PLStory
The combination of continuous delivery could be seen as early as the
agile manifest of 2001 at the beginning of the list of basic principles: “Priority is the solution of the customer’s problems with the help of continuous delivery of up-to-date software.”
')
In 2010, Jez Humble and David Farley published a
book on Continuous Delivery. According to the authors, the CD complements the
Continuous Integration approach and allows you to simplify the preparation of code for deployment.
After the publication of the book, the approach began to gain popularity and in just a couple of years it became almost universally accepted. According to a
survey conducted 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 that the DevOps and Jenkins Community IT-community attracted
, half of the more than 1,000 respondents use it.
How does Continuous Delivery work?
The CD basis is the readiness of the code for deployment. To accomplish this task, the automation of the process of preparing software for release is used. It should be standard for various development environments, which will help to quickly find weak spots and optimize them. For example, speed up testing.
An example of the Continuous Delivery process is as follows:

If the automation of the first two stages is the responsibility of the Continuous Integration approach, then the next two are Continuous Delivery. The stability of the process is provided, including through
configuration management systems. They monitor changes in infrastructure, databases, and dependencies. Deployment itself can be automated, or it can be done manually.
The process requires the following requirements:
- Availability of information on readiness for release in the production-environment and readiness for immediate release (CD-tools test the code and provide an opportunity 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 that is available to users of the product).
CDs usually use
code review , and
dark launching is used to collect customer
feedback . A new feature is first released for a small segment of users - their experience in interacting with the product helps to find flaws and bugs that were not noticed during internal testing.
What is the benefit
Continuous Delivery helps to simplify the deployment of code, which has a positive effect on productivity and reduces the likelihood of employee burnout. Ultimately, this reduces overall development costs. For example, a CD helped one of the HP teams
reduce such costs by 40%.
In addition, according to a 2016 study (page 28 of the
document ), companies that have implemented a CD solve problems with information security 50% faster than those who do not use the approach. To some extent, this difference can be explained by the operation of process automation tools.
Another plus is the acceleration of release releases. In the Finnish development studio, continuous delivery
helped increase the code build speed by 25%.
Potential difficulties
The first and main problem is the need to rebuild the usual processes. To show the benefits of the new approach, it is worth moving to a CD gradually, starting not with the most time-consuming applications.
The second potential problem is a large number of code branches. The consequence of "branching" - the frequent conflicts and the next loss 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 a possible solution may be parallelization of tests in the early stages of introducing a CD.
You should also train employees to work with new tools - a preliminary educational program will save developers time and effort.
/ Flickr / h.ger1969 / CC BY-SAInstruments
Here are some open source tools for Continuous Delivery:
- GoCD - server for continuous delivery to Java and JRuby on Rails. Allows you to control the entire delivery process of the application: build — test — release. The tool is distributed under the Apache 2.0 license. On the official site you can find a guide to setting up .
- 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 multiplatform 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 Go CD platform. Drone can be deployed on-premise or in the cloud. The tool is container-based and uses YAML files to manage them.
- Spinnaker is a platform for the continuous delivery of code in multi-cloud systems. Developed by Netflix, Google engineers played a big role in developing the tool. Installation instructions can be found on the official website .
What to read in our corporate blog: