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.
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.
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."
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."
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."
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.
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.