Continuous Delivery Pipeline

Image

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Agile Manifesto

The Continuous Delivery Pipeline (also referred to as ‘the pipeline’) represents the workflows, activities, and automation needed to provide a continuous release of value to the end user. The pipeline consists of four elements: Continuous Exploration (CE), Continuous Integration (CI), Continuous Deployment (CD), and Release on Demand, as shown in Figure 1.

The Continuous Delivery Pipeline comprises of an arrow labeled ‘Agile Release Train’ that has three cycles about it labeled Continuous Exploration, Continuous Integration, and Continuous Deployment, and the output of the pipeline is labeled ‘Release on Demand.’

Figure 1. The SAFe continuous delivery pipeline

Each Agile Release Train (ART) builds and maintains (or shares) a pipeline with the assets and technologies needed to deliver solution value as independently as possible. The first three elements of the pipeline work together to support delivery of small batches of new functionality, which are then released in accordance with market demand.

Details

The Continuous Delivery Pipeline represents the ability to deliver new functionality to users far more frequently than is possible with the currently used processes. For some software systems, ‘continuous’ means daily releases or even releasing multiple times per day. For others, ‘continuous’ may mean weekly or monthly releases.

For large and complex systems, releasing the solution incrementally avoids taking an ‘all-or-nothing’ approach. Consider a satellite system consisting of the satellite, the ground station, and a web farm to feed the acquired satellite data to end users. Some elements may be released continuously—perhaps the web farm functionality. Other elements, such as the hardware components of the satellite itself, may be released only once per launch cycle.

In a sense, then, continuous delivery means what you need it to mean—as long as the goal is to deliver far more frequently than is happening now. In our satellite example, the more capability that gets moved to software, the more continuous the delivery can become, as those elements can then be decoupled from physical launch constraints. In all cases, the goal should be clear: more frequent delivery of value to the end user.

Fostering Innovation with the Lean Startup Cycle

The Lean Startup [1] movement has captured the imagination of business and technical leaders around the world. Inspired in part by the emergence of Agile methods, Lean Startup advocates recognized that Big Design Up-Front (BDUF), in tandem with big financial commitment up-front, is a poor way to foster innovation. Such an approach assumes and commits too much time, people, and resources before having any validated learning.

Instead, the Lean Startup movement embraces the highly iterative ‘hypothesize–build– measure–learn’ cycle, which fits quite naturally into SAFe. Specifically, we can apply this model to any Epic, whether it arises at the Portfolio, Large Solution, or Program Level. No matter the source, the scope of an epic calls for a sensible and iterative approach to investment and implementation, as reflected in Figure 2.

A diagram of lean startup cycle is shown.

Figure 2. Iterative and incremental approach for epics in the Lean Startup cycle

As Figure 2 implies, approved epics deserve additional investment—but not a fully committed investment up-front. After all, the work up to that point has been analytical and exploratory. The proof is in validated learning, and for that, we need to apply the steps in the hypothesize–build–measure–learn cycle:

The Continuous Delivery Pipeline Learning Cycle

In short, the pipeline doesn’t operate in a strict linear sequence. Rather, it’s a learning cycle that allows teams to establish a number of hypotheses, build a solution to test each hypothesis, and learn from that work, as depicted in Figure 3.

A figure showing the continuous delivery pipeline learning cycle.

Figure 3. The continuous delivery pipeline is a mechanism for continuous learning and value delivery

Now, let’s move on to summarizing the activities of continuous exploration, continuous integration, continuous deployment, and release on demand.

Continuous Exploration

Continuous exploration is the process of constantly exploring the market and user needs and defining a Vision and a set of features that address them. This process is summarized in Figure 4.

A figure showing the continuous exploration cycle.

Figure 4. Summary of the continuous exploration cycle

This cycle includes four major elements:

Continuous Integration

The next cycle in the pipeline is continuous integration—the process of taking features from the program backlog and developing, testing, integrating, and finally validating them in a staging environment. Each feature implementation follows the Lean UX cycle [3], producing an initial Minimum Marketable Feature (MMF), followed by whatever extensions deliver appropriate and additional economic value.

Continuous integration often requires a three-tier approach: story integration, system integration, and solution integration, as shown in Figure 5.

A diagram shows the three-tier continuous integration.

Figure 5. Three-tier continuous integration

Story Integration

Since features are too abstract to be coded directly, they must be converted into Stories during PI Planning. Each story is defined, coded, tested, and integrated into the baseline. Team members integrate their individual work frequently and apply automated continuous integration environments. To ensure that the new stories are compatible with the existing functionality, the overall system must be continually tested as well. Thus, teams apply automated testing and Test-First Development.

System Integration

Agile teams implement the features and components for which they are responsible. Of course, that isn’t enough to ensure compatibility and overall progress. With the support of the System Team, the work of all teams on the ART must be integrated frequently to assure that the system is evolving as anticipated. At the all-important System Demo, this small batch of work is evaluated objectively.

Solution Integration

Finally, the largest solutions require an additional level of integration, as the work from all ARTs and Suppliers must be integrated together. In the Solution Demo event, the results are made visible to the customer and other stakeholders. To be able to routinely perform solution demos, ARTs and Solution Trains invest in solution-level integration, testing, and supporting infrastructure. Even then, the extent of integration and testing may be less than 100 percent and may need to vary across multiple early integration points.

Continuous Deployment

Continuous deployment is the process that takes features that have passed through continuous exploration and continuous integration and deploys them into the staging and production environments, where those features are readied for release.

Figure 6 identifies six general practices that can help an organization implement a continuous deployment environment and process. The labels for each of these practices are somewhat self-explanatory. Each is described in further detail in the Continuous Deployment chapter.

An illustration shows the six specific practices for continuous deployment.

Figure 6. Six recommended practices for continuous deployment

Release on Demand

Release on Demand is the process that releases deployed features gradually or immediately to customers and evaluates the hypothesis from the continuous exploration stage. But, as we describe in the Release on Demand chapter, continuously releasing is not always automatic. Nor is it an ‘all-or-nothing’ proposition, as Figure 7 illustrates.

A set of two diagrams shows the develop on cadence but release on demand.

Figure 7. Develop on cadence, but release on demand

Instead, elements of the system are released as they become available and as the market demands. This approach is further facilitated by contemporary release strategies, including techniques such as feature toggles, dark releases, and canary releases [4], all of which are described in the Release on Demand chapter.

Tracking Continuous Delivery

When viewed as a whole, continuous delivery is an extensive process. Indeed, it may be the most important capability of every ART and Solution Train. And while it’s automated to the extent possible, it’s important that stakeholders can visualize and track the ongoing work. They need the ability to establish Work in Process (WIP) limits to improve throughput and identify and address bottlenecks. That’s the role of the Program Kanban, as shown in Figure 8.

A figure showing the role of the program Kanban.

Figure 8. An example program Kanban

The Kanban systems consist of the following series of states:

Summary

Together, continuous exploration, continuous integration, continuous deployment, and release on demand provide an integrated Lean and Agile strategy for rapidly accelerating the releases of value to the customer.

LEARN MORE

[1] Manifesto for Agile Software Development. http://agilemanifesto.org/.

[2] Ries, Eric. The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses. Random House. Kindle Edition.

[3] Gothelf, Jeff, and Josh Seiden. Lean UX: Designing Great Products with Agile Teams. O’Reilly Media. Kindle Edition.

[4] Kim, Gene, Jez Humble, Patrick Debois, and John Willis. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations. IT Revolution Press, 2016.