DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Last call! Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

  1. DZone
  2. Refcards
  3. Progressive Delivery Patterns and Anti-Patterns
refcard cover
Refcard #324

Progressive Delivery Patterns and Anti-Patterns

Faster, Safer, Data-Driven Releases

Progressive delivery emerged as a natural response to concerns raised by the idea of “continuous” anything. If teams were going to move faster and release more often, then the surface area for things going wrong would likely be bigger. How could that be managed? And better still, how could risk be reduced while simultaneously increasing the value of moving fast? All of these questions are answered through progressive delivery.

Download Refcard
Free PDF for Easy Reference
refcard cover

Written By

author avatar Dave Karow
Principal Progressive Delivery Advocate, Harness
Table of Contents
► Introduction ► The Rise of CI/CD ► What Is Progressive Delivery? ► Benefits of Progressive Delivery ► Common Patterns ► Implementing the Feature Delivery Pattern ► Final Thoughts
Section 1

Introduction

Best practices for developing, building, deploying, and operating software have evolved significantly over the last two decades. Software delivery cycles no longer take 18 months, or even six months; it’s now just a matter of weeks, days, or even hours. Two of the biggest developments were the adoption of continuous integration and continuous delivery (CI/CD).  


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 2

The Rise of CI/CD

Continuous Integration

The original idea behind continuous integration was to find problems faster, and to get away from postponing problem discovery, merging issues, and identifying bugs until late in the process when they are harder to resolve. 

CI challenged people to focus on building smaller chunks of their solution at a time and to use mocks or virtual services so that each commit could be checked in on its own, and yet, they could still be tested and validated if other bits weren’t ready. 

Continuous Delivery

Then along came continuous delivery, the “radical” idea that deployments shouldn’t be labor-intensive, high-drama, multi-hour events that must happen outside of normal business hours. 

Continuous delivery sought to lower the cost (in time and talent) of delivering change. This goal of frequency and low drama required better ways to limit risk and observe the business impact.   


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 3

What Is Progressive Delivery?

Progressive delivery emerged as a natural response to concerns raised by the idea of “continuous” anything; if teams were going to move faster and release more often, then the surface area for things going wrong would likely be bigger. How could that be managed?  And better still, how could risk be reduced while simultaneously increasing the value of moving fast? 

The actual term was born out of a conversation between Sam Guckenheimer (head of product for Azure DevOps) and Redmonk Analyst, James Governor. Sam was describing Azure DevOps’ staged deployments around the world and how they used feature flags to gradually expose functionality to particular users. Sam called that practice “progressive experimentation”: 

“Well, when we’re rolling out services. What we do is progressive experimentation because what really matters is the blast radius. How many people will be affected when we roll that service out and what can we learn from them?” 


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 4

Benefits of Progressive Delivery

Reduce Downtime 

We used to accept planned outages for “system upgrades” as mildly annoying but normal. Not anymore. No one enjoys logging onto a website to see a message declaring that the system is temporarily down for maintenance, or to launch a mobile app and find it mysteriously unresponsive. 

For services that are consumed by other services (such as credit card processing, shopping cart providers, and authentication providers), planned downtime isn’t just annoying, it’s simply unacceptable. This is the first goal of progressive delivery — to get away from bringing down an entire service just to install a new release. 


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 5

Common Patterns

Now that we have a better understanding of where progressive delivery came from and the goals it helps achieve, let’s move on to four common patterns for implementation and see how each helps us meet one or more of those goals. 

In this section, we identify four of the most common patterns for progressive delivery: blue-green deployments, canary releases, feature flag rollout, and feature delivery platforms. 


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 6

Implementing the Feature Delivery Pattern

Use the provided checklists to establish or extend the feature delivery platform pattern in your own environment. It is essential these capabilities be accessible to any member of your team. This should not require re-inventing the wheel by separate teams or ad-hoc investigation by a subject matter expert or “on-call” resource. 

Foundational Capabilities

Decouple Deploy From Release

Create a consistent, organization-wide mechanism for controlling exposure of new code:

  • Allow changes of exposure w/o new deploy or rollback
  • Support targeting by UserID, attribute (population), random hash

This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Section 7

Final Thoughts

When considering new ways of doing work, it’s useful to be clear on the “why” before figuring out the “how.” In this Refcard, we took the time to identify the goals for progressive delivery before exploring the available implementation patterns.   

Higher cadences of delivery simultaneously increase the chance for things to go wrong, but also the surface area for learning. Progressive delivery patterns are a proven way to reduce the risk of unforeseen consequences, and depending on your implementation choices, can increase the value of each release iteration.  


This is a preview of the Progressive Delivery Patterns and Anti-Patterns Refcard. To read the entire Refcard, please download the PDF from the link above.

Like This Refcard? Read More From DZone

related article thumbnail

DZone Article

Travis CI vs Jenkins: Which CI/CD Tool Is Right For You?
related article thumbnail

DZone Article

Using Jenkins as Your Go-to CI/CD Tool
related article thumbnail

DZone Article

Designing a Java Connector for Software Integrations
related article thumbnail

DZone Article

Integration Isn’t a Task — It’s an Architectural Discipline
related refcard thumbnail

Free DZone Refcard

Platform Engineering Essentials
related refcard thumbnail

Free DZone Refcard

The Essentials of GitOps
related refcard thumbnail

Free DZone Refcard

Continuous Integration Patterns and Anti-Patterns
related refcard thumbnail

Free DZone Refcard

Getting Started With CI/CD Pipeline Security

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: