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.
It’s difficult to imagine the software development process without version control, yet with databases it’s not as common. Source control for the database is an incredibly powerful tool for managing changes made to database code, structure, or content (across all teams). Having a single source of truth for ALL database changes can be a crucial improvement to minimize errors and rework.
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, MS Azure DevOps )
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 database source control, database release automation tool, and database verification processes will ensure your database is a stable resource in your DevOps toolbelt. (See: DBmaestro)