The term DevOps is moving into our vocabularies in much the same way the word cloud did—creeping in slowly and quietly until suddenly it surrounds you.
So what is DevOps, really? Unlike a new programming language or a new framework, DevOps is as much a concept as it is a thing. There is consensus that the word DevOps is coined from development and operations. But what does that really mean?
Consider this: in most organizations, the development team and the IT operations team have been siloed or separated from each other in some fashion. This segregation seemed to work just fine when a waterfall software development model was in play.
But does it work when a development team adopts an agile development model?
The short answer is no. Or at least that is the contention of the forces driving the DevOps revolution.
If an agile team is charged with getting potentially releasable code out at the end of every sprint, what does that do to the IT operations group? Can they keep up with the velocity?
In the DevOps world, the two teams combine together into a single team with everyone working together to get application development done, tested and deployed as rapidly as possible.
The biggest gain from eliminating the silo comes at application support time. With the full team engaged on the front line, you can eliminate the finger pointing and not-my-problem shrugs that come with the siloed teams.
This cannot be achieved without the introduction of some supporting infrastructure, which is why many people are confused about what DevOps really is. When you talk about DevOps, you inevitably start talking about automation.
So is DevOps the toolchain? No. But can you achieve the goals of the DevOps mindset without the toolchain? Well, no to that, too.
In short, DevOps is a concept—true—around which a toolchain has evolved—also true.
Development
Whatever tools and technology stack are already in use. The source repository / version control system, which is lumped into this group, is more important than ever because more people than ever will be interacting with it. When it comes to repositories, tools like Subversion, GIT and Microsoft Team Foundation Server fit into this category.
Release
This starts with continuous integration (automated build process triggered from source control commits, including running of automated tests), but then goes a step further to automate the deployment of successful builds. Tools like Jenkins, Travis and TeamCity can drive this automation.
Configuration Management
Another concept that is wide ranging. Typically configuration management includes everything having to do with hardware, operating system and software versions throughout an enterprise. Being able to rapidly update many machines (dozens? hundreds? thousands?) automatically when you need to apply upgrades and patches is essential when an organization is trying to be agile. And especially in a mixed environment that has multiple configurations, companies need a fast way to validate releases for all scenarios. So tools like Puppet, Chef, CFEngine, and Docker have come into existence to automate deployment of configuration changes. It covers a lot of ground.
Orchestration
In DevOps parlance, automation refers to a single task while orchestration refers to automating an entire workflow. Many tools that serve other purposes, like configuration management tools, offer orchestration support. But Cloudify and Ansible are notable examples of tools in this space.
Monitoring
Another one of those simple words that packs a punch. Monitoring embraces servers, storage, the network itself, traffic on the network and a whole lot more. There is probably no one tool that monitors everything—or does it well—so most DevOps teams will use a series of tools. Sensu and Prometheus are good examples to explore, among the many monitoring products available.
Depending upon who you listen to, the categories of DevOps might break out differently (more, fewer, different names), but these cover the basics.
As a new crop of system administrators join companies, they are bringing to them a sensibility that they need to be able to write scripts and code in a variety of languages, automate their work and get things done rapidly. They definitely have the viewpoint that all of the personnel involved in getting software out the door are on the same team. As they grow into increasingly responsible roles in their companies, DevOps is likely to become more and more commonplace—not less!