What Is DevOps, Anyway?

[article]
Summary:

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

Evaluating Your Own Organization for DevOps Readiness
How close is your organization to adopting a DevOps model? You can assess the DevOps capabilities of an organization by looking for these characteristics:

1. Cross-departmental collaboration of all stakeholders in an information-sharing environment: In a DevOps organization, developers, testers, and operations teams share a common collaboration and communication framework and use shared terms for describing goals, features, problems, and results. All stakeholders participate in a continuous cycle of requirements gathering, design, test, and assessment.

2. Design and development based on operational input: In a DevOps organization, developers understand how their software is going to be deployed, and they design and code their software with operational constraints and targets in mind. Provisioning details, such as application frameworks, operating systems, monitoring hooks, server and storage infrastructure, and peripheral connectivity, can’t be afterthoughts or problems for someone in another department. They’re considered up front as high-priority requirements along with other software application design goals and priorities.

3. Iterative deployment processes: An organization with an effective DevOps practice can repeatedly deploy applications and services to data centers, private clouds, and public Cloud platforms such as Amazon EC2 and then refine those applications and services based on lessons learned in operations. Starting with the first few application iterations, the team should be testing the application and organizational processes on a range of virtual and physical test platforms depending upon the stakeholder needs—from dev and build machines to QA labs to staging environment and, critically, under deployment load.

4. Continuous improvement: A DevOps organization practices continuous improvement. Operations and support teams feed needs to developers, so they can modify applications to better meet end-user and operational requirements. The organization should bring this process of continuous improvement to bear on all of its application lifecycle needs, including short-term critical bug patches and upcoming releases, as well as longer-term goals, such as application modernization and rationalization (i.e., replacing legacy software and platforms with new ones). Requirements for next-generation applications are managed through integrated DevOps teams and processes, rather than through parallel, “special case” teams and activities.

Benefits of DevOps
DevOps organizations can be recognized by their performance. The DevOps model delivers these important benefits:

  • Faster time-to-market: Hand-offs between development and deployment are generally one of the biggest bottlenecks in the application lifecycle. The DevOps model brings developers and end users together and minimizes the amount of time lost and the injection of errors due to poor communication and incompatible tools by automating the hand-off between the two departments. As a result, organizations can bring solutions to market more quickly, both for the initial application deployment as well as for subsequent software patches and release upgrades.
  • Better software: By giving developers and testers prompt information about operational requirements, the DevOps model enables development organizations to produce higher-quality code. A fundamental tenant of Agile is building the feature set that the business requires, and not more. By extending this agility to DevOps, building the right software means designing the right supportability and application robustness as a natural part of the development process.
  • Smoother operations: Because applications are designed with operational requirements in mind, operations teams will encounter fewer surprises when provisioning applications and services. Applications will achieve their SLAs much more quickly in the environments where they’re being deployed, yielding faster rollout and increased user satisfaction.
  • Increased productivity: Because all parts of the organization are sharing information, configuration control, and terminology, they’re able to spend time acting on information instead of searching for it and adding new features instead of fixing old ones. Operational productivity will increase, support costs will decrease, and overall user satisfaction will be improved.

Departmental DevOps vs. Enterprise-wide DevOps
The practice of DevOps has yet to reach a broad scale. Integrating so many people, tools, and processes takes a company-wide investment in new processes, collaboration, tools, and infrastructure. DevOps teams must consider the ability to scale to global teams, across multiple operational enhancement requests, for a variety of complex multi-tier targets that must be tested and operated on a variety of configuration and deployment targets. In most organizations, transitioning to an enterprise-wide DevOps model will be a multi-year process. It will require vision, effort, and patience. For most organizations, a hybrid approach will be the most practical, at least in the early months or years. Some teams will stay with their current operational processes as a function of their project business goals, technology targets, and overall team competency. Over time, however, the success of the teams who have already adopted DevOps will make the transition compelling and attractive, and more teams will migrate to this new model of operational efficiency as common processes and increased collaboration emerge.

Getting Started
Organizations can get started by rolling out DevOps to individual departments. The first steps? Deploy a collaborative platform (e.g., a “development cloud”) and make operations personnel members of the development team. This platform should enable all of the global stakeholders of an application lifecycle team to design, develop, build, and deploy software together using common services for software change management, issue tracking, collaboration, test systems, release configuration management and terminology, and more—from business owners, to development teams, to product teams. Representatives from the data center and the support team should attend design and Scrum stand-up meetings, prioritizing business value and user feedback. Working together, team members should agree on terminology, metrics, and goals. Over time, the departmental integration will seem natural, and the agility and productivity of the entire organization will increase.

In addition, the platform must scale from the workgroup to the enterprise. The largest gains for the enterprise will come when hundreds and thousands of project teams collaborate not only within a project, but across the enterprise using similar development processes, technology targets, and operational procedures. CollabNet has helped hundreds of companies implement this round-trip development and operational integration. These organizations have seen business benefits ranging from tens and hundreds of thousands of dollars for the individual workgroup to hundreds of millions of dollars for enterprises at scale. Design cycles have been cut by up to 70% with the adoption of Agile development techniques and cross-enterprise collaboration. Once the “DevOps cloud” is in place, the gains can big.

Summary
In a nutshell, here’s what you need to know about DevOps: Agile development is based on building what the business users need. DevOps extends agile by letting your operations team get their needs into the development cycle as well—and faster.

To make the most of Agile development and Cloud computing, look for ways to integrate departments, share information, and create repeatable, collaborative processes that scale from the workgroup to the enterprise. Treat DevOps not as a buzzword but as an authentic, strategic goal.

User Comments

1 comment
Uri  Margalit's picture

A very clear and thorough explanation of DevOps, indeed.  But, it is also must be noted that it is not only important to create greater collaboration between development and operations, but among the various "silos" that exist within the development organization as well.  Read more about my thoughts about how to overcome that challenge here.

April 25, 2013 - 5:56am

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.