At devops.center we often talk about standardizing – standardized tooling, standardized ways to do anything to an app, standardized db backups, standardized forms of communication, and more. After all, much of the complexity in modern devops has to do with similar tasks being done in different ways, with different tooling, often for no particulary great reason.
Because different people solved the problem for different apps, or even just because the same person made use of a new tool. Maybe it was better, maybe it wasn’t … but it sure was different.
Different enough that whoever ends up with devops for that app has to learn all of the ideosyncracies and quirks, and keep those in mind for as many apps as they can. Of course these “house rules” make it tough for that same person to handle a large number of different apps, or to easily swap in other folks should the need arise.
Perhaps the most aggravating consequence is that these differences add to the cost for ensuring that this app does what it ought. Since that is the whole point of devops anyway, these variegated solutions to similar problems mostly just add to the cost for the devops of each app.
Honestly, who wants that?
However this is not the whole story. Each app has plenty of unique aspects – languages, frameworks, support libraries, datastores, and more. For each app there may be local directories for temporary files, unique configurations for web servers, even unique combinations of different types of instances or containers.
So the key is for a developer to be able to express this legitimate diversity in a standardized way, and even more importantly present standardized control points – the knobs and dials for tuning and observing each app – to the world around the app.
A Logical, Precise, and Helpful Solution
In order to be able to express legitimate diversity in a standardized way we developed dcStack, an open-source app stack. By utilizing dcStack to encapsulate (“wrap”) an app, you are able to easily express what is unique about your app, yet do so such that our teams are able to provide all devops support in a simple, standardized, efficient and most importantly cost-effective manner.
With the formalism of dcStack it becomes simple to deploy the application across multiple environments, on instances or containers with Docker, on various infrastructures, or even for local development. The app itself remains the same in all these cases, which definitely simplifies debugging across multiple deployments.
In the next post we’ll take a closer look at dcStack, and begin to consider the simple process for wrapping any app … perhaps your app! … in order to gain all the benefits from this new approach to standardized devops.