DevOps is inherently based on Lean and Agile methodologies. This post identifies and explains the essential elements (I grouped them and called Agility Facets) on which #DevOps success depends.
In series of posts at Agile Gnostic, I explained about the four facets to agility that are applicable to Agile, as listed below…
What I observed is that all four of these facets are applicable to DevOps as well. This post inspects these facets from DevOps angle.
But before we move to that, we understand that still there are a lot of ambiguities and confusion around DevOps. It’s meaning and interpretation changes among different people and organizations in the software industry. Even though there are different views and perspectives to DevOps, I am sure all of us will agree to the following common concepts.
Common Understanding of DevOps
DevOps bridges the gaps between development, testing, and operations support. With DevOps we are increasing the abilities of systems administration and operational supports through a Lean Agile approach.
DevOps brings cultural and mindset changes in organizations, from senior executives to operations staff. Dev and Ops team should collaborate throughout the software development life-cycle, in order to create business values with common goals which are aligned with the organization’s strategy.
The core focus of DevOps is the speed and quality of delivering software products and features to market. Which gives organizations opportunities to gain competitive advantages through early moves in order to satisfy user needs.
Marrying Agile and DevOps streamlines and optimizes the entire software delivery pipeline. Though many will argue Agile does most of the intended optimization, DevOps helps in optimizing the pre-production and post-production scenarios; thereby completing the entire value delivery chain.
It’s essential for any organization to establish the meaning and applicability of DevOps for the given business scenario and build concensus with stakeholders to have common understanding and meaning.
So, How Are the Four Facets Applicable to DevOps?
An organization's DevOps platform and capability depend on the people, processes, and technologies involved. So whatever we discussed as core components to agility are applicable to DevOps without any changes.
Values and Principles – As described in Agile Manifesto; values and principles are the core aspects to any Agile methods and practices; these are equally applicable to DevOps. It extends these values and principles from development to encompass systems and operations as well. That is why DevOps can be thought of the extension to Lean and Agile (rather should be considered the next generation of Agile), which fills the gap that couldn’t be addressed by any Agile methods or frameworks.
Culture and Mindset – The way Agile needs organizational cultural and mindset changes, DevOps also needs to expand cultural and mindset changes among the systems and operations teams. The DevOps cultural movement is rooted in people. Organizations cannot effectively utilize even the most efficient processes and tools without people's collaboration and support. The operations team needs to become part of the development team from the beginning of the project and similarly, developers and testers need to collaborate to with, production, deployment, and support. Operational silos and management barriers across departments and functions need to be broken. For the successful adoption and transition to DevOps, organizations need to create a favorable culture in order to change people’s thinking and allow them to move out of their comfort zones, so as to accept the changes.
Methods and Practices – Agile methods and practices help to achieve agility with a disciplined collaborative approach. DevOps need continuation and expansion of Agile methods and practices being followed to the systems and operations teams in order to achieve infrastructure provisioning and automation, continuous monitoring, and support applications in production environment. DevOps extends the organization’s entire release chain through continuous delivery, with collaboration and communication among Dev, QA, and Ops for continuous development, continuous integration, continuous testing, continuous release, and continuous deployment. Even continuous monitoring helps to determine service or application availability and failure causes in order to proactively anticipate and apply learning through continuous improvement.
Tools and Technologies – Agile practices can be performed with effective use of tools and technologies for Continuous Integration, Build, Continuous Release and Deployment, and continuous testing through effective automation. DevOps also needs effective application and investment in tools and technologies for automated environment provisioning, continuous monitoring, fault remediation etc. Organizations can easily build and support multiple business-critical applications maintaining quality and scaling up-time and abilities with the effective use of technologies without dependencies to people originally involved. Tools and technologies enable people to focus on high-value creative work while delegating routine, repeatable, and predictable tasks to automation.
Agile and DevOps marry well and together, it’s the combination to the organization’s success. Many successful organizations have already implemented Agile and DevOps, giving equal attention to all four facets, and have realized the business benefits through agility across the software delivery pipeline, speed of application delivery, increased application usability, infrastructure stability, and end-user satisfaction. The near future will witness the Agile and DevOps movement expanding to a large number of organizations, without which there would be the struggle to survive the dynamic market competition.