Continuous Delivery

Mindset-Icon Continuous-Delivery Black-Green

In organizations that have achieved the Continuous Delivery Mindset, emphasis is placed on the process of turning code into value by moving it through development pipelines and into the hands of the end user. These organizations have adopted best practices around the automation of the entire release process. This includes best practices around DevOps through dynamic infrastructure, automated testing, infrastructure as code, and frequent releases.

In organizations that have achieved the Continuous Delivery Mindset, emphasis is placed on the process of turning code into value by moving it through development pipelines and into the hands of the end user.

An organization that has highly optimized this chain and is able to release code on a regular predictable cycle is said to be practicing Continuous Delivery. Martin Fowler defines Continuous Delivery as “… a software development discipline where you build software in such a way that the software can be released to production at any time.”1

A good deal of research has been done in the last few years on organizations that employ this practice through DevOps. These “high-performing organizations deploy code 30 times more frequently than their peers.”2 In addition, “these organizations have 60 times fewer failures in the first place and recover 168 times faster when an incident does occur.”3 These numbers are in stark contrast to traditional organizations which deliver new digital value infrequently and usually with many failures or setbacks in the deployment process.

In most organizations, the tasks of implementing Continuous Delivery occurs through a set of best practices known as DevOps. In many organizations, this is a dedicated team that focuses on bridging the gap between development and operations. While there is a good deal of confusion around what DevOps is and what it is responsible for, in the end it is simply a means to realizing Continuous Delivery.

Continuous Delivery Infographic

Characteristics

Organizations that have adopted the Continuous Delivery Mindset embrace the following four practices:

Frequent Releases

During the time between development of a product or feature and the release of that product or feature, no value is being received by the organization or its customers. Code developed but not yet released is inventory sitting in the warehouse. The ideal organization minimizes this waste by delivering frequent iterative updates.

Automating Testing and Deployment

The Ideal State Organization streamlines the release of software by implementing a high degree of automation during testing and deployment. This automation may be augmented by human oversight, but as an organization’s Continuous Delivery Mindset matures, the human overhead is greatly reduced.

This automation may be coordinated by a standalone server such as Jenkins, Bamboo, or TeamCity, or via a continuous integration service such as Travis CI, Circle CI, or Codeship. Some automation may rely on other software and services such as Chef or Puppet. Automated processes should include some or all of the following:

  • Unit testing
  • Syntax and style testing
  • Code quality and security testing
  • Functional testing
  • Smoke and load testing
  • Production deployment processes

Dynamic Infrastructure

The shift toward dynamic infrastructure has taken many different forms. While hardware virtualization solutions have been around for decades, application virtualization and containerization approaches have matured greatly. A majority of the modern players in PaaS (Platform as a Service) are relying on container solutions like Docker and Cloud Foundry’s Garden. While these approaches differ greatly, the core concept is the same: encapsulating an experience in a portable unit which is decoupled from a physical server.

In most cases, organizations choose to adopt a cloud-based or hybrid-cloud implementation for their dynamic infrastructure. For most organizations, that means building a relationship with at least one of the top four cloud providers: Amazon Web Services, Microsoft Azure, Google Cloud Platform, and/or IBM Bluemix. The goal of leveraging one of these providers is to allow you to scale and provision almost instantly—to decouple that process from the traditional hardware acquisition and installation process.

Infrastructure as Code

At its core, an organization that successfully realizes the Continuous Delivery Mindset is one that has mastered the science of automation. While many organizations have automated pieces of the development, testing and deployment workflow, few have scripted the entire process.

In today’s rapid innovation climate, successful organizations are treating infrastructure in the same way they are treating their code. Solutions like Ansible, Terraform, Chef, Puppet, and AWS CloudFormation provide the ability for organizations to maintain every detail about infrastructure in a set of files that can be versioned. In this manner, environments can be provisioned and destroyed as needed with the assurance that each environment created with the same code will be identical.

Pain Points

Organizations that do not adopt a Continuous Delivery Mindset can encounter these pain points:

Excessive Lead Time

The most obvious pain point tied to organizations that do not embrace Continuous Delivery is excessive lead time between the start of development and the time in which the solution is deployed to end users. Forrester reported that:

“Half of business leaders now expect projects to be delivered within six months, 70% of those same companies admit it takes longer than that. In fact, 40% of companies admit that it takes more than a year for IT departments to produce solutions to support innovative ideas”4

In many cases, this is due to dependence on lengthy manual testing, delayed compliance and security validation, and error-prone manual deployment and configuration.

Deployment Risk

When organizations ship a large monolithic release, there is usually extensive risk involved. Because this is such an infrequent process, each step has to be painstakingly planned and executed with team members. In many organizations, deployments may fail as much as half the time, and the teams will have no idea if the deployed experience can handle the full load of users/traffic in the production environment.

Conclusion

The Continuous Delivery Mindset plays a key role among the core mindsets of the Digital Continuum. Unlike many of the other mindsets, this one is focused primarily on one section of the Value Delivery flow. However, this should in no way diminish its value, as it one of the best ways for organizations to reduce their sustainably shortest lead time in delivering digital value to their users.

References