Alan Shimel of DevOps.com recently sat down with Sam Guckenheimer of Microsoft for an interview on the seven habits crucial to successful DevOps implementation.
Below is an overview of their discussion: (Check out the full podcast here.)
1. Enabling Autonomous Units within an Aligned Enterprise
Scrum teams should autonomously pull items from a common product backlog, and at the same time, align enterprise goals on a six-month planning cycle. In that time frame it should be clear what needles you’re trying to move for the business.
You can then measure, how you’re doing against that. They may move forward, they may move backward, they may decide, based on the data they’re collecting to do more or do something else. But you know, what’s in their control based on the things they’ve agreed for the six months.
2. Rigorous Management of Technical Debt
When you’re running a service, you really can’t afford to let any debt creep in, and you have to stay clean all the time. To do that, you must constantly monitor both what’s happening in the production service and what’s happening in the development process.
So for example, if there’s anything happening in the development process, like a feature crew is letting its bug count start to ride up, they have to stop immediately, fix the bugs, and you can’t do any new work until they get them down to zero, so that you remain clean on tech debt as you go.
3. Focus on the Flow of Customer Value
Look at how people use your software quantitatively – actually observe what gets used, what doesn’t get used, what the scenarios are. At the same time, leverage that quantitative information for qualitative outreach – engage with the high usage customer accounts and encourage your engineers to buddy up and find out what’s gone well, what’s gone not-so-well and what opportunities for improvement exist.
At the end of the day, customer value should provide your direction. As Stein Inge Morisbak frames it, “Any roles involved in a project that do not directly contribute toward the goal of putting valuable software in the hands of users as quickly as possible should be carefully considered.”
4. Hypothesis Driven Development
Viewed opportunistically, the backlog is a set of hypotheses or beliefs. The hypotheses must be turned into experiments, and you have to collect data against those experiments so that you can substantiate or diminish the hypothesis.
5. Evidence Gathered in Production
In successful DevOps implementation, every test, iteration, and report is evidence that is needed in order to build up or draw down against those aforementioned hypotheses. You can use instrumentation and telemetry and measure it against what’s important. So, for example, run the new against the old in parallel, and see what the evidence shows you about how much better the new is than the old – if indeed it is at all.
6. Live Site Culture
The idea of a live site culture is that the site status is always priority one. If there is a live site incident, you want to – as quickly as possible – remedy it so that customers aren’t affected, and you want to drive to a root cause analysis.
Getting to the root cause allows you to identify the actions that you need to take in order to prevent a recurrence of such an incident or something similar. Learn from live site incidents so that you’re always getting better.
Manage Infrastructure as a Flexible Resource
Start each Sprintly deployment with a canary instance, so that you know from the canary if there’s anything wrong with the deployment, and if there is, you can then restart at the canary before you roll out to the subsequent deployment rings.
This practice of “canary-ing”is part of proper pipeline engineering and by extension, successful DevOps implementation. With it in place, you can then use the automation to roll out in subsequent rings in order to harden the service and get to a global scale on a regular basis.
These habits go well beyond routine behavior patterns in that they reflect a conscientious and systematic approach to the entirety of Development and Operations. It should be no surprise then that these “habits” factor prominently in any successful DevOps implementation. To excel at DevOps it is not enough to pay lip service to the idea; you must integrate its principles through every aspect of your IT operation.
If you liked reading about successful DevOps, check out this post on DBaaS!