Reference: What is Continuous Delivery

Earlier, we , that over the past three years, the company has spent $30 billion on expanding its data center network. Since then, this figure has only increased. 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.

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

History

The phrase continuous delivery can be seen in the Agile Manifesto 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 a book on Continuous Delivery. According to the authors, CD complements the approach Continuous Integration. 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 a survey, 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 use 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:

Reference: What is Continuous Delivery

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. They monitor changes in infrastructure, databases, and dependencies. Deployment itself can be automated or performed manually.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 code review, and for gathering customer feedback—the principle of dark launching. 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 reduce such costs by 40%.

In addition—according to a 2016 study (page 28 Housing: rent and mortgage)—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 helped 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 no branches.

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.

Reference: What is Continuous Delivery
/ Flickr / h.ger1969 / CC BY-SA

Tools

Let's list some open tools for Continuous Delivery:

  • GoCD — 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 setup guide.
  • Capistrano — 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.
  • Gradle — 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.
  • Drone — 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.
  • Spinnaker — 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 on the official website.

What to read in our corporate blog:

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster