DevOps is a process to develop, deliver and operate Software. As simple as that you shouldn’t really underestimate understanding what DevOps really is. There are many DevOps definitions out there all over bookstore shelves and in the Internet which are either self-serving or at best missing and confusing.
Some commercially-driven definitions of DevOps tightly couple DevOps to some certain build and delivery tools or cloud infrastructure platforms. Although these tools and platforms could be really helpful to accomplish your IT and organizational goals with DevOps, you can’t really plug-in yet another tool (which you usually don’t have much control over it because you haven’t written it) or you can’t migrate your software applications to cloud computing platforms and then announce that you and your organization now deliver with DevOps. As some old but little known saying goes ravens would laugh at this.
Another misleading, but still better variant to define DevOps is to see DevOps as an intersection of work and people in an IT organization which brings software developers, software testers and software production operations engineers together. Having said that, once you reach to the end of this book, you can’t help but see how dry this definition is.
The best approach to define DevOps is to resemble DevOps in iterative agile software development and process improvement frameworks such as Scrum, Lean, ITIL, IDEAL (Initiate, Define, Establish, Act and Learn) and Six Sigma DMAIC (Define, Measure, Analyze, Improve and Control).
Although Agile Scrum, Lean, ITIL, IDEAL and Six Sigma DMAIC can serve as efficient enablers for DevOps, DevOps isn’t meant to be seen as an improved and combined superset of these methodologies and techniques. The very simple reasoning behind this fact is that none of these methodologies and frameworks except Agile Scrum have been introduced to specifically solve the problems and serve for software industry.
Many DevOps practices and principles have been derived from Lean Movement after they have been adapted, experimented, validated and fine-tuned for software development, delivery and operations. Moreover, DevOps borrowed and adapted many techniques and philosophies from Continuous Delivery Movement, Toyota Improvement Kata, Theory of Constraints, Agile Manifesto and Agile Infrastructure.
Lean movement can be summarized by seven principles:
You enable continuous delivery through the deployment pipeline. Deployment pipeline has three important missions: visibility, feedback, and continuous deployment.
You use Toyota improvement kata as a routine to move from the current situation to a new situation in a creative, directed, meaningful way. It’s based on a four-part model:
In contrast to other improvement approaches that you attempted to predict the path and focus on implementation, with Toyota improvement kata you learn and build on discovery that occurs along the way. You and your teams use the Toyota improvement kata to learn as you strive to reach a target condition, and you adapt based on what you’re learning.
In an organization including yours which delivers any kind of software, there is always an ongoing conflict between your IT and your business. Quickly responding business needs whereas still ensuring stable and predictable production environments is a continuous tradeoff faced by your IT. Assuming that you’re already fully aware that there isn’t no risk production release, in a complex system like yours you can’t be quick enough if you want to ensure a low risk production release. And you can’t ensure a low risk release if you want to quickly release your code to your production systems.
You cope with this conflict when:
With DevOps you adhere to the cornerstones defined by the agile manifesto:
Our organizations large and small including probably yours are relying on hybrid cloud infrastructures, combining public and private cloud with dedicated servers. Therefore, you collect the rewards of colocation security in combination with the flexibility and scalability of public cloud.
Here’s some of major drivers why an agile infrastructure is beneficial for DevOps:
In this section we explained you what DevOps is and what it isn’t. For you we have also covered the major movements and principles which DevOps was derived from.
A small caveat: Like many agile practitioners have been unfortunately doing in their agile practices since years, you shouldn’t stick to any stone-grained definition of DevOps to dictate how your particular organization, your product, your service and most importantly your team should use DevOps. There is no one-size-fits-all solution. Neither in agile nor in DevOps.
Never forget that it is all about learning, experimentation and adaptation. As DevOps will do a lot of good work for us, it is our role biggest duty as human minds to identify our correct version and tone of DevOps. This is what each and every successful DevOps organization including Google, Amazon, Facebook, Netflix and Apple have been doing.