While there is no standard definition of DevOps, I think most people agree that a major goal of DevOps is to improve value by reducing lead times and removing 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, as well as an example 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 (for example, workflows) and technology (for example, toolchains).
Value Stream Mapping Goals and Steps
The following are goals of 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 Analysis
Enterprises have many applications with distinct value streams. 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, security, release, etc.) are open to participating in value stream mapping.
Value Stream Mapping Template
There 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, I have found that it 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 “percent 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 the tools and infrastructure 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 used to record value stream mapping data. Personally, I find a simple spreadsheet to be sufficient and easy to use. For each stage, simply record the inputs and outputs, the wait time, stage time, the percent rejected 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 has the following attributes:
- The application is one of the most important 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, security, 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 savings 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 by 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’s development and delivery. The example illustrates how containers, together with Kubernetes orchestration, can have a dramatic impact on reducing bottlenecks in DevOps value streams.