Declarative Management vs Procedural Workflows
Over the last two decades there has been several developments in tooling for configuring and deploying your applications and services. A lot of the early approaches were rooted in hand scripted workflow and runbooks that would carry out a series of sequential steps to take actions on your servers and applications. This approach was/is brittle and tools such as Cfengine, Puppet, Chef, and the like, took a decidedly different "declarative approach" where users would describe WHAT their servers and applications should look like, and the tool would take the appropriate steps to make sure the system is "converged" into its proper state. With the advent of virtualization, cloud computing and emphemeral applications/services the declarative approach became the only way to scale the operations management aspect of your business in a cost effective manner.
In this new "cloud first" era has also brought new challenges with a higher level of scale out services, fragmentation from single monolithic applications/services into microservices, and a much greater use and dependency on external service providers for things such as caching, authentication, databases, etc. To properly integrate with and coordinate across these heterogeneous environments it became necessary, once again, to have some workflows and scripts in the form of more modern runbooks to carry out these types of coordinated workflows.
Deciding on a declarative vs procedural scripted workflow approach is no longer an option, rather you have to leverage both practices and use them each where they fit most within your IT organization. We will give some history and overview of some of the more popular tools in the space and a lay of the land for what the future holds with container and serverless adoption on the rise.