Download the authoritative guide: Cloud Computing 2018: Using the Cloud to Transform Your Business
It appears that DevOps best practices are more important than ever. Thanks in part to the growth of mobility and the Internet of Things (IoT), enterprise development teams are under increasing pressure to deliver more apps, faster. In December 2015, Gartner predicted that "market demand for mobile app development services will grow at least five times faster than internal IT organizations’ capacity to deliver them, by the end of 2017."
As a result of this mismatch between needs and capabilities, organizations are looking for ways to increase the speed of development. And increasingly, one of the things they are trying is DevOps. According to Gartner, organizations spent $2.3 billion on DevOps tools in 2015, and it forecasts, "By 2016, DevOps will evolve from a niche strategy employed by large cloud providers to a mainstream strategy employed by 25 percent of Global 2000 organizations."
Vendor estimates of the size of the DevOps market are even rosier. A 2016 RightScale report claims that 80 percent of enterprises and 70 percent of small to medium-sized businesses (SMBs) are adopting DevOps.
Unfortunately, while companies may be rushing to adopt DevOps, they aren't always certain what DevOps entails. Several different organizations have put forth competing ideas, and the IT industry hasn't yet reached agreement on an authoritative definition. Gene Kim, one of the most visible proponents of DevOps and a co-author of the popular business novel The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win, admits, "One of the valid complaints about DevOps is that it’s difficult to describe what it is."
Despite this lack of a standard definition, experts do agree on the foundational principles of the DevOps. In general, DevOps is about creating a culture where IT development and operations teams work together very closely. Born out of the principles of Agile and Lean development, DevOps involves automating processes as much as possible in order to increase the rate at which organizations deploy new applications. And the ultimate goal isn't just to make IT more efficient, but to help make the organization more successful.
The DevOps.com web site offers a wealth of information about DevOps.
DevOps Best Practices: Top Tips from Experts
Those core principles leave a lot of room for variation and experimentation, and many organizations wonder what exactly they should be doing if they want to start using DevOps practices. To answer that question, we asked several DevOps experts for their tips and advice about DevOps best practices.
1. Start Small.
Experts caution that trying to do too much at once is a sure recipe for failure with DevOps. Any large IT organization will have existing processes and an in-grained culture that simply can't be changed overnight.
Instead, they recommend starting small with a project or a team that could benefit from DevOps practices. The key is to select a project where DevOps has a high probability of success and where it can serve as a foundation for future DevOps efforts.
"The changes can (and should) come in order based on where you’ll experience the biggest benefit," says Tim Buntel, vice president of products at Xebia Labs. "Evaluate what’s causing the most pain in your development and deployment process today and prioritize that step."
David Cramer, vice president of product management for BMC’s Cloud Management, Data Center Automation business, agrees. "It is critical to get an early win so the team can build confidence and set an example for others," he says. "The success of the initial team has a direct impact on the ease of effecting change on a larger scale. The project itself is also important, so be sure to pick something that is meaningful to the business. If the initial project is not strategic, people will discount the results."
2. Focus on the Culture, Not the Tools.
Above all else, adopting DevOps is about making a cultural change. Investing in automation or buying new tools is not going to be enough to bring about the kinds of change most organizations are hoping to achieve.
"A common pitfall is to focus on the technology, rather than the cultural elements," says Stevan Arychuk, DevOps evangelist with New Relic's strategic marketing team. "DevOps is about trust and collaboration between the various engineering and operations teams; the tools and technology are really servicing that goal."
"Most technology teams believe that tools can solve all problems," adds Buntel. "While tools are absolutely important for DevOps transformations, they won’t be any help unless accompanied by real cultural change. Think about your business objectives, think about trust and communication, think about why. Only after working on how to start the cultural shifts should you invest time and energy in a technical solution."
3. Invest in Tools that Create Real-time Project Visibility.
While tools alone aren't enough, they are definitely part of the answer when it comes to the question of how to adopt DevOps. Experts say that in order to encourage communication and collaboration, it's very important to have tools that allow everyone to see in real time how work on IT projects is progressing.
In addition, organizations need to make sure that all of the different team tools they deploy can integrate together. It's very common for organizations to invest in multiple tools designed to support DevOps. For example, they may have a version control management system, a bug tracker, a communication platform, a helpdesk platform, operations monitoring tools, etc. Ian Buchanan, developer advocate, Atlassian, says that he has "seen a lot of teams thrashing when their delivery toolchain doesn't fit well together." As a result, he recommends "tool integration as the most helpful technology in supporting DevOps."
4. Deploy Automation Technology.
The other very important piece of DevOps technology is automation. "Any technology that helps you automate processes in a controlled and scalable way is helpful," says Buntel.
Numerous vendors currently offer automation tools that can simplify the process of configuring, monitoring and maintaining network infrastructure. These tools can help organizations deploy applications more quickly and help improve IT's efficiency.
Along the same vein, containerization technologies like Docker can also be very helpful. Containers ease the transition from development to production servers and eliminate a lot of the headaches involved in the deployment process.
5. Increase Your Speed of Deployment.
According to Puppet Lab's 2015 State of DevOps Report, "High-performing IT organizations experience 60 times fewer failures and recover from failure 168 times faster than their lower-performing peers. They also deploy 30 times more frequently with 200 times shorter lead times."
Similarly, a Forrester report titled "The New Software Imperative: Fast Delivery With Quality" found that "development teams that consistently deliver at the fastest cycle times enjoy the highest business satisfaction." Importantly, teams that were able to deliver new applications the fastest were also creating the highest-quality software.
For most enterprises, increasing the speed of deployment is a key goal of their DevOps initiatives. In order to achieve that goal, they often deploy technology that promises to speed development and they frequently implement Agile development techniques, such as test-driven development, continuous integration, pair programming and Scrum methodologies. Experts say it's important for organizations to remember that the techniques and the technology aren't the goal in themselves; instead, they are a means for accomplishing goals like faster deployment, improved code quality and, ultimately, better support for the business.
6. Increase Your Feedback from Operations.
While the development side of the DevOps equation frequently gets a lot of attention, the experts caution that it's important not to forget about operations. Often, organizations can achieve a lot of efficiency by improving the communication and collaboration both within operations and between operations and other parts of the IT group.
"In many cases, agile has already pushed dev teams to optimize their delivery pipeline," says Ian Buchanan, developer advocate at Atlassian. "Those teams would be better served by starting with the idea of amplifying feedback from operations, rather than sub-optimizing with more delivery automation."
7. Establish Some KPIs to Measure Success.
Why are you transitioning to DevOps? And how will you know if the transition is successful? Experts say it's a good idea to answer these questions before implementing DevOps. Ideally, DevOps should have a positive impact on some of the Key Performance Indicators (KPIs) that you track for your business.
"Be clear on why you are implementing a DevOps approach and institute a clear framework for measuring success," suggests Stevan Arychuk, DevOps evangelist with New Relic's strategic marketing team. "The true value of DevOps ultimately means better leverage and agility of technology to support the business, so effective DevOps strategies should be able to quantify positive impact to business KPIs."
8. Change Your Business Processes to Match Your Development Cadence.
When you make a change in your IT processes, it's going to affect other parts of the business as well. Cramer recommends taking a "holistic view." He explains, "It is important to change business processes to align with the new release cadence stemming from DevOps. For example, the marketing team may have processes in place to focus on traditional annual or semi-annual product launches, and they don’t understand how to adapt processes when the releases are much smaller in scale and more frequent. Another example is the internal governance process where the requirement is visibility into 12-month release plans."
IT leaders need to make sure that they are communicating and collaborating with these other departments as well as within the development and operations teams. In fact, many organizations that have implemented DevOps say that the principles behind the philosophy can be beneficial for many other internal teams, not just IT.
9. Participate in the DevOps Community.
With so many enterprises adopting DevOps, there's no need for organizations to "reinvent the wheel." Experts say that companies can learn a lot by participating in DevOps events and online communities and by talking with other organizations that are involved in similar initiatives.
"The idea, practices, and tools that make DevOps work are constantly improving," notes Buchanen. "Your people will need to use the community to check theories, to benchmark progress, and to find inspiration for even more improvements. And don't be shy about telling your story, no matter where you are in the DevOps journey. There's always another company who will find your story helpful."
DevOps Best Practices: a Journey, Not a Destination
As organizations move towards implementing these DevOps best practices, they should keep in mind that adopting DevOps is a long-term process. Unlike other IT management practices like ITIL, Agile or Lean, DevOps more a movement and a philosophy than a specific framework or set of practices.
In most cases, enterprises aren't going to reach a state where they can say they have "achieved DevOps." Instead, they are constantly going to be experimenting with new tools and processes, trying to find those that can help them achieve greater integration between development and operations, and ultimately better results for the business.