Most successful DevOps organizations automate using tools in a few core categories, using a variety of specific tools:
WhenDevOps aficionados throw around phrases like “automated infrastructure,” “infrastructure as code,” and “programmable infrastructure,” they’re talking about configuration management. That’s the tracking and controlling of changes to the software code base and the archiving of all file versions into a central configuration management database (CMDB), which enables multiple developers to work on the same code base while avoiding version-control issues. Popular configuration management tools include:
But the real question is what do you need in configuration management? For example, if you want to take in data that other people provide and then do something with it, you need a tool that handles that well.
Application deployment tools enable the automation of releases, and are at the heart of continuous delivery, one of the primary tenets of DevOps. Capistrano, a deployment library, is the most popular standalone tool in this category. Other popular tools for automating application deployment include:
Again, the key is to find a tool that tracks behavior—from history to change logs–in ways that is meaningful for both dev and ops.
DevOps requires two distinct types of monitoring. Application performance monitoring tools enable code-level identification and remediation of performance issues. At the infrastructure level, server monitoring tools provide visibility into capacity, memory, and CPU consumption so reliability engineers can fix issues as soon as they appear.
Monitoring tools would include
The key is make sure that everyone can see the data so they can make better decisions.
To achieve the benefits of DevOps, it’s essential to version not just your application code but your infrastructure, configurations, and databases. This requires scripting all of your source artifacts, but the payoff should be a single source of truth for both your application code and your IT systems and databases, allowing you to quickly identify where things went wrong, and recreate known states with the push of a button. No more having to play detective to figure out which versions of your application code goes with which environments or databases. While commonly used version-control tools include:
They differ widely on how well they support DevOps-style collaboration.
Test and build systems
These tools automate common developer tasks including compiling source code into binary code, creating executables, running tests, and creating documentation. Tools in this category include:
The right tool chain for DevOps will automate IT services, provide real-time visibility into system and application performance, and give you a single source of truth. More important than an individual tool’s capabilities, though, is how closely the all match your organization’s strategic goals. That’s the way to maximize your chances of achieving DevOps goodness.
Of course, tools are only part of the DevOps equation. You also need to create a culture that gets dev and ops working together towards the same goals.