The path to DevOps success
- Posted on June 23, 2015
In my last post, I talked about how DevOps can benefit everyone by instilling discipline that can help to improve most IT projects. But, DevOps is a destination and a way of working, and one that requires mastery of other fundamental Application Lifecycle Management (ALM) disciplines before you can achieve and exploit it.
There are many underlying disciplines that support DevOps, but we’ve identified four that we believe are critical to DevOps success:
- Software Craftsmanship
- Strong Configuration Management
High-quality programming underpins everything. If you can’t make changes without breaking code, then the journey stops there.
Software Craftsmanship means paying more attention to the quality of the code and the quality of testing. Use the available tooling for metrics and analytics to improve code quality and the quality of incremental releases.
This can be harder than it sounds. Not only must you adopt professional software development disciplines, you must also use them at an ever increasing pace. Fast turnaround of releases or defect fixes requires absolute mastery of the development process.
The confidence that is required for organisations to support a continuous delivery process can be catastrophically undermined by just one bad experience, and can cause a return to the old habit of using time as a buffer to protect the stability of the production environment.
Success is also dependant on treating non-functional and operational requirements with as much care as you treat functional requirements. Exception messages that only operation teams will see should be as well-crafted as published content end-users will see.
Strong Configuration Management
Good source code version control is one thing, but you need to put in place a robust model for configuration management for your application. This covers source code, but also includes configuration files, designs, test and deployment scripts and a workable feature release model such as branching and merging or feature switches.
A well-defined and fully implemented approach for configuration management needs to be in place in order to enable the next step: automation.
Building in Automation
Only automation can achieve the speed of turnarounds that DevOps requires for success.
Automation is incremental and can be added to your development and run processes over time. Solid routines should be established before they are automated to ensure they are effective.
The limit of automation has not yet been found and organizations continue to innovate on aspects of their delivery that can be automated. Indeed, ‘automate everything’ is a popular DevOps mantra.
Deployment is an obvious area for automation, but it should be supported by additional automated release management processes such as automated testing and automated quality gate verification.
Automation of operational processes such as environment provisioning, patching and security screening should also be considered.
Mass automation and the ability to automatically move releases through development and test environments and then automatically into production ultimately requires confidence in the process. This confidence will generally come over time, but starting small and making incremental improvements is the best way to build it.
The Connection to Agile
Agile isn’t a prerequisite to start doing DevOps but it is required to enable the high-performance capabilities that DevOps can provide. All of the disciplines that support DevOps are Agile principles and DevOps can be viewed as an evolution of these principles.
Only Agile can support the fast turnaround times for development and the backlog approach that nurtures future investment and innovation.
Furthermore, and it may seem obvious, the Agile transformation needs to progress beyond the development team. The operations team also needs to be Agile to support DevOps, and in fact, the entire organisation needs to be Agile to be able to realise the benefits that the increased speed can offer.
This is root to branch Agile transformation, and for most organisations it represents a culture shift. The greatest challenge in adopting DevOps, in our view, is to manage that transformation and shepherd the change.
If this seems like a hill to climb, then good news is on the way. In my next post, I’ll talk about how organizations can use partners like Avanade as a DevOps Accelerator.
This blog post is part of a series about DevOps by author David Jobling. Check back to read the latest installment.
- Part 1: The Benefits of Nurturing a DevOps Culture
- Part 2: The Potential for DevOps to Accelerate Your Business
- Part 3: DevOps for Everyone
- Part 4: The Path to DevOps Success