Kicking off our first part of a four-part series, we at Vamp will help you become an expert in the Progressive Delivery world. 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. Let's get started!
What is Progressive Delivery?
Progressive delivery is a new and modern software development and DevOps/SRE strategy for gradually releasing new software in order to limit the potential negative impact and continuously improve the customer experience. It's a practice that builds on the capabilities of Continuous Integration (CI) and Continuous Delivery (CD) and it's the missing element that connects your CI/CD pipeline to your most important asset: your end-users and customers.
The strategy works by progressively increasing groups of user segments to your new software version and continuously evaluating the results before exposing the new service version to the next user segment. This is especially useful if your KPIs include real-time measures of customer behaviour as well as technical performance KPIs. By gradually rolling out, teams can reduce the risk of user-facing bugs or performance problems, the so-called ‘blast radius’, during a release.
The term Progressive Delivery was coined by James Governor (co-founder of RedMonk) who wanted to capture a wide range of new software development practices that went beyond just continuous integration and continuous delivery.
“Progressive delivery is continuous delivery with fine-grained control over the blast radius.” — James Governor, RedMonk
Core Components of Progressive Delivery
The following components are critical for every progressive delivery strategy:
- Automation: manually releasing each and every update is insufficient and error-prone. That's why you need automation. Automation allows anyone to release fast and frequently with the push of a button. It ensures consistent, repeatable and safe releases. It automates the rollout and protects your customer experience with automated rollbacks. Automation is key to enable Progressive Delivery in your organization.
- User segmentation & traffic management: progressive releases use condition-based, traffic shaping to control which groups of users are presented with the new version of a service. Depending on the type of Ingress you are using and whether you are using a service mesh, this user segmentation can use a combination of HTTP headers, cookies and/or IP-address ranges, as well as other relevant L7 information.
- Observability: observability is about knowing what's happening with your released software from a technical AND business perspective. It's about making your data (APM, cloud/infra, Google Analytics etc) actionable during the release cycle. The addition of these telemetry gives you even richer insights and observability into the performance of your services which is essential for accurately and automatically diagnosing issues and preventing future occurrences.
The Benefits of Progressive Delivery
Progressive Delivery allows your development, DevOps and SRE teams to get precise control during your "go-live" moment. This will provide your teams with the following benefits:
- The capability to quality control the features as they are distributed.
- Limited blast radius and users affected if the features don’t work correctly or as expected.
- Increase time-to-market with a release pipeline that enables teams working on different microservices with different release frequencies to release independently.
- It enables a continuous feedback loop for developers and product owners. Based on real-time results teams can decide to rollback or roll forward the release to the next user segment.
- The business is able to take control. Less technical employees, such as product owners, marketing or sales, can release the features to the users based on separate business timelines. This frees up the developers to swiftly move on to other high-priority projects.
Separation of Concerns
Developers build and test features. They make sure it works - from a technical perspective. But once the software has been tested, it makes more sense for a Product Owner, for example, to control the process of launching and going live with a feature or update. Progressive Delivery places the control of when and to whom to release a new feature in the hands of Product Owners, making it a business decision not a technical one.
Still, developers and DevOps team remain in control of what is deployed and when. They have control over technical releases such as emergency fixes and planned technical improvements.
This is especially powerful if your business is required to comply with legal or other regulatory requirements before releasing a feature to users. It is also invaluable if you need to rollout new features across multiple applications, for example as part of a regional or multi cloud SaaS solution.
Vamp Is Your Partner On Your Progressive Delivery Journey
Vamp provides a Continuous Release Orchestration solution that helps software teams to release software faster and more frequently for a great customer experience. It provides a robust way for teams that want to adopt Progressive Delivery to make their release process more resilient while proving the value of what they are building. Vamp is your partner and we're here to help.
If you have any questions about Progressive Delivery and want to learn about best practices, feel free to schedule a guided tour to talk to our industry experts. We've helped tons of companies with automating and improving their release processes!