If you aren’t doing DevOps now, chances are you soon will be. Results from the field show that DevOps is not only a more productive way to develop software, but also the resulting code is of higher quality and is delivered more quickly. In today’s business environment, who can afford to wait six months for new applications?
DevOps is an evolution of agile software development, which demands frequent releases and iterative feedback so that applications move steadily toward the business goal, nurtured by collaboration between developers and users. If you’ve ever waited months for your IT organization to deliver an application, only to find that it’s horribly different from what was requested, you know why this idea has appeal.
In a DevOps environment, code is deployed continuously to production for feedback and bug discovery. Release cycles may be daily or even more often. A survey of more than 9,200 software developers by Puppet Labs last year found that DevOps organizations deploy code 30 times more frequently than practitioners of more traditional development techniques. What’s more, they experienced 50 percent fewer failures.
One of the key differences with DevOps is that development and operations are bound together so that configuration of the infrastructure is part of the code itself. In other words, instead of doing development on one machine and deployment somewhere else, the machine becomes part of the application. You can’t do this without virtualization. When infrastructure scales up and down as the application needs it, you get better reliability and performance. The Puppet Labs survey found that DevOps practitioners spend 33 percent more time on infrastructure issues, but the time investment is more than offset by productivity gains.
Cloud computing, whether inside your firewall or purchased from a service provider, is essential to success with DevOps. The virtual platform needs to be as fluid as the application, and deployment from development to production needs to be automatic in order to meet the demanding delivery requirements.
Cloud providers are more than happy to support their customers’ DevOps needs. Nearly every major cloud provider offers a set of platform as a service (PaaS) tools that are fine-tuned to their environment. Their motives aren’t entirely altruistic, of course; tools provide a level of lock-in that can be difficult for customers to break. But if a company is happy with its cloud provider, then PaaS is a powerful addition to its development arsenal.
DevOps doesn’t come without challenges. The operational skills the discipline requires aren’t always second nature to professional developers, and practitioners agree that siloed organizations need to break down walls to get developers, operations personnel and end-users joined at the hip.
"DevOps roles require more interpersonal and communication skills than a traditional heads-down developer or operations person,” said Tracy Cashman, senior vice president and partner with WinterWyman, in an article on CIO.com. “Collaboration skills are key and the creativity to solve real-world problems is critical. Additionally, one needs to have a strong focus on process and continuous improvement."
Despite the challenges, the arguments in favor of DevOps are compelling. IT leaders should continue to explore the operational and cultural changes required to build a more agile approach to application development and deployment.