2 suggestions and 1 recommendation for implementing DevOps
June 25, 2013 Leave a comment
Before getting into the suggestions for how to implement DevOps it is necessary to answer the age old question, what is DevOps purpose?
“In an ideal state DevOps allows business features to be delivered quickly and continuously while maintaining 100% uptime.”
It always comes down to the bu$ine$$. All of us know that downtime costs real money and delaying features costs potential money. Many companies have even prioritized one or the other at different points in their maturity cycle. The goal of DevOps is to minimize both costs.
While automation is often a focus of DevOps, and I believe that a lazy admin is a good admin, I said nothing about automation in my definition. It wasn’t an oversight, automation is a means, not an end to DevOps goals. I also said nothing about developers or operations in this description since the roles are largely irrelevant if that goal is met. Here are 3 suggestions for bringing your organization into the light of DevOps.
Suggestion 1:
Lock your developers and operations teams into the same room and buy them enough beer to keep them happy with each other.
Ok, seems silly at first, but this is how some larger companies have done it. Each development team has 1 or 2 SRE members join and each literal DevOps team is focused on a particular business deliverable. This moves operations from a shared service to a team deliverable and gives all members a sense of ownership of the code as well as how it functions in production. From everything I have heard it has been a wildly successful brute force approach at several companies. Larger companies that have taken this approach seem to have a leg up on most of us since they can attract a level of talent most companies cannot and that they have the resources to expand each development team by an additional 1-2 people.
Suggestion 2:
Have your CEO look into the mirror and say “DevOps” three times.
While the ghost of DevOps won’t appear to slay your evil over-the-wall methodologies, getting top down support will put people on the path to figuring it out. A leader’s vision dedicated to moving in this direction can produce a successful DevOps strategy. I would be remiss to point out its flaws if done in isolation though. With a description as vague as my own, or any other DevOps description, it can be difficult to break down and measure progress on the path to DevOps. At larger organizations it can be an even greater challenge if some groups are happy with the status quo.
Suggestion 3:
What’s measured is managed!
There are 4 core DevOps metrics:
- Mean Time To Detection (MTTD)
- Mean Time To Resolution (MTTR)
- Mean Time Between Incidents (MTBI)
- Mean Time Between Releases (MTBR).
By measuring these for your team’s deliverables several conclusions can usually be drawn that promote the path to DevOps. For instance if your MTBI is high as a result of impacts during changes then you probably need to prioritize improvements to your release process or architecture to remove that downtime. Maintenance windows be damned, without 0 downtime deployments you will never be able to meet the goals of DevOps. If you aren’t able to decrease your MTBR then automation of deployments and testing will give a big boost. MTTR will be decreased when problems occur by providing accurate alerting and having well defined process, ownership and escalation. Keeping MTTD low ensures that monitoring is added as part of new features rather than after the fact.
Measuring the Mean Time application metrics will also identify hot spots in your application stack. Using these 4 metrics you can effectively score your applications and the risk they pose, not based on the potential impacts, but rather on the experience of your organization to deliver them. This will remove barriers for applications that have a history of being successful in prod and ensure the right oversight is available when an application needs it.
When release processes need to be improved, code and infrastructure needs to be re-architected, monitoring needs to be refined and success is visibly measured it almost always leads to development and operations working together and DevOps becomes a byproduct of the business goals.