Post

Progressive Delivery Explained

Introduction

Progressive delivery releases software in controlled increments, validating each step with real traffic signals. It is a superset of deployment strategies like canary, blue-green, and A/B testing.

Core Techniques

Progressive delivery typically combines:

  • Canary releases to small traffic slices.
  • Traffic shadowing for non-impacting validation.
  • Experimentation for measuring business impact.
  • Automatic rollback on SLO violations.

Traffic Routing and Policies

Routing policies must be deterministic and observable. Service meshes can handle routing, but application-level fallbacks are still important. A Spring Boot filter can route a small cohort to a new path based on headers.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Component
public class CanaryFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain) throws IOException, ServletException {
        String canaryHeader = request.getHeader("X-Canary");
        if ("true".equalsIgnoreCase(canaryHeader)) {
            request.setAttribute("canary", true);
        }
        // Downstream handlers can use this attribute to route canary traffic.
        filterChain.doFilter(request, response);
    }
}

Automated Analysis

Automated analysis gates should check error rates, latency, and business KPIs. These checks should be aligned with error budgets to avoid blocking releases unnecessarily.

Rollout Strategy Example

A typical canary rollout:

  1. Deploy new version to 5% of traffic.
  2. Run automated analysis for 15 minutes.
  3. Promote to 25%, then 50%, then 100% if no regressions.

Summary

Progressive delivery lowers release risk by validating changes with real traffic before full exposure. The key is to combine routing control with telemetry-driven automation.

This post is licensed under CC BY 4.0 by the author.