Earlier, we Continuous Integration (CI). Let's continue with Continuous Delivery. This is a set of software development methods. It helps ensure that the code is ready for deployment.
/ Pixabay / /
History
The phrase continuous delivery can be seen in the from 2001 at the beginning of the list of core principles: "Priority is to satisfy the customer through early and continuous delivery of valuable software."
In 2010, Jez Humble and David Farley published on Continuous Delivery. According to the authors, CD complements the approach and simplifies the preparation of 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 , conducted among more than 600 developers and IT managers in 2014, 97% of technical leaders and 84% of programmers were familiar with Continuous Delivery.
Today, this approach remains one of the most popular. According to a study conducted in 2018, involving the IT specialists community DevOps and Jenkins Community, its half of the more than a thousand respondents.
How Continuous Delivery Works
The basis of CD is the readiness of the code for deployment. To achieve this, automation of the software release preparation process is used. It should be standard for various development environments, which helps quickly identify weaknesses and optimize them. For example, speeding up testing.
An example of a Continuous Delivery process looks like this:

If the first two stages are automated by the Continuous Integration approach, the next two are handled by Continuous Delivery. The stability of the process is ensured, among other things, by configuration management systems. The process has the following requirements:
Availability of information about readiness for production environment release and readiness for immediate release (CD tools test the code and allow assessing the effect of changes in the release).
- Доступность информации о готовности к выходу в production-среду и готовность к непосредственному релизу (CD-инструменты тестируют код и дают возможность оценить эффект от изменений в релизе).
- Overall responsibility for the final product. The product team—managers, developers, testers—focuses on the outcome, not just their area of responsibility (the outcome is a working release that is accessible to the product users).
In CD, it is common to apply , and for gathering customer feedback—the principle of . The new feature is initially released to a small segment of users—their interaction experience with the product helps identify shortcomings and bugs that were not noticed during internal testing.
What is the benefit of
Continuous Delivery helps simplify code deployment, which positively impacts productivity and reduces the likelihood of employee burnout. Ultimately, it also decreases overall development costs. For instance, CD helped one of the HP teams such costs by 40%.
In addition—according to a 2016 study (page 28 )—companies that implemented CD resolve security issues 50% faster compared to those who do not use the approach. To some extent, this difference can be attributed to the use of automation tools in the process.
Another plus is the acceleration of release delivery. In a Finnish development studio, continuous delivery increase code build speed by 25%.
Potential complexities
The first and main issue is the need to restructure familiar processes. To demonstrate the benefits of the new approach, it is advisable to transition to CD gradually, starting with the less labor-intensive applications.
The second potential problem is the large number of code branches. One consequence of "branching" is frequent conflicts and the recurring loss of significant amounts of time. A possible solution is the .
approach. Specifically, in some companies, major difficulties arise with testing—it takes too much time. Test results often have to be analyzed manually, but a potential solution could be parallelizing tests in the early stages of CD implementation.
It is also important to train employees on the new tools—a preliminary crash course will save developers effort and time.

/ Flickr / /
Tools
Let's list some open tools for Continuous Delivery:
- — a server for continuous delivery in Java and JRuby on Rails. It allows you to control the entire application delivery process: build—test—release. The tool is distributed under the Apache 2.0 license. You can find .
- — a framework for creating scripts that automate the deployment of applications in Ruby, Java, or PHP. Capistrano can execute commands on a remote machine, connecting via SSH. It works with other continuous integration and delivery tools, such as the CI server Integrity.
- — a multi-platform tool that automates the entire application development cycle. Gradle works with Java, Python, C/C++, Scala, and more. It integrates with Eclipse, IntelliJ, and Jenkins.
- — a platform for CD in Go. Drone can be deployed on-premise or in the cloud. The tool is based on containers and uses YAML files to manage them.
- — a platform for continuous code delivery in multi-cloud systems. Developed at Netflix, Google engineers played a significant role in the tool's development. You can find the installation instructions .
What to read in our corporate blog:
Source: habr.com
