How to Prevent Tool Sprawl in Your DevOps Toolchain
We put in all this work to create a fully customized toolchain tailored to your situation. Great! I bet you’re happy you can change small bits and pieces of your toolchain when circumstances change, and the Periodic Table of DevOps tools has become a staple when looking for alternatives. You’re probably still fighting the big vendors that want to offer you a one-size-fits-all solution.
But there’s a high chance you’re drowning in tool number 9,001. The tool sprawl, like VM sprawl after we started using virtualization 10-15 years ago, is real. In this post, we’ll look at managing the tools managing your infrastructure.
A toolchain is supposed to make it easier for you to manage changes, automate workflows, and monitor your infrastructure, but isn’t it just shifting the problem from one system to another? How do we prevent spending disproportionate amounts of time managing the toolchain, keeping us from more important value-add work?
The key here isn’t just to look at your infrastructure and workflows with a pair of LEAN glasses, but also to look at the toolchain with the same perspective. Properly integrating tools and selecting the right foundation makes all the difference.
One key aspect of managing tool sprawl is properly integrating all the tools. With each handover between tools, there’s a chance of manual work, errors, and friction. But what do we mean by properly integrating? Simply put: no manual work between steps, and as little as possible custom code or scripting.
In other words, tools integrating natively with each other take less custom work. The integration comes ready out of the box, and are an integral, vendor-supported part of the product. This means you don’t have to do (much) work to integrate it with different tools. Selecting tools that natively integrate is a great way to reduce the negative side effects of tool sprawl.
Fit for Purpose to Prevent DIY Solutions
Some automation solutions are very flexible and customizable, like Microsoft PowerShell. It’s widely adopted, very flexible, highly customizable, and one of the most powerful tools in an admin’s tool chest, but getting started with it can be daunting. This flexibility leads to some complexity, and often there’s no single way of accomplishing things. This means you need to put in the work to make PowerShell do what you want, instead of a vendor providing workflow automation for you. Sometimes, it’s worthwhile to use a fit-for-purpose automation tool (like Jenkins, SonarQube, or Terraform) that has automated the workflows for you instead of a great task automation scripting language. Developing and maintaining your own scripts for task automation and configuration management can easily take up a large chunk of your workweek, and some of that work has little to do with the automation effort you set out to accomplish in the first place. Outsourcing that responsibility to the company (or open-source project) that created the high-level automation logic (Terraform by HashiCorp is a great example of this) makes sense, saving your time for job-specific work adding actual value to your organization.
If you set out to use a generic scripting language, choose one that fits your technical stack (like PowerShell if you’re running Microsoft stack) and technical pillar (such as Terraform for infrastructure-as-code automation).
Crisis Averted. Here’s Another.
So, your sprawl crisis has been averted. Awesome; now we have the right balance of tools doing what they’re supposed to do. But there’s a new potential hazard around the corner: lock-in.
In the next and final post in this series, we’ll have a look at the different forms of lock-in: vendor lock-in, competition lock-in, and commercial viability.