What is DevOps and why is it hot? DevOps extends Agile software development methodology to include infrastructure and operations. DevOps is hot because every business recently discovered that it is in the software business. No matter what business you’re in, you are a software developer. We all are.
You can’t overstate the business case for DevOps. The $3.8 trillion IT industry is moving toward virtualized infrastructure (cloud computing) and abstracted software (containers (like Docker)). Companies must deliver better customer experiences faster or go out of business. Those companies include hundred-year-old industries torpedoed by digital transformation (e.g. Kodak, Barnes and Noble, taxi cab companies, etc.). Think about what Starbucks achieved, for example, with its mobile application. Approximately 40% of Starbucks in-store purchases are made with the mobile application.
Demand for DevOps is clear. To explain DevOps, I will borrow heavily from a definition from F5’s DevCentral. Let’s start at the beginning, the Dilbert era of software development.
The PC Era
About two decades ago software was developed for installation on personal computers with physical media (DVDs, CDs or floppy disks). Development teams worked tirelessly 6+ months on the next release of their product. When the development team gave it the green light, it would go to the quality assurance engineers to perform end user testing, then back to Dev to fix things, then back to test and so on. When QA gave it the green light, it would go to pressing and packaging and ultimately end up at the end user.
The Internet Era
Once software companies discovered they could distribute their applications in “soft” copy via the Interwebs they eliminated the overhead and costs for physical media, paper manuals and shipping costs while providing almost instantaneous access for their customers to their latest and greatest software.
The Agile Era
Agile was born when some developer dreamed up the idea of the “hotfix.” Users no longer had to wait 6 months for a “bug” to be fixed in their local copies of the software. Hotfixes only contained a fraction of the code needed for a major release and, consequently, needed to be produced on a much shorter time frame and at a much higher frequency. Developers and QA came up with Agile and Scrum, new development methodologies, to handle the more frequent development cycles.
The Cloud Era
Back in the PC era, customers hosted their own applications on their servers. In those days every company had an IT manager or Network Operations manager who was responsible for the network, Internet access, every node on the network, security, authentication and all issues related to infrastructure reliability. Today infrastructure responsibility has shifted from the customer to the vendor. Network Operations is a huge responsibility among software vendors that serve applications. If a company’s email server fails, nobody outside the company cares. When Gmail fails, billions cry out at once. That’s a lot of pressure on Google Network Operations.
A Brick Wall
Given the higher stakes in reliable network infrastructure, Network Operations started enforcing processes that set them in opposition to developers in the dev-test-production migration. Needless to say, things went from good to worse. A brick wall was being built between Dev and Ops. Dev would toss a release over the wall to Ops. A response would be tossed back over the wall to Dev with either the successful QA and deployment or rejection to fix something and try again. Dev started seeing Ops as those trying to stifle their innovation while Ops saw Dev as reckless with no regard for how the apps run in the real world. Distrust then led to a slow development process with logs of back and forth.
Since the Agile development process was so successful in helping put sanity in the code production process, at the Agile 2008 conference, Andrew Clay Shafer and Patrick Debois discussed the new concept of “Agile Infrastructure” and afterwards created the “Agile System Administrators” group on Google. The term “DevOps” was born and made popular through a new “DevOps Days” set of conferences that started in 2009 in Belgium. DevOps takes the Agile development processes to the next level by adding Ops into the mix.
To put it succinctly DevOps is a set of tools and methodologies to help Dev and Ops work together to enable pushing more software updates out faster and more reliably. Regular communication, small batches of work, and an iterative approach are just a few pieces of the puzzle.
By now you see how the DevOps methodology came to be and the problems that it is trying to solve. It’s important to keep in mind that DevOps is not a end-all-be-all solution. Just as Agile and Scrum are tweaked and adjusted by developers, DevOps tools and execution vary based on the companies requirements and dependencies. To help with the execution, several companies like Chef, Ansible, Salt Stack and Puppet Labs build products and solutions to help companies adopt these ideas and become productive with application development and deployment.
Today companies like Nordstrom and Starbucks crank out two three software deployments a day. Processes that used to take 6-12 months are done in a few hours. This is what’s required to be successful in the digital transformation. And DevOps is how it’s done.