A simple description of DevOps is such:
‘An approach to Application Delivery that applies Lean principles to accelerate feedback and improve time to market’
What does this mean? In a nutshell it implies that DevOps is a set of principles and practices that enables an organization to make their delivery of applications ‘lean’ and efficient, while leveraging feedback from customers and users to continuous improve.
What do you ‘continuously improve’? Three things:
- The application being delivered
- The Environment of the application being delivered
- The process by which the application (and its environment) is delivered
The ‘continuous improvement’ of the application and it environment comes from the feedback mechanism. As the application is continuously delivered, customers or customer surrogates (if the new feature delivered cannot be made available to the customer) can use the application delivered and provide feedback on the application’s functionality and behavior. This feedback can be used to improve both the application itself and also the environment it is delivered on, in the next iteration. The application’s features can enhance, added to or removed, based on the feedback. The Environment can be enhanced or re-configured if is not enabling the application to perform as expected or unable to deliver the performance Service Level Agreements (SLAs) agreed upon.
The third area of improvement – that of improving the process of delivering the application is where the crux of DevOps lies. How does one continuous make the process of delivering the application more lean and efficient – continuously improve it.
Looking at delivery processes to continuously improve them is not a new approach. Lean Manufacturing and the Japanese manufacturing approach called Kaizen have been applied to improving factory processes for decades. DevOps is now taking these Lean approaches and applying them to Application Delivery. Agile development practices applied some of these principles to development and testing. DevOps applies them to end-to-end application delivery – from ideation to production.
Continuous Improvement – where to begin?
To begin applying lean principles to application delivery processes one first needs to identify where the ‘fat’ is that can be reduced or completely eliminated. Lean thinking leverages a technique known as ‘Value Stream Mapping’ to identify these areas of ‘fat’ or inefficiencies. While one can carry out an extensive ‘Value Stream Mapping’ exercise to analyze one’s application delivery processes in detail over a multi-week engagement with experts in the space, a simple and quick approach is to take some time to map your delivery pipeline and look for ‘bottlenecks’ in how the delivery pipeline operates. New requirements, enhancement requests and bugs to be fixed go in from one end of the delivery pipeline. Code running in production comes out from the other end. How efficiently does this pipeline operate? What bottlenecks are there which can be eliminated or at least minimized? Where is the ‘waste’ that can be reduced?
This value stream mapping identifies bottlenecks in the delivery pipeline. These bottlenecks are typically just symptoms of underlying ‘fat’ in the system. They need to be analyzed to identify root causes of the inefficiencies. This list of root causes then need to be prioritized and the top three to five identified to develop a mitigation plan. DevOps capabilities can now be applied to address them. An adoption roadmap to adopt these capabilities and the associated practices can now be developed and put in motion.
The key word in this all is ‘continuous’.
Adopting DevOps is not a step, but a journey of continuously ‘deploying improvement’ and continuously improving ones practices and culture.
Describing how to map out your delivery pipeline:
Check out this video of me doing a ‘mock’ value stream mapping:
- Understanding DevOps – Part 1: Defining DevOps
- Understanding DevOps – Part 2: Continuous Integration and Continuous Delivery
- Understanding DevOps – Part 3: The Battle of Dev vs Ops
- Understanding DevOps – Part 4: Continuous Testing and Continuous Monitoring
- Understanding DevOps – Part 5: Infrastructure as Code
- Understanding DevOps – Part 6: Continuous Deployment
- Understanding DevOps – The Video (6 minute Intro to DevOps)
- Adopting DevOps – Part I: Begin with the Why
- Adopting DevOps – Part II: The Need for Organizational Change
- Adopting DevOps – Part III: Aligning Dev and Ops Teams
- Adopting DevOps – Part IV: Adopting Continuous Deployment
- Adopting DevOps – Where to start? (Video blog)