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.
This is the best management style for leaking the most data. Equifax is making more money than ever before and they only leaked everyone’s credit card data. Executive porn habits, sadly, were not leaked.
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.
This is the best style of management for raising the most VC capital and then proceeding to burn it to achieve what is known as “web scale”. Physicists are still trying to figure out what units should be assigned to “web scale” and whether it should be an international standard.
Totally Not My Problem a.k.a. Serverless
This is the latest and greatest in software infrastructure. It is suspiciously like heroku, it’s bizarro heroku if you will. This trend started with Kubernetes cannibalizing the cloud vendors. Sensing danger, Bezos and co. 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.
This is the best style of management if you’re not actually solving any problems that require more than 5 seconds of computation. Did I forget to mention there is a time limit now?
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 and angst 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 because that means they can browse porn on their work laptops without programmer angst hanging over their head.
This is the best style of management if you want to achieve 0% unemployment rate and maximize your partnerships and vendor relations.
Thought Driven Infrastructure
Just kidding. This doesn’t exit. Thinking in programming is considered counterproductive.