Enterprises are increasingly turning to DevOps as a way to deliver software and security updates more rapidly -- both internally and to customers. But for many, actually implementing the new workflow remains challenging.
"A lot of organizations have bought into the philosophy of DevOps -- faster, more frequent releases, a collaborative culture, a cloud toolset, and the idea of automation," said Elinor Klavens, a Forrester researcher serving infrastructure and operations professionals. "Where we're seeing the gaps is actually putting that into practice. More organizations have pockets of DevOps, but in terms of leveling up into a larger, enterprise-wide DevOps initiative, it's less mature."
The benefits of DevOps are clear: High-performing organizations deploy 200 times more frequently, with 2,555 times faster lead times, according to a study of more than 25,000 tech professionals from Puppet and DevOps Research and Assessment. High-performers are also twice as likely to succeed with product deployments without service impairments or security breaches. And when something does go wrong, they can fix it 24 times faster.
"Tons of evidence showed us that [with DevOps], you can go more quickly and be more reliable at the same time," said Gene Kim, co-author of the report, and co-author of The DevOps Handbook.
Here are five tips to help make sure your DevOps implementation reaps the maximum benefits.
1. Start small, but not too small
When implementing DevOps, a good rule is to start on a small scale, produce results that you can show to all teams, and then scale up, according to Kevin Curran, an IEEE senior member and professor of cybersecurity at Ulster University.
"Some enterprises start with large-scale projects which inevitably lead to longer delays," Curran said. It's also important to factor in resistance to change, he said: Concentrate on small improvements initially, and not just the rollout of new technology.
Since it's impossible to change everything at once, it's wise to start with items like distributed version control, continuous integration, and small-batch more-frequent changes, said Bridget Kromhout, principal technologist at Cloud Foundry and lead organizer of the DevOpsDays conference. "End-to-end automation of all the things doesn't happen overnight," she said.
While DevOps initiatives can be led by almost any team member, the most common drivers are director of operations, chief architect, and director of development, said Kim. "What makes them successful is they do a great job of scoping," he added. If they scope too large, it introduces too much risk into the achievement of important tasks for the organization, he said; if they scope too small, whatever success they have could be trivialized as a hobby.
"What these leaders do well is scope large enough so they can solve something of genuine significance, and everyone appreciates they created a material improvement for the company, but small enough where they can also manage the risk," said Kim.
2. Create a culture of experimentation and learning
Smaller enterprises tend to get this right much more than larger companies, Klavens said: "They are more open to a culture of experimentation, and some of the failure that goes along with that."
When implementing DevOps, there is no checklist that tells you which tools to buy or what team to create, said Jeff Sussna, founder and principal of Ingineering.IT and author of Designing Delivery: Rethinking IT in the Digital Service Economy. "The whole point is the business needs to get the capability of learning, and it has to happen at all levels," Sussna said. "The basic principles of Agile come into play in terms of how you do that."
Sussna recommends clients take an Agile approach to DevOps itself. "Make a plan of where you think you want to go, start going there, and learn as you go," Sussna said. "Pretty much every single DevOps implementation adjusts as it goes. It almost never ends up exactly as people expect it to. If you go into this and say 'This isn't working the way we want it to, we're going to give up and go back to the way things were,' you've missed what you were trying to accomplish."
It's also important to talk with employees early on and identify bottlenecks, said Jennifer Davis, senior software engineer at Chef and co-author of Effective DevOps. Sometimes this requires hiring an external party to help individuals feel comfortable in expressing these challenges. "Often folks want to work together and collaborate, but they are hindered by the history or processes in place that discourage collaboration," Davis said.
3. Engineer resilience and adaptivity
DevOps is largely a response to increasing enterprise complexity, Sussna said. And the only way to manage complexity is to become resilient and adaptive. "Organizations have to change their approach from trying to engineer failure out, to trying to engineer in resilience to failure," Sussna said. He points to Netflix, Etsy, and Flickr, and how their deep innovation came from creating resilient systems.
The traditional change management process tends to be non-scalable, centralized, and not compatible with teams understanding how to respond as they go, Sussna said. "All of that needs to change," he said. "Organizations, and particularly leadership, need to give up some traditional approaches to control."
4. Get buy in from all teams
For a successful DevOps transformation, you need buy-in from individual contributors all the way up the management structure, Kromhout said. One way to do this is to examine incentives: Are people motivated for cross-team collaboration? What behaviors are you rewarding? What matters the most to your organization? "Put your efforts where the risk-reward tradeoff is appropriate," Kromhout said.
Whatever the industry, companies and individual teams must understand that they are in the service business, because we now live in a service economy, Sussna said. "It's no longer a matter of running the database or network or infrastructure, it's running the database in order to help application teams deliver value," he added. "You have to think about them as your customers, and yourself as if you are a small product or services company. It's one of the challenging culture shifts."
Additionally, both the Dev and Ops teams must understand the importance of continuous delivery of top-quality applications to customers, Curran said. "Emphasize the crucial need to work together," he added.
5. Eliminate blame culture
When a problem occurs, it's key to share information in a non-blameful way, with attention focused on what went wrong as opposed to blaming an individual, Davis said. "Environments where humans are blamed and punished for errors can lead to a culture of mistrust, hindering efforts to eliminate information silos," she added.
The recent Amazon Web Services S3 outage represents a good example of how to handle a setback, Davis said. The company publicly explained the problem and its solution without placing the fault on any team member.