A major goal of DevOps is to improve value by reducing lead times and reducing bottlenecks in software value streams. The winning method for identifying those bottlenecks is called Value Stream Mapping.
In my SlideShare "Value Stream Mapping for DevOps"
I illustrate a simple approach to conduct Value-Stream Mapping for DevOps value streams. Easy-to-use templates are provided. An example is included, which shows the dramatic effect that using containers and Kubernetes can have on the value stream for a business application.
What is Value Stream Mapping?
Value stream mapping is a lean-management method for analyzing the current state and designing a future state for the series of events that take a product or service from its beginning through to the customer. It can be applied to nearly any value chain. Value stream mapping identifies high priority bottlenecks and weak points in the value stream, to guide the implementation of improvements to people, process (E.g., workflows), and technology (E.g., tool chains).
Value Stream Mapping Goals and Steps
The following are goals, and recommended steps for Value Stream Mapping.
- Capture, in a visual diagram, a DevOps value stream, inclusive of people, process, and technology factors, relative to a specific value that is the target for improvement. Example values are lead time, release frequency, time to restore service, failure rate, and security protection.
- Identify timings and quality factors for each stage in the value stream, and end-to-end.
- Identify bottlenecks, gaps, and opportunities to improve.
- Prioritize areas for improvement.
- Identify suggestions for improvement.
Select a Value Stream for AnalysisEnterprises have many applications with distinct value streams. It is recommended to start by selecting a value stream that has the following attributes to yield high-value results.
- An application that has high value to the business.
- A value stream with a senior leader that has authority to sponsor the value stream mapping activity.
- The value that is to be improved is clear, and stakeholders agree it is an important value.
- All stakeholders (Product owner, Dev, QA, Ops, Infra, Sec, Release, etc.) are open to participating in value stream mapping.
Value Stream Mapping TemplateThere is no standard value stream map for software applications or for DevOps. Each application may have a different value stream. Nevertheless, as I illustrate in the SlideShare that I referred to earlier in this article, I have found that is useful to start with a popular template that has stages for planning backlog, design, implementation, Dev test, Integration, packaging, system acceptance, deployment preparation, deployment, validation in production, and operations.
For each stage, the template can be used to show the average "Wait time" between stages, the "Stage time" to process a stage, and the "% Rejected" values to indicate stage-by-stage rework. Factors that are relevant to the value being analyzed can be shown on the template, together with tools and infrastructures, used to support the value stream. This results in a simple "at-a-glance" one-page visual diagram of the value stream for an application.
Value Stream Results Record
I have seen some elaborate tools to record value stream mapping data. Personally, I find a simple spreadsheet to be easy to use and sufficient. For each stage simply record the inputs and outputs, the "Wait time", the "Stage time", the "% Reject rate", People, Process and Technology activities that contribute to the value set for the analysis, and observations and recommendations. This is not only extremely simple, but also simplifies identification and calculations of bottlenecks, and the potential improvements that can be realized by a future state value stream if the recommendations are implemented.
Example Value Stream - Enterprise Business Application
The following is an example, illustrated in the same SlideShare, which demonstrates the simple step-by-step Value Stream Mapping procedure. It also demonstrates the dramatic effect that containers with Kubernetes orchestration can have on a DevOps value stream.
The example enterprise has many applications with distinct value streams. The value stream selected that has the following attributes:
- The application is one of the most important ones for the business.
- A senior leader with authority over the value stream is sponsoring the value stream mapping activity.
- Stakeholders agree that the most important value to improve is "lead time between code pull request of new feature to integration, until validation of new service release candidate in production".
- All stakeholders (Product owner, Dev, QA, Ops, Infra, Sec, Release, etc.) are open to participating in the value stream mapping.
The example Value Stream Map, and the example "Value Stream Results Record" carefully records the "Wait times" and "Stage times" for each stage in the value stream. The sum of values from the start of the integration stage until the end of the validation in production stage show the current state Value Stream requires 317 hours (on average) lead time. It also shows that by using containers and Kubernetes it is feasible to save 145 hours. This saving is derived from replacing slow, error-prone, platform specific deployment scripts with containers and Kubernetes. This occurs because feature level and service level artifacts need to be deployed at multiple points in the value stream.
Based on the example value stream analysis, the "lead time between code pull request of new feature to integration, until validation of new service release candidate in production", for this important business application, can be reduced 145 hours (46%), from 317 hours to 172 hours, by replacing slow, error-prone, platform specific deployment scripts with containers and automated container orchestration using Kubernetes.
WHAT THIS MEANS
Value Stream Mapping is a useful tool for identifying bottlenecks in a DevOps value stream. The method described in this article provides guidance, and a simple prescription for conducting Value-Stream Mapping to identify bottlenecks for an application. The example illustrates how containers, together with Kubernetes orchestration, can have a dramatic impact on reducing bottlenecks in DevOps value streams.