Plutora Blog - Deployment Management, Release Management
What Does Continuous Delivery Management Mean?Reading time 7 minutes
Continuous Delivery is a trend that is taking the software industry by storm, and Continuous Delivery Management (CDM) is a new approach to release management that provides both transparency and a governance structure to manage continuous delivery across a large software enterprise. CDM is a developing focus area designed to apply the benefits of continuous delivery on a single project across multiple projects at once catering to the variations in release cadence and the orchestration necessary to apply this practice across an entire portfolio of software projects.
Continuous Delivery Benefits Individual Projects
The idea behind continuous delivery is that software doesn’t have to sit around for days or weeks waiting to be tested and qualified before it can be published to production. Instead of waiting a continuous deployed system is sent through a series of automated tests after every single commit to a central source code repository. At this stage the system is compiled, tested, and deployed to integration servers all while tests are being executed as the system changes.
A continuous deployment and integration pipeline (CDI) consists of a continuous integration server alongside a system designed to apply automated tests in an effort to qualify a change for release to production. When an organization creates a CDI pipeline it is creating a system to qualify every change as ready to deploy to production. CDI also encompasses the creation of systems designed to automate the “last-mile” delivery to production.
No Set Standard for Continuous Delivery
When a project practices CDI it releases frequently, but there’s no set rate that qualifies a system as continuous. On one end of the spectrum, some organizations practicing continuous delivery deliver software to production multiple times a day. On the other end of the spectrum, some organizations use a CDI pipeline to deploy to a staging system after every commit, but continue to conduct regular, weekly or biweekly releases to production that are more manual and which involve more traditional governance gates before code is pushed to production.
In this way continuous delivery isn’t standardized across the industry. It is an established practice at media and technology-focused startups that is now becoming more prevalent in the enterprise, and there are a wide range of interpretations about the frequency of deployments that qualify a system as being “continuously deployed.” Thus the need for Continuous Delivery Management.
Internal Variation in the Enterprise
The enterprise was quick to adopt continuous integration practices from both open source projects and SMBs, and continuous delivery is following a similar trajectory. As deployment automation and configuration management tools that have come to define the DevOps space continue to mature alongside tools such as Atlassian Bamboo and Jenkins the pace at which large enterprises are adopting these tools continues to accelerate. Even as practitioners still debate the pros and cons of fully automating production deploys, big business continues to march toward continuous delivery.
In large corporations supporting systems exposed to significant risk continuous delivery pipelines have not yet made in-roads into the production release process. In these organizations a CDI pipeline is used to populate staging continuously while releases are still run by a team of release engineers. Releases for the riskiest systems are still manual.
On the other hand, even in a large enterprise it is increasingly common for isolated, greenfield development projects to conduct frequent deployments to production in an effort to improve productivity and accelerate time-to-market. While a large, multi-national corporation may still run manual releases for a back office payment processing system it may be running a continuous delivery pipeline to deploy the web site to production multiple times a day, and several teams may be conducting other continuous deployments at yet a different cadence.
In these organizations the challenge lies in supporting a diversity of approaches to Continuous Delivery Management. How does one model and plan software releases in an organization practicing both planned releases and releases on demand? And, as the industry shifts to a fully self-service, continuous delivery model how can release managers adapt to these changes and create systems to encourage good CDI governance?
Prepare the Runways: Multiple Continuous Projects Inbound
When some of your projects are delivering once a day in a continuous delivery pipeline and others are delivering once a week your challenge becomes managing and tracking change across a production system. When your overall system needs to conduct a release that may require downtime or coordinated effort, how do you corral the teams using CDI into the process while preserving some sense of agility?
When you are running a busy “airport” of software releases you need to have tools that can track and manage these continuous delivery projects as they happen so you can properly manage the runways. If you have two continuous delivery projects that can ship to production at any moment how do you predict requirements for test environments for the projects that haven’t yet adopted CDI?
If you have slower-moving projects that require you to place construction signs in the path of these faster-moving projects how do you communicate this to self-service CDI projects ahead of time? All of this calls for some level of release governance.
The Need for Continuous Delivery Management Across a Portfolio
As more enterprises embrace continuous delivery more enterprises understand the complexities and nuances of running continuous delivery correctly. The path to success across a large enterprise embracing continuous delivery isn’t to just point a hundred projects at the necessary tools, step back, and wait for each to develop an independent release cadence. Enterprises achieve more efficient continuous release cadences when each project operates within a framework to support agility.
There are some simple steps you can take to provide such a framework with Plutora:
1. Categorize and classify projects based on the degree to which they have adopted Continuous Delivery release patterns
Are they going to be releasing on a daily cadence? If so then you need to route other dependencies around this project and make sure that you are accounting for constant changes? Are your “continuous” projects closer to a weekly delivery cadence reserving the “continuous” portion of the deployment pipeline for staging and integration servers? If so you need to understand how the project decides when to release and you need to be able to predict when (and if) the project may transition to a more continuous approach to deployments.
2. Use a tool to give you end-to-end visibility across the portfolio
Continuous delivery is a powerful step toward more efficient and more responsible enterprise software delivery, but it’s also something that management will want to understand. How are you mitigating the risks that accompany developer-driven releases? Who is ultimately responsible for a bug introduced in an upstream system? As your teams move to more continuous deployments they are likely going to need a referee watching for policy violations or decreases in quality. You are changing the rules of the game with continuous delivery, but this doesn’t mean that the old rules completely disappear.
3. Set policy and standards for continuous delivery projects
If a project is moving to a continuous delivery model you need to set standards for what is and what is not production-ready. If a project just thinks that they are going to magically assume novel development practices and deliver to production every single day after conducting monthly releases for the last decade they are in for a surprise. Developing code and designing systems amenable to Continuous Delivery Management is like a new software engineering discipline, and you are going to want to provide some time for projects and teams to get comfortable with the new powers that accompany continuous delivery.