I’ve been in this game for a bit now and have observed a few patterns. What follows is a list of patterns about software infrastructure and how it can be managed or mismanaged depending on your perspective. The list is in no particular order or ranking.
“Enterprise” a.k.a. Beg IT for It
This style of management is all about risk mitigation. Ian Miel has a really good explanation of how this happens. In order to get anything done, you must “kiss the ring” of the IT department. After enough kisses they will create a ticket and follow through, but only after they clean up another porn-related virus from the laptop of some C-level executive.
“Not My Problem” a.k.a. Managed Services
This is what all the cool kids are doing. The most famous example is Heroku. If your requirements fit a specific template then this is the fastest and cheapest way to get things off the ground. You don’t have to worry about provisioning anything other than your laptop. The managed provider will take care of the rest after you give them some YAML file. They’ll provision the servers with the correct runtimes, deploy your software to it, reload the load balancer to point traffic to the new code, and scale things up and down according to traffic patterns.
It turns out that Heroku was the original serverless platform but they didn’t market it that way so now they’re playing second fiddle to the likes of AWS and friends with their serverless offerings.
“Totally Not My Problem” a.k.a. Serverless
This is the latest and greatest in software infrastructure. It is suspiciously like Heroku but more ghetto. This trend started with Kubernetes cannibalizing the cloud vendors so in order to stay relevant AWS by sheer force of will created an entire new way of shipping software. Honestly, it’s still hard for me to make sense of this trend. It has all the downsides of managed services with none of the upsides. Serverless platforms are so bare bones that you can’t help but be locked-in to whichever vendor is hosting your code. You have no choice because the template for serverless development is so restricted.
Since the lock-in is one of the biggest issues there are a few frameworks on the horizon that promise vendor neutrality. Of course, now you’ve moved up your level of lock-in. Write code for a specific serverless framework and be stuck with it for life.
“Somewhat My Problem” a.k.a. In-house Platform
Begging IT for everything all the time gets old pretty fast and most C-level executives don’t know how programmers actually do work, all they can do is sense when they’re unhappy. So after a few whiffs of disgruntlement the executives got together and brainstormed a solution: Kubernetes. Remember Kubernetes? This was the thing that gave birth to Serverless. There is a Greek tragedy somewhere in there.
This is the stuff with all the downsides of managed platforms and all the upsides of enterprise IT. The IT department continues to be relevant because they get to work in the coal mines of Kubernetes and programmers get to pretend they’re shipping code. As usual the C-level folks are none the wiser as to how code actually gets made but they can tell the programmers are distracted instead of disgruntled and that’s good enough for them.
See original post here.