We need a good name for when a word is so overused it loses all meaning. Semantic Satiation doesn’t quite cut it (too bland). No, we need something like “enshittification” that really captures our collective disappointment at a good thing ruined. And yes, the word “Serverless” is most definitely ruined.
Sementic Tomfoolery
It is no longer possible to use the word “Serverless” (in good faith) without immediately clarifying what you mean. This isn’t the case where a word is just incompetent at conveying clear meaning (see: bi-weekly). No, “Serverless” was a perfectly fine word until it was co-opted, mangled and regurgitated by the culprits. That’s right, there are culprits: marketing departments at cloud providers (looking at your AWS), Gartner hype beats, an army of tech influencers conflating Serverless with Lambda, all contributed to the sorry state of things.
That’s why having to write this next section stings…
What Serverless is Not
The following are NOT defining characteristics of Serverless:
FaaS / AWS Lambda / Azure Functions
FaaS (Functions as a Service) regardless of cloud provider is a narrow subset of Serverless more distinctly characterized by the programming model (functions). There are other types of serverless compute with different programming models. Compute isn’t the only type of service that can be provided in a serverless manner.
Short Lived Execution
There is no time limit on Serverless execution, although one is implied if the consumer and provider are to realize the cost savings from scaling down to zero. In any case, any time limit is implicit and could be derived from task completion or schedules and not some arbitrary limit.
Costs Nothing When Not Being Used
This is close to the truth, but isn’t the whole truth. You can start and stop servers without too much trouble via API (with some caveats around how quickly you need things to start and stop). This also only accounts for scaling in one direction (down).
Platform as a Service (PaaS)
Sure there aren’t any servers to manage in some PaaS services but the specter of the server can still looms large. Cloud providers make some attempts to hide these servers, to aggregate or obfuscate them (instances, throughput units, DTUs, Request Units etc.) but at the end of the day you’re still responsible for the number of servers whenever you have to reserved capacity.
Serverless: The Definition
Serverless has three distict characteristcs. All three need to be present for something to be Serverless. They are:
- There is no reserved capacity (servers or abstractions of servers) to manage.
- The ability to scale down to zero AND up to some sane limit
- Billing is consumption based.
This definition is broad enough to cover different kinds of serverless compute (regardless of programming model), serverless databases, Api Gateways and anything else. It also doesn’t belong to a cloud provider, nor does it assume any unncessary constraints on execution duration.
Note. This post was originally posted on my old blog, it’s been resurrected here and reworked to some extent.