Software Development at the Speed of DevOps
DevOps seeks to improve the speed and quality of software development and support. It involves integrating and automating the work of software developers and IT operations professionals.
In recent years, some IT organizations have moved to a new software development delivery model called “DevOps.” DevOps refers to a set of practices designed to facilitate interactions between the application development and operations functions, and ultimately aims to increase the speed, improve the quality, and reduce the cost of software development, ongoing enhancement, and support.
Traditionally, IT organizations have run their development and operations functions separately, largely because the two groups have different missions that yield opposing behaviors. “App Dev” for example, looks to shorten delivery cycles and often maintains an “experiment and learn” mentality, while “Ops” seeks to institute controls and more tightly govern change. At the same time, the two organizations are very much dependent on each other. Dev creates the code that Ops tests, puts into production, and later maintains, while Ops creates new work for Dev by sending code back for enhancements and fixes.
The separation of Dev and Ops can lead to serious inefficiencies in the software development lifecycle, from duplication of work to the inadvertent creation of bugs. DevOps seeks to remedy those problems by integrating the tools used by Dev and Ops, and automating many of their activities, including scripting, configuration management (recording the versions of various software applications running inside a company and the updates that have been applied to each of them), quality assurance (QA) testing, and defect tracking.
In DevOps environments, software developers can test their code before releasing it to operations because their software development environment is linked to the production and QA environments. Consequently, developers can discover and remediate defects early in the software development cycle. They can also confirm their code will work properly once in production.
Despite the apparent benefits of DevOps, few companies have fully committed to it. In a recent survey, Gartner found that “only one-third of companies surveyed were either in-process or planning to implement DevOps, and close to 44 percent of respondents were still trying to figure out what DevOps means.” Many of those companies in the process of implementing DevOps have focused on automating parts of the software development lifecycle; however, automation alone will only go so far in improving speed and quality. Companies that take their automation efforts to the next level by integrating Dev and Ops activities and tools may supercharge software development and create a much higher level of customer satisfaction.
Where to start?
The agile software development community may have popularized DevOps, but the practices can also benefit IT departments that follow the waterfall method. Indeed, opportunities to make a shift to real-time DevOps abound, but there are some projects—such as those involving mobile, social, and big data—that likely beg for a faster and more integrated development and operations approach. In these fast-growing areas, disjointed development processes riddled with bottlenecks can undermine an organization’s efforts. Unless IT can find a way to accelerate delivery without sacrificing quality—and real-time DevOps is likely that way—IT departments will find the business increasingly bypassing them and going directly to the marketplace for software development services.
When implementing DevOps:
Establish the need. Identify delays and waste in your organization’s software development process. Consider the amount of time the development team spends on activities like manual document capture, build management, build verification, release planning, and test script development. Those activities present opportunities for action and improvement.
Lay down the bases. Once you understand your organization’s pain points, begin automating individual components. For example, a continuous integration and build server allows developers to automatically integrate their work throughout the day and scans it for integration errors. Automated “smoke tests” determine whether software works well enough to merit further testing, and release automation tools move software between development, testing, and production environments.
Connect the dots. Once you’ve automated components of the software development lifecycle, look for ways to link them into a single stream that can shorten the cycle. For example, continuous integration links the processes for building software to defect tracking, configuration management, and release management. In a continuous integration model, handoffs and touch points among developers happen seamlessly in the background.
Build new skills. Dev and Ops staff will certainly need core skills, like the ability to configure various software development tools and write different scripts in a DevOps environment. But for DevOps to firmly take hold inside an organization, staff may need to augment their soft skills to facilitate collaboration among each other, with the business, and program and project managers.
Employ “services thinking.” To apply DevOps to legacy ERP and large-scale custom solutions, it helps to break down complex systems into components and modular services. This allows for rapid, incremental changes within monolithic code bases, and sets up the organization for a broader modernization effort.
Look beyond cost and speed. Embrace the lower costs and greater speed that come with real-time DevOps, but recognize that more substantial benefits are also possible. If you believe that your technology delivery model can benefit from real-time DevOps, it’s time to get teams delivering against your priorities with a much more compressed cadence.
Commit. Too many companies dabble in DevOps—acquiring tools and adopting some of the terminology, but without making hard changes to their operating and delivery models. If there is a case for real-time DevOps in your organization, don’t fall for superficial, one-off investments. If you do, don’t be surprised if you get unremarkable results.
Real-time DevOps is a process shift that changes the tempo of how much software development can be done, in what timeframe, and how it can best be supported. Early adopters have the opportunity to profoundly improve their IT shops—accelerating IT delivery, improving quality, and better aligning with the business.
1. Worster, Laurie F. et al. “Emerging Technology Analysis: DevOps a culture shift, not a technology” Gartner, Inc. Aug. 8, 2013
Related Content: “Creating Effective Performance Testing Plans”
Questions? Write to Deloitte CIO Journal Editor