What Is DevOps All About?
Damon Edwards tackles the question of what DevOps is all about in an interesting blog post on dev2ops.org.
Edwards writes, “DevOps is, in many ways, an umbrella concept that refers to anything that smooths out the interaction between development and operations. However, the ideas behind DevOps run much deeper than that.” So, what comes under this umbrella, and what needs to be smoothed out between development and operations?
Development is in the business of providing new features and capabilities to meet customer demand. Agile supports this requirement via a process that emphasizes iterative development, continuous integration, and delivery. However, operations doesn't always follow this same set of priorities. QA is also a stakeholder, with requirements that need to be addressed. Operations is focused on providing a reliable environment with no down time and interruption of services.
As Edwards notes, “DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity. This disconnect often manifests itself as conflict and inefficiency.”
The article goes on to describe the wall of confusion” that manifests itself in what is often a dysfunctional relationship between development and operations, with development throwing the release over the wall to operations, which in turn resists change for fear of instability and potential outages.
However, QA needs a reliable environment, free of unexpected changes that could potentially impact the validity of the testing effort. So, how do we provide stability while still responding to demanding customers?
In practice, Edwards writes, “Operations manually hacks the deployment scripts (provided by development) or creates their own scripts.” More often than not, there turn out to be differences between deploying to the production environment and deploying to development.
When the production deploy fails, operations complains that they received faulty code. Development responds by saying that everything worked fine in their test environment. The “wall of confusion” is essentially a game of volleyball where the customers are the real losers.
DevOps focuses on addressing this problem and provides an approach that allows for rapid and reliable deployment. The critical success factor is early cooperation between development and operations. Moving deployment best practices upstream results in better service and support for QA, improved productivity, and, ultimately, better customer service.
The DevOps umbrella is wide indeed and provides pleasant shade for all stakeholders in the software and systems development effort.