Toolchains are a set of programming tools that are used in combination to perform a task. A DevOps toolchain focuses on the development and delivery of software systems. Software architects responsible for selecting tools should aim to achieve consistency with the DevOps tools. For example, it is better to use the same deployment tool for all of our environments than use different ones for different environments.
In an organization that embraces DevOps, it is not just the development team that uses software tools to perform their jobs. Operations staff should use many of the same techniques as developers. For example, the assets related to operations should be checked into source control and have automated tests.
DevOps tools are generally categorized as supporting one or more of the following activities:
- Plan: The plan category of tools help you to define the requirements of the application and plan the work. The activities that take place around planning vary depending on the methodology being used, but generally involve product owners and business analysts evaluating requirements and other requests. The business value and effort are evaluated and work is planned for a release.
- Create: Create tools are software that help in some way with design, coding, and building activities. Examples of these tools include integrated development environments (IDEs), version control repositories, build automation tools, and configuration management tools.
- Verify: Verification tools consist of software that help to ensure the quality of a software release. Some verification activities occur during create activities, while others occur once some part of the software is complete. Functional and non-functional testing must take place, and DevOps tools can help to automate some of the testing. Verification tools can help with performance, acceptance, regression, and release testing. Static analysis tools can help to analyze the code, and security tools can help to identify vulnerabilities.
- Package: Packaging tools are used for the tasks associated with preparing a release once it has been verified and is ready for deployment. Packaging configuration and triggering releases are some of the activities involved in packaging.
- Release: The tools in the release category are used for release-related activities. They assist teams with the scheduling and coordination of deploying software systems into different environments, including production.
- Configure: Tools are available that assist with the configuration of software applications. The configure category includes tools that help with configuration management, application provisioning, and the configuration of infrastructure resources.
- Monitor: It is critical to monitor software applications to identify issues and gain an understanding as to their impact. Production metrics give an organization the insight necessary to understand what the problem areas are with a software application. Monitoring the performance of a software application will ensure that end users are not encountering bottlenecks when they use the software. When we covered CALMS, it was mentioned that measurement is one of the core values of DevOps. Monitoring tools can help teams measure their applications in order to determine whether, and how much, automation efforts have improved a process or product.