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.

continuous-delivery-tools

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.

Some Context

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:

1.  Collaboration Tools:

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: SlackCampfire)

2.  Planning Tools:

This type of tool is designed to provide transparency to stakeholder and participants.

Working together, teams can plan towards common goals, and better understanding of dependencies. Bottlenecks and conflicting priorities are more visible. (See: Clarizen and Asana)

3.  Source Control Tools:

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.

4.  Issue Tracking Tools:

These tools increase responsiveness and visibility. All teams should use the same issue tracking tool, unifying internal issue tracking as well as customer generated ones. (See: Jira and ZenDesk )

5.  Configuration Management Tools:

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.

Avoiding configuration drift across environments will save valuable time and difficulties caused by the application working in one environment and not another. (See: PuppetChefSalt)

6.  Continuous Integration Tools:

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: JenkinsBambooTeamCity)

7.  Automated Testing Tools:

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: TelerikQTPTestComplete)

8.  Deployment Tools:

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 uDeployMS Azure DevOps )

9.  Database DevOps Tools:

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 platforms and 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.