While refactoring an application recently I was thinking about its build pipelines and the tools available to modern app dev teams. Docker was heralded as the world savor (like every new tech is, but that is a different conversation); however the reality is multi GB images, version sprawl, and a lack luster meta-data system, and a security model that has been the bane of security teams for the past 5 years. It leaves
It got me thinking, is containerization part of infrastructural or part of the applications run time? If we applying the software concept of single responsibility to the build process; each step would have a tool best suited for one domain of responsibility. The counter argument being "yet another tools to learn". But, honestly, everything is YAML configuration these days so how hard would it really be.
So the question: Do you prefer small, separate, specific tooling or one tool that does it all to an acceptable level? What is the justification for you choice?
Cover image by https://unsplash.com/@soymeraki