I presented on the topic of DevOps and how a test/quality organization fits into that model. The presentation starts off with some definitions of what DevOps is and how it is really the "practice" of the "principles" of the Lean Software movement.
"DevOps: Where in the world is Test?"
My first thought when I heard DevOps, was that of 2 "back yard brawlers" battling it out in a no holds barred fight. Later I heard terms like collaboration, discipline, and agile with Ops. But I still hadn’t heard the word I was looking for <test>. It started to feel like two sumo wrestlers with no referrer watching over them. Finally, it wasn’t until after I did my research and implemented a successful DevOps QA team that I understood, how the “ritual” would happen and how test would continue to be an extremely important part of the overall process, (i.e. the Referee ensuring that Dev was still playing on a level field with Ops).
So what is DevOps: It refers to the emerging professional movement that advocates a collaborative working relationship between Development, QA and IT Operations, resulting in the fast flow of planned work (i.e., high deploy rates), while simultaneously increasing the reliability, stability, resilience and security of the production environment.
It became common placed around 2009, as the convergence of numerous adjacent and mutually reinforcing movements:
- The Velocity Conference movement, especially the seminal “10 Deploys A Day” presentation given by John Allspaw and Paul Hammond
- The “infrastructure as code” movement (Mark Burgess and Luke Kanies),
- the “Agile infrastructure” movement (Andrew Shafer) and the Agile system administration movement (Patrick DeBois)
- The Lean Startup movement by Eric Ries
- The continuous integration and release movement by Jez Humble
- The widespread availability of cloud and PaaS (platform as a service) technologies (e.g., Amazon Web Services).
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity in
- See the whole
LEAN is the Principles and DevOps is the Practice.
- DevOps is especially complementary to the Agile software development process, as it extends and completes the continuous integration and release process by ensuring the code is production ready and providing value to the customer
- DevOps patterns can be derived from as “The Three Ways.” They describe the values and philosophies that frame the processes, procedures, practices, as well as the prescriptive steps.
- The only difference is the narrower focus of DevOps. With the loop as tight as possible, knowledge gained from the actual system is fed back into the next iteration of the product so the system becomes better in small, but tight, increments.
The "First Way" is:
- The focus is on all business value streams, in other words it begins when requirements are identified, are built in Development, tested in Test and then transitioned into Operations, where the value is then delivered to the customer as a form of a feature or service.
- The outcomes of putting the First Way into practice include never passing a known defect to downstream work centers, never allowing local optimization to create global degradation, always seeking to increase flow, and always seeking to achieve profound understanding of the system.
- Creating the right to left feedback loops. The goal of almost any process improvement initiative is to shorten and amplify feedback loops so necessary corrections can be continually made.
- The outcomes of the Second Way include understanding and responding to all customers, internal and external, shortening and amplifying all feedback loops, and embedding knowledge where we need it.
- Creating a culture that fosters at two things: continual experimentation, which requires taking risks and learning from success and failure; and understanding that repetition and practice is the prerequisite to mastery. We need both of these equally.
- The outcomes of the Third Way include allocating time for the improvement of daily work, creating rituals that reward the team for taking risks, and introducing faults into the system to increase resilience.
- The job of Testing is no longer to find defects, necessarily.
- The job of Testing changes to prevent defects.
- We must push testing up early
– Tests improve the conversation between customers and developers
– Tests become executable specifications
- QA must be testing early and often.
- Integrate QA into the flow through automated tests.
- Whenever code is checked in, automated tests are automatically run, and issues must be fixed right away, just as if a developer checked in code that didn’t compile.
- By integrating functional, integration and information security testing into the daily operations of Development, defects are found and fixed more quickly than ever.
- *******Never Pass issues Downstream.
- Faster time to market (reduced cycle times and higher deploy rates)
- Increased Quality (i.e., increased availability, increased change success rate, fewer failures)
- Increased organizational effectiveness (increased time spent on value adding activities vs. waste, increased amount of value being delivered to the customer).