The ‘system’ for SAFe is the CDP — the Continuous Delivery Pipeline. The system that keeps giving… keeps delivering continuous flow of business values.
CDP has four elements: 1) The Continuous Exploration (CE), 2) Continuous Integration (CI), 3) Continuous Deployment (CD), 4) Release on Demand (ROD).
Above the CDP is Portfolio Level where ideas/epics/initiatives (with Lean Business Case) are collected through the ‘funnel’ that goes through ‘review’ and ‘analyze’ states of the portfolio Kanban… next state is ‘approval’. Those ideas/epics/initiatives that get approved, will go through the CDP. Portfolio Manager, Epic Owners and Enterprise Architect are key drivers.
One element of SAFe’s CALMR approach to DevOps is to Automate the CDP. More on this in Part IV: CALMR — SAFe’s Approach to DevOps.
Continuous Exploration (CE): this CDP element is where the idea/epic/initiative (complete with Lean Business) gets researched, pulled apart, understood deeper with collaborators. This is the Program Level. Product Manager, Release Train Engineer, and System Architect are main drivers. Once researched, it is then synthesized, put back together with a better understanding… enough to create a clear vision, create features (with Feature-Level benefit hypothesis) and enablers (architecture runway) for that vision, and creat a roadmap (features and enablers are spread in one Program Increment (PI) or spread over several PIs) for the vision’s realization. The top 10 or so prioritized features will be pulled into the PI planning and into the next CDP element … the Continuous Integration (CI).
Continuous Integration (CI): this CDP element is where features are broken down into stories. The teams design, build, and test (DBT) thinly and vertically sliced stories of Value within an iteration (usually two weeks per iteration). This is the Team Level. Product Owner, Scrum Master, Development Team are key drivers. A good mix of work between the System Team and the Dev Teams is needed for optimum value Integration and delivery to the staging area ready for deployment.
When large solution is being built, then CI becomes three-tiered CI (Story, System, and Solution tiers).
Automate CI !
Continuous Deployment (CD): the third element of the CDP … this when we see our code deployed from staging environment to production environment!
There are four sub-dimensions in CD: 1) Deploy to production, 2) Verify the solution, 3) Monitor for problems, 4) Respond and Recover.
Note that this be in production environment and not released to the consumers until they demand it. This means that we decouple Deployment and Development Cadence from Release. This takes us to the fourth element of the CDP.
Release on Demand (ROD): the fourth element of the CDP. With the deployment decoupled from release, we can now release value to the marketplace incrementally or immediately based on market demand.
You may also decouple release elements from a deployed solution.
According to SAFe, there are various ways of decoupling deployment from release: 1) Feature Toggle — Feature ‘toggles or switches’ enable deployment of features into production without making them visible to the end-user; 2) Canary Releases — is a technique to reduce the risk of introducing a release in production, by slowly rolling out the change to a small subset of users, before rolling it out to the entire user base; 3) Dark Launches — in some situations, it’s important to test new functionality in a production setting before making it available to customers, especially when there is high uncertainty on how well the system will meet its Non-functional Requirements (NFRs) under a production load.
Finally, finally, once the feature is released and stabilized…it is time to measure and learn! It is like full circle…we now evaluate the feature’s benefit hypothesis! Were the intended outcomes achieved? For example, should a canary release be extended to more customers? 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.
Putting it all together in one visual: