As more companies are moving towards distributed environments and the pressure to release software faster and more frequently increases, a new way of software delivery is needed to manage this constant risk of changes. That's where Progressive Delivery comes in. In part one of this series, we explained what Progressive Delivery is and its core components for a successful release strategy.
In this edition, we'll dive into the differences between Progressive Delivery and Continuous Delivery. But let me first explain what Continuous Delivery and Progressive Delivery is. OK - let's go!
What is Continuous Delivery?
First of all, it's important to understand that Continuous Delivery is an extension of Continuous Integration. Continuous Delivery is the ability to get changes of all types—including new features, config changes and bug fixes—into production, or into the hands of users, safely and quickly in a sustainable way.
The goal of continuous delivery is to turn deployments into small, predictable and efficient activities that can be performed on demand by engineering, SRE or DevOps teams. Because teams are delivering frequently, every change is smaller. Changes are more isolated and less risky. Problems are identified more readily, and bugs are fixed more easily because they are discovered immediately.
But still, when continuous delivery changes are made, these changes rely on a human decision.
The practices at the heart of continuous delivery helps organizations to achieve several important benefits such as a faster time to market, higher quality of software, lower costs and in the end - happier teams.
What is Progressive Delivery?
Progressive Delivery is the technique of delivering changes first to small, low risk user segments, and then expanding to larger and riskier user segments, continuously validating and observing the results as you go.
By gradually rolling out software into production, teams can reduce the risk of user-facing bugs or performance problems, the so-called ‘blast radius’, during a release. When something goes wrong in production it protects your customer experience with automated rollbacks.
An important aspect of Progressive Delivery is having the ability to de-couple deployment of software from releases of features.
A deploy or deployment includes all the technical activities that are needed to make a software system or feature available for use. Think of a Docker container running in a pod on the Kubernetes cluster. The piece of software passed all tests in your (CI/CD) pipeline, and is ready to receive traffic from production users, but it is not actually receiving any, yet.
A release comes after a deployment and includes all the activities that are needed to move part of, or all, production traffic to the new version. All the risks and things that could go wrong - downtime, lost revenue and a bad customer experience - are related to the release, and not deploy, to production. Releasing software is a risky activity that needs to be done in a slowly, controlled fashion.
That's what Release Orchestration tools (like Vamp.io) specialize in.
The Differences Between Continuous- and Progressive Delivery
Both practices are built for speed, but they each address a different challenge in the software development process:
- Continuous Delivery helps developers, DevOps and SREs to move faster by making each change small and manageable. Continuous Delivery ensures there is an automated way to push code changes through the development, testing and acceptance environments. The last step, deploying to production, is often done manually with little control.
- Progressive Delivery helps developers, DevOps and SREs to move faster AND safer by reducing the risk of each change by controlling the audience exposed and continuously validating the health, quality and performance. Progressive Delivery is focussed on automating and controlling the last step of the software delivery cycle: releasing and activating software for users.
Reduce Risk Associated With Continuous Delivery
We all know that achieving Continuous Delivery is hard. A lot of companies we've talked to are struggling with implementing this process.
And Progressive Delivery is here to make the adoption and implementation of Continuous Delivery a lot easier. It reduces the risk that's associated with Continuous Delivery. Progressive Delivery provides the automated safety nets and total control of releasing new software in production.
Think about it. You don’t drive on the highway without safety belts, don’t you?
Would you like to get started with ProgressiveDelivery and see how it benefit your current software delivery process? Request a free, 14 day trial right here and get access!