Exploring DevOps Tools - How to Choose the Tools Right for You
The popularity of the DevOps movement has resulted in a wide range of tools in the marketplace; the XebiaLabs DevOps Tool Chest alone lists over 200 different individual tools. And while DevOps is about more than just which tools you use, they are essential to benefiting from the improved speed, agility, and automation that DevOps offers.
To choose the DevOps tools that are most appropriate for you, your projects, and your organization, it makes sense to begin with exploring how they are categorized.
How DevOps Tools are Categorized
The types of tools emerge directly from the activities required to deliver software to users via the Continuous Delivery (CD) pipeline model. Each stage in the CD model corresponds to an activity in the software development lifecycle which moves software from development towards production.
Every software team’s CD pipeline – or toolchain – is a mirror of their software development processes, which means there are many possible configurations. DevOps principles involve collaboratively delivering high-quality software, and that means that tools naturally fall into more than one category because they are used throughout DevOps teams. Having said that, there are tool types that are common to all pipelines. These are: build tools, test tools, deploy tools, and monitor tools.
DevOps ‘Build’ Tools
‘Build’ tools assist in the creation of the software, and they make up the beginning stages of all pipelines. Included under this category are tools for pulling source code from Version Control Systems (VCS), handling build-time dependencies among components, and building entire software products. Such tools automatically send reports if any errors are encountered and prevent software changes from moving down the pipeline. It is, by far, the largest category of DevOps tools.
DevOps ‘Test’ Tools
To ensure quality, automated testing is a vital stage of the CD pipeline. These tools test whether or not software features work as expected, previous software ‘bugs’ have reappeared (through regression testing), and check that performance is maintained. Failing tests should prevent software from reaching further stages, but the severity of the test failure is taken into account.
DevOps ‘Deploy’ Tools
Once code changes have passed all the quality checks from testing, they are packaged and tagged for release, and deployed to the production environment. This stage incorporates all tasks required to configure and provision the target environment, and install the software on the machines.
Deployment tools are increasingly working directly through cloud services to automatically create and configure virtual machines. The steps for creating the environment are increasingly written as code, giving rise to the term Infrastructure as Code.
DevOps ‘Monitor’ Tools
Once the latest code is running in the production environment, its operation needs to be monitored for signs of bugs, performance issues, and anything negatively impacting the user experience. Issues appear when users are engaging with the software, and therefore it is important to capture information through logging, alerting, and performance monitoring for analysis. DevOps monitor tools capture this data.
How to Choose DevOps Tools
With these categorizations in mind, here are the items you should consider when reviewing, evaluating, and choosing DevOps tools that will be right for you, your projects, and your organization:
Common Considerations (across all DevOps tools)
- Track record of the tool working across different projects of various sizes and complexity
- Time and/or cost involved in getting team members up-and-running on the tool – taking into account project deadlines and budgets
- The expected return on investment, cost-savings, or cost-recovery expected from the tool.
- The ability of the tool to integrate seamlessly with other tools along the Continuous Delivery Pipeline
- The tool’s ability to keep project/client data secure (i.e within project groups or the organization)
For ‘build’ tools – consider the programming language and runtime environment of your software product.
For ‘test’ tools – consider the scale and type(s) of testing you are conducting, e.g. functional testing, performance testing, accessibility testing, data testing, security testing, etc.
For ‘deployment’ tools – consider the reliability you need and whether a master-client or decentralized model would meet the requirements of your production environment.
For ‘monitoring’ tools – consider the degree to which they support your software architecture and their scalability.
Knowing the categories of DevOps tools and key considerations should help you optimize your DevOps processes and its outcomes.
Want to get ahead in DevOps? Visit www.lpi.org/standoutindevops to discover LPI’s new DevOps certification.