Release on Demand

Image

Develop on Cadence. Release on Demand.

A SAFe mantra

Release on Demand is the process by which Features deployed into production are released incrementally or immediately to Customers based on market demand. It is the fourth and last element in the four-part Continuous Delivery Pipeline, 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’ (highlighted).

Figure 1. The final element of the continuous delivery pipeline: release on demand

The three processes that precede release on demand in Figure 1 help ensure that the value is ready to be deployed in the production environment. But since tangible development value occurs only when end users are operating the Solution in their environment, delivery value at the right time is critical for the enterprise to gain the real benefits of agility. The decision to release is a key economic driver that requires careful consideration. While deployed features may be immediately available to all end users in some situations, more often the release is a decoupled on-demand activity, occurring for specific users, timed for when they need it.

Details

The ability to release on demand is a critical aspect of the continuous delivery pipeline, which raises three questions that allow Agile Release Trains (ARTs) to embrace Principle #3, Assume variability and preserve options:

  1. When should we release?

  2. Which elements of the system should be released?

  3. Which end-users should receive the release?

Having all three options accelerates the delivery process and provides flexibility in delivering value. Further, release on demand ‘closes the loop’ by evaluating the benefit hypothesis proposed during the Continuous Exploration stage of the pipeline. Releasing provides the data needed to decide whether further exploration of an idea is warranted, or if new functionality should be added, or if perhaps a different approach is warranted.

Practicing release on demand requires the organization to develop the following capabilities:

The following sections describe each of these capabilities.

Decouple the Release from the Development Cadence

Develop on cadence is the other half of a strategy that allows ARTs and the Solution Trains to operate in a predictable pattern and synchronize the efforts of multiple development teams. When it comes to releasing value, though, a different set of rules may apply.

Once we have a reliable stream of value through the Continuous Deployment process, the next consideration is when and how to release. The release strategy is decoupled from the development cadence, as shown in Figure 2.

A figure shows decoupling the release from the development cadence.

Figure 2. Decoupling development concerns from release concerns

Several release strategies may apply depending on the context and situation:

Decouple Release Elements from the Solution

Applying different release frequencies raises another question: Is a release a monolithic, all-or-nothing process? If so, the release strategy would be limited. Fortunately, that’s not the case. In fact, even simple solutions will have multiple release elements, each operating with different release strategies, as Figure 3 illustrates.

A figure depicts decoupling the release elements from the solution.

Figure 3. Decoupling release elements from the solution

For example, the SAFe website has multiple release cycles:

We call these separate flows value streamlets, as they represent a full, end-to-end flow of value within a Value Stream. Each streamlet (or value stream segment) can and should be managed to deliver value according to its own needs and pace. Identifying streamlets is critical to enable release on demand, as they allow the different elements of the solution to be released independently in a separate cadence.

Architect the Solution for Incremental Release

Achieving the different release strategies requires solutions to be designed for component (or service-based) deployability, releasability, and fast recovery. Intentional design of these attributes requires the collaboration of System Architects, Agile Teams, and deployment operations. The goal is a quick and flawless delivery process, ideally requiring little manual effort.

The following capabilities allow for a more flexible release process:

Implementing these capabilities may require the organization to upgrade its infrastructure and architecture, including moving to standard technology stacks, decoupling monolithic applications with micro-services, ensuring data preparation and normalization, engaging with third-party APIs and data exchange, and implementing logging and reporting tools.

Close the Loop on the Feature Hypothesis

Finally, after the feature is released, it’s time to evaluate the benefit hypothesis. Were the intended outcomes achieved? For example, should a canary release be extended to more customers? Should the organization turn off the feature toggles? The feature is considered done once we have an understanding of the production results. However, it may be necessary to add new backlog items to extend the functionality (persevere), or pivot (remove the feature) to find a different solution.

Building the Release

Building large-scale systems that are ready for release and fit for use requires an incremental development approach, as Figure 4 illustrates. The four types of increments are described next.

A diagram depicts building a releasable solution.

Figure 4. Building a releasable solution

Team Increment

The first step in this process is that each Agile team ensures that it produces a working increment for the stories, features, and components the team is responsible for by doing the following:

System Increment

Every two weeks, teams build a system increment—that is, an integrated stack of new functionality, representing all the backlog items completed by the ART during the current and all previous iterations. During the System Demo, stakeholders review the system increment and provide feedback. In this way, new features are added incrementally to the system, usually a few per iteration.

Solution Increment

When developing large solutions, ARTs typically contribute to only a part of the solution, whether it’s a set of subsystems, some solution capabilities, or a mix of the two. When integrated, verified, and validated, the solution increment must satisfy both the functional and Nonfunctional Requirements. Such a solution increment is the subject of the all-important Solution Demo, which brings all the system increments together into a working system.

Release Increment

Building solutions incrementally affects the release increment as a whole. As discussed earlier, decoupling solution elements allows for smaller, independent releases of the solution. These items might be at the team, system, or solution levels, so the same logic should be applied across the entire integration stack.

Some additional activities might be required when releasing increments—namely, final, V&V, release notes, UAT, documentation, and training materials, as well as marketing activities. As much as possible, these activities are part of the DoD of previous increments. Some, however, will remain as release activities.

A Scaled Definition of Done

The continuous development of incremental system functionality requires a scaled DoD. An example is shown in Table 1.

A table showing an example of a scaled DoD.

Table 1. Example of a scalable DoD

Release Management

Release management is the process of planning, managing, and governing solution releases, which helps guide the value stream toward the business goals. In some enterprises, especially those that must meet significant regulatory and compliance criteria, a centralized, portfolio-level team or function is present that assures releases meet all the relevant business criteria. In other circumstances, ART and Solution Train leadership and stakeholders from development operations, quality, sales, and other stakeholders should own some of the release management and governance responsibilities.

In either case, the release management function facilitates the activities needed to help internal and external stakeholders receive and deploy the new solution. It also ensures that the most critical governance quality elements are appropriately addressed before deployment—particularly internal and external security, regulatory, and other compliance guidelines.

Release planning is part of the PI planning process. But that’s the easy part; the hard part is coordinating the implementation of all the capabilities and features over multiple iterations within a release. This is especially true when new issues, roadblocks, dependencies, and gaps in Vision and backlogs are uncovered. Due to these challenges, the scope of each release must be continually managed, revalidated, and communicated. Primary considerations include the following:

Many enterprises hold release management meetings weekly to address the following questions:

This weekly meeting provides senior management with regular visibility into the release progress. It’s also the place to approve any scope, timing, people, or resource adjustments necessary to assure the release. In a more continuous delivery environment, the participants closely monitor the release section of the Program Kanban, making sure items are released when needed, to the right audiences; managing dark and canary releases; verifying that hypotheses are evaluated; and ensuring that feature toggles are removed after production verification.

LEARN MORE

[1] 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.