Reference: what is Continuous Delivery

Previously we told about Continuous Integration (CI). Let's continue with Continuous Delivery. It is a set of software development methods. It helps to make sure that the code is ready for deployment.

Reference: what is Continuous Delivery
/Pixabay/ bluebudgie / PL

History

The phrase continuous delivery could be seen in agile manifest from 2001 at the top of the list of core principles: "The priority is to solve customer problems with the help of continuous delivery of up-to-date software."

In 2010, Jez Humble and David Farley released book by Continuous Delivery. As conceived by the authors, CD complements the approach Continuous Integration 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 practically accepted. According to surveyconducted 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 2018 study involving the DevOps and Jenkins Community of IT professionals, his uses 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 accomplish this task, automation of the process of preparing software for release is used. It should be standard for various development environments, which will help you quickly find weaknesses and optimize them. For example, speed up testing.

An example of a Continuous Delivery process looks like this:

Reference: what is Continuous Delivery

If the Continuous Integration approach is responsible for automating the first two stages, then Continuous Delivery is responsible for the next two. The stability of the process is ensured, among other things, by systems configuration management. They monitor changes in infrastructure, databases, and dependencies. The 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 readiness for direct release (CD tools test the code and make it possible to evaluate the effect of changes in the release).
  • Shared 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 reviews, and for collecting customer opinions - the principle dark launching. A new feature is first released for a small segment of users - their experience of interacting with the product helps to find flaws and bugs that were not noticed during internal testing.

What is the benefit

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

In addition, according to a 2016 study (page 28 document) - companies that have implemented 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 work of process automation tools.

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

Potential Challenges

The first and main problem is the need to rebuild the usual processes. To show the benefit of the new approach, it is worth switching to CD gradually, starting with not the most labor-intensive applications.

The second potential problem is the large number of code branches. The consequence of the “branching” is frequent conflicts and another loss of a large amount of time. Possible Solution - Approach no branches.

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 to parallelize the tests in the early stages of CD implementation.

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

Reference: what is Continuous Delivery
/flickr/ h.ger1969 / CC BY-SA

Tools

Here are a few open source tools for Continuous Delivery:

  • GoCD - server for continuous delivery on Java and JRuby on Rails. Allows you to control the entire application delivery process: build-test-release. The tool is distributed under the Apache 2.0 license. On the official website you can find 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 by 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 - a platform for CD in the Go language. Drone can be deployed on-premise or in the cloud. The tool is built around containers and uses YAML files to manage them.
  • Spinnaker is a platform for continuous delivery of code in multi-cloud systems. Developed by Netflix, Google engineers played a big role in the development of the tool. installation instructions you find it on the official website.

What to read in our corporate blog:

Source: habr.com

Add a comment