Andrew Phillips As a developer and a build engineer, I was always dissatisfied with the amount of glue I had to apply to stick popular CI or CD tools, whether Jenkins, Bamboo or Go to popular provisioning tools (Puppet,Chef or the like), which we also used for the application tier. There was simply a fundamental impedance mismatch between the two types of tools: We needed an application-oriented model for our services, which consisted of multiple components ("traditional" or micro-service style) spread across various machines. The provisioning tools' domain models all felt too machine-centric. We were looking for clean and easy integrations with our build, packaging and CI/CD tool of choice. Since often times none existed, we ended up with a bunch of custom tasks and script steps. Our pipelines were -- and still are -- based on "directive automation."That is, we invoked whatever tool(s) were needed for a step, kept track of the process and the status and....