Loose coupling, I say!

Here is the idea: Some of the existing deployment practices are inherently bad not because we detest Docker or are suspicious about serverless frenzy.

They are inherently bad because they couple you deployment with your code.

Do you remember old saying that loosely coupled systems are great? It still stands today.

When you add a ‘deployment expectation’ in your application you create a hard couple between your application and your current way to deploy it. That means, eventually, someone WILL use brute force to bend it into a new scenario. And every time someone applies brute force, brittle things breaks. Hard coupling is brittle, and it breaks itself or something around it.

Please, please, remember: loosely coupled systems are great. They give everyone involved a bit of space for maneuvers, they help to assemble things smoothly.

Your deployment is not an exception to this rule. If you write application for a new superfancy DatalessUbercube™ revolutionary buzzword, ask yourself: is your application loosely coupled here? Can it be easily run on something else, for example, on extremely boring, yet prevailing bare-metal servers? Is it agile enough to get away with a few configuration tweaks, or is DatalessAPI™ essential for your application to run?