The term DevOps (for development operations) means different things to different stakeholders in software projects. DevOps is a philosophy -- some call it a movement -- that promotes cooperation between software developers and operations managers. DevOps has its roots in Agile, but it is relevant for applications developed in all methodologies. Similarly, DevOps plays a pivotal role in cloud computing, but its principles apply to on-premises deployments as well. The term DevOps is showing up in job titles on career sites that list open positions. But the skill set required for roles such as DevOps manager and DevOps engineer is not yet clearly defined.
In this FAQ, SearchSoftwareQuality editors explain the issues surrounding development operations and the many ways in which the term DevOps is used.
What problem does DevOps aim to solve?
DevOps is a collaborative approach to releasing software applications and updates. It brings together developers who write the software with operation managers responsible for deploying it. Traditionally, a wall has stood between these two groups, and the relationship is often adversarial. Here's an example of a common, negative stereotype: Developers expect operations managers to release new applications or updates on command, even though the code in question may not have been thoroughly tested. Operations managers, who consider frequent code updates risky, have been known to ignore change requests from developers, preventing release of the new software.
DevOps aims to move beyond this behavior by defining a way for the two groups to work together. Fostering cooperation is essential. Without it, release management will fail, harming the business, which relies heavily on software to sell products, serve customers and make money.
The skill set required for roles such as DevOps manager and DevOps engineer is not yet clearly defined.
How does the DevOps concept work?
DevOps aims to build a relationship between development and operations. The goal is to get all players to trust one another, understand one another's needs and priorities or, at the very least, work together effectively. Software tools that track the activities of Dev and Ops and make that information available to all stakeholders can help. An online release calendar, for example, shows expected release dates for projects in developments. Calendars are typically updated automatically, as a by-product of development activities, such as checking in code or passing tests. In the best-case scenario, the shared release calendar results in development and operations acting in each other's best interests. For instance, developers manage their projects around open dates on the release calendar.
Application lifecycle management software (ALM) suites, which provide tools for requirements, coding, testing and operations, incorporate features such as online release calendars. Cloud software tools also provide support for DevOps practices as well.
What is the relationship between DevOps and cloud computing?
In an ideal world, DevOps is more than a means of improving interactions between development and operations. It is a way to specify technical information about an application's needs for resources and connectivity. The ability to do that is especially important for cloud applications. In the cloud, operations staff typically manages thousands of physical and virtual servers, which host thousands of applications -- but they have no direct communication with the developers who wrote them.
On software teams with strong DevOps practices, operations managers work closely with developers to map out the operational components of the application, making sure developers build in the necessary dependencies. If the application's resources needs are specified properly, cloud provisioning tools can automatically read this information. This enables operations managers to automate the software deployment process.
What does a DevOps manager role entail?
DevOps manager and DevOps engineer job titles keep appearing on job listing Web sites such as Dice.com, but the skill sets associated with this relatively new role are not well defined. The role has emerged largely because more and more companies are moving applications and data to the cloud, and IT employees are needed to manage these deployments. Some experts define the role as a sysadmin on steroids or just a new name for an operations manager. Also unclear is what kind of IT background is the best fit for the DevOps role. It's difficult to find candidates with development and operations experience, which has led some experts to suggest that the DevOps role is more of a mindset than a skill set.
What is the relationship between DevOps and Agile?
DevOps is an offshoot of Agile development. It builds on the Agile ideas of continuous integration and ongoing releases of code into production. The concept of DevOps originated when Agile teams realized that frequent code releases would require them to work effectively with operations staff. IT consultant Patrick Debois is largely credited with coining the term DevOps. He organized the first DevOpsDays conference in 2009, as way of bringing development and operations together.
What does the term DevOps mean to you? Email SearchSoftwareQuality editors and let us know.