With excerpts from Industrial DevOps IT Revolution DevOps Enterprise Forum 2018
What are few problems with large systems which would hamper DevOps practices?
Visibility of tasks and activities in the value stream decreases as the complexity of system increases.
Most of the large systems are organized very much in siloed fashion with gated approach and numerous hand-offs.
Slow time to market, quality issues, cost overruns, mis-fit solutions
How large scale DevOps will help?
Large scale DevOps includes various bodies of knowledge including DevOps, Lean Manufacturing, Lean Product Development, Lean startup, systems thinking, scaled Agile development
It helps building a continuous delivery pipeline that provide a multi-domain flow of value to the users and stakeholders those deployed the systems
As per IT Revolution Enterprise DevOps Forum what are few of the recommendations?
1. Visualize and organize around the value stream.
2. Apply multiple horizons of planning.
3. Base decisions on objective evidence of system state and performance.
4. Architect for scale, modularity, and serviceability.
5. Iterate and reduce batch size.
6. Establish cadence and synchronization.
7. Integrate continuously
8. Be test driven.
Visualize and organize around value stream:
Normally value stream should be around independent capabilities in large complex systems
Team should remove activity based hands-off and focus on providing the specific business outcomes
Apply multiple horizons of planning:
Product vision and major capabilities - 3 to 5 years
Year lookout of high level functions - 1 year
Quarterly roadmap of features - every quarter
Sprint plans - 2-4 weeks
Daily team plans
Base decisions on objective evidence of system state and performance
Each increment should provide an opportunity to demonstrate objective evidence of the feasibility of solution in progress
Reviews are done on cadence so progress can be measured by stakeholders frequently, predictably, and throughout solution development life cycle
Architect for Scale, Modularity, and Serviceability
Design and engineering processes need to scale to address the complexity in large systems. This can be done through modularity and serviceability.
Modularity: Component decoupling with a focus on the smallest unit of functionality.
Serviceability: Focus on lowering cost and time required to alter functionality both pre and post production
Architecture modularity significantly impacts DevOps goals to continuously develop, integrate, deploy, and release value
Iterate and reduce batch size
Work in small batch sizes - both in terms of the size of the component or feature and the unit of change.
Enables agility, regular validation and rapid feedback cycle
Model-based systems engineering, A/B testing, and dark launches provide the ability to make changes and rapidly understand the impact of those changes.
Establish Cadence and Synchronization
Provide rhythmic pattern to manage inherent variability in solution development
Cadence makes wait times predictable, leading to lower transaction cost of key events
Synchronization helps all teams working at different levels align their efforts
Continuous integration is a planned strategy to integrate frequently, based on the economic trade-off of the transaction cost of integration versus the risk reduction of objective evidence of system performance
Partial integration does helps address the risk even when full risk is not possible
Be test driven
Systems built on modular, component-based architectures that communicate through well-defined interfaces are much simpler to test and verify functional behavior
In test-driven cultures, the environment automatically runs a rich set of component tests on any change
Ref: Industrial DevOps: Applying DevOps and Continuous Delivery to Significant Cyber-Physical Systems