Book Description

Software delivery practices are constantly improving as companies apply the philosophy of continuous delivery to deploy and release changes quickly, safely, and predictably. Most teams, however, hit roadblocks in the process. This report examines 10 organizations that have implemented continuous delivery in the real world. These case studies demonstrate how branching strategy, environment design, release management, and the software delivery lifecycle can have significant impact on your journey toward continuous delivery.

Software engineering managers, senior developers, and architects will explore common approaches that most companies in these case studies found useful. Software delivery expert Pete Hodgson provides actionable ideas for implementing or improving continuous delivery within your own organization, including multiple ways to achieve the same goal.

  • Learn continuous delivery practices in healthcare, real estate, online retail, financial services, and other industries
  • Understand the differences between trunk-based and branch-based delivery modes
  • Explore how autonomy within product delivery teams boosts continuous delivery programs
  • Learn how continuous delivery can work for companies with either service-oriented or monolithic architectures
  • Discover the advantages of investing in a delivery platform that provides self-service tooling to product engineers

Table of Contents

  1. 1. Introduction
    1. What is Continuous Delivery?
    2. Continuous Delivery in the Real World
    3. Research Methodology
    4. The Path to Production
  2. 2. Branch Management and Code Review
    1. GitHub Flow
    2. Trunk-Based Development
    3. Minimal Branches
    4. Cutting a Release Versus Promoting a Build
    5. Code Review
    6. Reducing Batch Size
  3. 3. Running an Integrated System
    1. Continuous Delivery Demands Fewer Environments
    2. Testing Changes Prior to Merge
      1. Running a Full Environment Locally
      2. Running a Partial Environment Locally
      3. Issue Personal Dev Environments
      4. Allow Transient, On-Demand Dev Environments
      5. Allow Connecting Development Workstations to Staging
      6. Overriding Service Versions in Staging
  4. 4. Deployment and Release
    1. Single-Piece Flow
    2. Release Buses
    3. Coordinating Production Changes
    4. Controlled Rollout
    5. Incremental Deployment
    6. Decoupling Deployment from Release
    7. Correlating Cause and Effect
    8. Moving Fast with Safety
  5. 5. Summary
    1. Shared Values
    2. Two Modes of Continuous Delivery
    3. Monoliths Versus SOA
    4. Succeeding with Continuous Delivery