We were arguing at work about different modes of computing, and it dawned on me that the big arguments for going serverless are business arguments, not really technology-centric at all. Maybe everyone else already noticed.
[Disclosure: Not only do I work at AWS, but as of earlier this year I’m actually part of the Serverless group. I still spend most of my time working on messaging and eventing and workflows, but that’s serverless too.]
Now, here are a few compelling (to me, anyhow) arguments for serverless computing:
Capacity Planning. It’s hard. It’s easy to get wrong. The penalties for being wrong on the high side are wasted investment, and on the low side abused customers. Serverless says: “Don’t do that.”
Exploit Avoidance. There are no sure bets in this world, but one very decent weapon against next week’s Spectre or Heartbleeed or whatever is: Keep your hosts up to date on their patch levels. Serverless says: “Run functions on hosts that get recycled all the time and don’t linger unpatched.”
Elastic Billing. There are a few servers out there, not that many, running apps that keep their hardware busy doing useful work all the time. But whether it’s on-prem or in the cloud, you’re normally paying even when the app’s not working. Serverless says “Bill by the tenth of a second.”
Technology still matters · Now, when we get into an argument about whether some app or service should be built serverlessly or using traditional hosts, the trade-offs get very technical very fast. How much caching do you need to do? How do you manage your database connections? Do you need shard affinity? What’s the idempotency story?
But some of the big reasons why you want to go serverless, whenever you can, aren’t subtle and at the end of the day they’re not really technical.
This is a new thing · I’m a greybeard and have seen a lot of technology waves roll through. By and large, what’s driven the big changes are technical advantages: PCs let you recompute huge spreadsheets at a keystroke, in seconds. Java came with a pretty big, pretty good library, so your code crashed less. The Web let you deliver a rich GUI without having to write client-side software.
But Serverless isn’t entirely alone. The other big IT wave I’ve seen that was in large part economics driven was the public cloud. You could, given sufficient time and resources, build whatever you needed to on-prem; but on the Cloud you could do it without making big capital bets or fighting legacy IT administrators.
Serverless, cloud, it all goes together.