When you search Google for the phrase "What is DevOps," you get hundreds of thousands of results.
Below are a few of the definitions collected from the search.
Rackspace’s promotional video “What is DevOps? - In Simple English” says:
DevOps integrates developers and operations teams in order to improve collaboration and productivity by automating infrastructure, automating workflows, and continuously measuring application performance.
DevOps (a portmanteau ofdevelopment and operations) is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) operations professionals. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services.
The Agile Admin explains:
Effectively, you can define DevOps at the top level as system administrators participating in the product development process alongside developers and using a many [sic] of the same techniques for their systems work.
DevOps is an enterprise capability for continuous software delivery that enables organizations to seize market opportunities and reduce time to customer feedback. By applying lean and agile principles across the software delivery lifecycle, DevOps helps organizations deliver a differentiated and engaging customer experience, achieve quicker time to value, and gain increased capacity to innovate.
In my own words, I can summarize DevOps as a mix of collaboration, automation tools, continuous delivery, and agile.
More interesting questions are, What problems is DevOps trying to solve? And is DevOps successful in addressing those problems?
How Problems Originated
During the last two decades, we moved away from the development of monolithic software applications running just on a few servers. Now, we have complex systems assembled during development that use a wide variety of best available tools and run on large hardware clusters, clouds, built from hundreds or even thousands of physical servers and virtual machines.
In such an environment, maintaining the infrastructure using traditional methods of manual maintenance becomes increasingly difficult.
This fact led to the creation of automation tools for operations, such as CFEngine and, later, Puppet. But it also meant that part of the application logic related to the underlying infrastructure moved to another department and slowly created the tensions described in one of the most important articles about DevOps, “What is DevOps?”
The article suggests that tensions were caused by differences in the mindsets of developers and system administrators (at that time they were not yet being called DevOps engineers), changes in organizational structure, and variations in tooling.
But the biggest challenge that inspired the creation of the DevOps movement was the need to keep up with the growing amount of communication between the development and operations teams.
The First Step toward a DevOps Solution
Admittedly, DevOps is not a specific methodology, like Scrum, but more of an umbrella term, similar to agile. It means that there is no prescription on how to “do” DevOps.
And yet, by looking at the many definitions of the term, we can recognize certain practices intended to enable successful DevOps adoption.
Such practices typically include cross-functional DevOps teams with shared business goals, education for creation of a similar mindset between Dev and Ops teams, and the elimination of differences in tooling.
These actions and other DevOps practices are created based on experiences uncovered by companies that already figured out how to manage large infrastructures—companies such as Etsy, Facebook, and Flickr.