Background: what is Continuous Delivery

    Earlier we talked about Continuous Integration (CI). Continue with Continuous Delivery. This is a set of software development methods. It helps to ensure that the code is ready for deployment. / Pixabay / bluebudgie / PL




    History


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

    In 2010, Jez Humble and David Farley released a book on 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 the surveyconducted 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, 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 the Continuous Delivery process is as follows:



    If the Continuous Integration approach is responsible for the automation of the first two stages, then Continuous Delivery is responsible for the next two. Stability of the process is ensured, among other things, due to 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 readiness for 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 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 employees 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 CDs are 50% faster at solving IS problems compared to 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 release releases. In the Finnish development studio, continuous delivery helped 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, it is worth moving 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.

    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-SA

    Instruments


    Here are a few open tools for Continuous Delivery:

    • GoCD is a server for continuous delivery in Java and JRuby 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 Go CD platform. 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 .

    What to read in our corporate blog:


    Also popular now: