“DevOps” is a contraction of “development and quality assurance” and “operations” that describes the practice and result of the bi-directional integration of these functions in an enterprise. It is a set of development, quality assurance, and operational tools and processes aimed at achieving the business goal of deploying timely and higher-quality software products and services.
If you’re using agile methodologies or running software in the cloud, it’s inevitable that you’ll someday wrestle with the challenges of DevOps, which offers a collaborative approach to ensure that fast, nimble development teams stay in sync with the operations teams running data centers and deploying applications in the cloud. When the teams are in sync, developers and quality professionals accelerate the right set of deployment priorities in their design and test practices and operations teams keep the cloud computing environment predictable, efficient, and controlled. Ultimately, DevOps helps enterprises realize the full benefits of agile practices. A growing number of enterprises are adopting DevOps practices to amplify the benefits of agile development by extending agile concepts and processes across the entire organization.
DevOps: A Closer Look
In the DevOps model, development organizations work closely with operations teams to design, test, deploy, and optimize applications. Team members share tools and assets across all departments and collaborate in real time on all phases of the application lifecycle. When questions arise in development, operations and support can share their expertise. When problems arise in operations or support, developers can instantly implement fixes. Groups can now participate in decisions from which they were previously excluded. When markets change and new opportunities arise, the IT organization can react nimbly and effectively.
The Rise of DevOps
Four trends are driving the adoption of DevOps: distributed development, cloud computing, complex application deployment, and agile methodologies.
The use of distributed teams, whether arising from outsourcing, mergers and acquisitions, or partnerships, has driven development organizations to deploy Web-based tools for sharing information and coordinating processes. With global access to this centralized development infrastructure in place, enterprises have extended this lifecycle collaboration to other parts of the organization, such as test and QA teams, documentation teams—and now, with DevOps—to the data center engineers and support staff. Collaborating online, these departments are now working together more closely than they could in the days when each department had its own IT silo of tools and processes.
Cloud computing is another important driver of DevOps. Many development organizations have been won over by the convenience and horsepower of Cloud platforms such Amazon EC2 and Force.com. Code can be developed and deployed quickly in a single cloud. Application instances can be launched, scaled, and shut down as needed. Once development teams and operations teams are monitoring and managing the same platforms, greater cooperation and collaboration can naturally occur. As private clouds gain popularity, enterprises are replicating similar strategies within their own organizations.
Whether development teams are deploying on external or internal clouds, these teams must consider the fact that today’s applications are increasingly complex multi-tier configurations consisting of distinct technologies and approaches for the Web layer, the application layer, and the database management layer. Making this more complex is the wide set of interconnected testing and deployment targets with varying operating system, server, and storage components, as well as peripherally connected mobile devices and desktops. These increases in application and operational requirements demand a common system in which development and deployment personnel are able to react in real time throughout the application lifecycle to support the user community.
Perhaps the biggest driver of DevOps is Agile development. Agile processes depend on developers getting prompt, accurate information about business needs, deployment requirements, and defects. There’s no better way to deliver the critical deployment information than to team developers with the operations engineers who provision, monitor, manage, support, and troubleshoot the development team’s software.