We hear a lot about DevOps and the benefits seen by company’s who implement it. We also hear a lot about continuous integration and continuous delivery which, according to most surveys, have already been implemented by the majority of companies.
Most organizational changes require some degree of technological or tool-based assistance. DevOps, continuous integration, and continuous delivery are no different.
In fact, I can say without exaggeration that more often than not, the success or failure of an organization’s move to DevOps (or any number of overlapping agile IT philosophies named otherwise) hinges on the tools that they identify and roll out in pursuit of their goals.
With that in mind, I’ve compiled this master list of tool types with specific suggestions that I’ve found to be best in class.
Continuous processes can increase productivity, speed up time to market, reduce risk, and increase quality, but they need to be built on top of a robust process. The process must be properly thought out in order to handle the organizational challenges, but at the same time needs to be very efficient, quick, robust, and accurately repeatable. This is exactly the reason why we always use tools – and the reason for the “DevOps Toolbelt”.
The DevOps toolbelt is all about arming yourself with a set of complimentary task-specific tools that can be used in combination to automate an end-to-end process. The most common tools in your belt should be:
This type of tool is crucial to helping teams work together more easily, regardless of time zones or locations. A rapid action oriented communication designed to share knowledge and save time. (See: Slack, Campfire)
This type of tool is designed to provide transparency to stakeholder and participants.
Tools of this sort make up the building blocks for the entire process ranging across all key assets. Whether code, configuration, documentation, database, compiled resources and your web site html – you can only gain by managing them in your one true source of truth. From there – everything else can be built when required. (See: Git, Subversion)
Without this type of tool, it would be impossible to enforce desired state norms or achieve any sort of consistency at scale. Infrastructure should be treated exactly as code that can be provisioned and configured in a repeatable way.
Continuous integration tools provide an immediate feedback loop by regularly merging code. Teams merge developed code many times a day, getting feedback from automated test tools. (See: Jenkins, Bamboo, TeamCity)
Tools of this sort are tasked with verifying code quality before passing the build. The quicker the feedback loop works – the higher the quality gets, and the quicker you reach the desired “definition of done”.(See: Telerik, QTP, TestComplete)
In an effective DevOps environment, application deployments are frequent, predictable, and reliable. Deployment tools are essential to checking those boxes. Continuous delivery means that applications can be released to production at any time you want in order to improve time to market, while keeping risk as low as possible. (See: IBM uDeploy, CA Release Automation, XebiaLabs)
The database, obviously, needs to be an honored member of the managed resources family. Managing source code, tasks, configuration, and deployments is incomplete if the database is left out of the equation.
Using specialized database devops tools such as enforced database source control, database build automation tool, and database verification processes will ensure your database is a stable resource in your DevOps toolbelt. (See: DBmaestro)
Companies planning their DevOps and CI/CD processes have to deal with both cultural and technological challenges.
Changing processes and individual responsibilities, while making sure everything flows as smoothly as possible (both on personal communication level, and on technological/efficiency level) can be quite a challenge.
To be blunt, there’s no honor in going it alone. In fact, organizations that try to make the leap without first equipping themselves with a loaded DevOps toolbet, are predisposed to fail.
I don’t presume to tell you what tools are right for your operation; but I can say with confidence, regardless of who you are and what exactly you do, these are the 9 TYPES of DevOp-enabling tools that you’ll need. From there, the rest is up to you.