What is DevOps?
With the 2018 “State of DevOps” report telling us that those who implement the practice enjoy software delivery times that are 2,555 times faster, its clearly worth the time to learn more about it and how to implement it in your own organization.
The simplest and most understandable definition of DevOps can be drawn from the two words it is a compound of, development and operations. As we move along you may find it useful to change the question “What is DevOps” to “What can we achieve by implementing a DevOps culture?”In the earliest days of computer programming, a programmer produced the code necessary to have the computer perform specific functions. That code was presented to the computer operations team who loaded it and ran it. If something went wrong, those computer operators really had no idea how to fix it, so they returned the code to the developers to make corrections. As you can imagine, this could become very time-consuming very quickly, and did.
DevOps celebrates the value of collaboration, communication, and integration making them the three main principles of this ever-growing, modern approach to software delivery. In this case, it’s collaboration between the developers of the software and the operators of the hardware. They come to share methodologies and tools working as a single united team.
Before There Was DevOps, There Was Agile
We usually find ourselves using the word “agile” to describe athletes, dancers, and other people who move quickly, gracefully, and with precision. Those qualities led to the adoption of the word to describe a new methodology that began a radical change in the way software gets developed.
When “devops” was first developed in 2009 and named by Patrick DeBois, he described it as an extension of “agile” development environments that aim to enhance the process of software delivery as a whole.
In this context, agile refers to the Agile Software Development model that was developed to improve upon the classic “waterfall” method in which each step cascades from the previous step. This was far too slow to accommodate ever increasing needs for speed in development and deployment of software. DeBois and his team developed an “Agile Manifesto” with a fairly simple and straightforward set of values and principles:
The Agile Manifesto’s values are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The developers of the manifesto point out that there is value in the items on the right side of their list, but they value the left side items more.
Agile's principles are:
|Highest Priority is Customer Satisfaction||Progress Measured by Working Software|
|Welcome Changing Requirements||Sustainable Development Pace|
|Frequent Delivery of Software||Continuous Attention to Technical Excellence|
|Business People & Developers Cooperating Daily||Simplicity|
|Build Projects Around Motivated People||Self-Organizing Teams|
|Face-to-Face Conversation is Best||Regular Reflection & Adaptation|
While you’d like to think otherwise, the fact is that many of these principles are a radical departure from what normally happens in the IT departments at most organizations.
- The highest priority for the software development team may be the completion of more items from their “stack.” Operations may focus on avoiding complaining users. The customer often doesn’t show up.
- The status quo represents “peace and quiet” but not progress. Change is, at best, unwelcome.
- Updates and new versions, when they do show up, are downright feared, with the result of many users staying with the old version and creating all manner of havoc.
The emphasis is on process and product rather than people. By contrast, the Agile methodology talks about individuals and their interactions, collaboration with each other and with customers. Reflection before reaction.
Taking Agile to the Next Level - DevOps
DevOps added a few new principles, most especially the concept of CI/CD (continuous integration and continuous delivery). This spoke most directly to the emerging environment everyone found themselves living in. Everything happened faster, so businesses needed to respond faster. Time was of the essence, so there was a need to find a way to constantly be improving upon your software to help you remain competitive in a highly dynamic world.
Therein lies the promise of DevOps, an environment of constant, interactive improvement to the way people get their work done. True, constant interaction and sharing of tools and techniques between those who create software, those who keep the software running, and those who use the software cycling perpetually.
To find out how to align your companies culture and processes with DevOps check out our informative white paper "DevOps Gives Wing to Your Development Efforts."