Why I, A Serverless Developer, Don’t Care About Your Containers

A bit more than a week ago, Joe Ward wrote about the commonalities he sees between serverless computing and Kubernetes, and how Kubernetes can help in achieving a serverless architecture.

In his blog post, he concludes:

Given the rapid adoption of Kubernetes over the last few years, coupled with the increased control and reduced vendor lock-in it provides, I would argue: In the future, Kubernetes will likely be the primary way enterprise companies deploy Serverless.

Despite Joe’s eloquent and well-written argument, as a developer of serverless applications and application frameworks, I’m not convinced. In fact, I don’t actually care about Kubernetes, containers, or what’s underneath my serverless platform.

In his post, Joe talks about the auto-scaling, self-healing, and dependency-managed features of Kubernetes that will be attractive to serverless developers. But the expectations that I have, as a developer, are much better described in the Serverless Manifesto, specifically:

  • Functions are the unit of deployment and scaling.
  • No machines, VMs, or containers are visible in the programming model.
  • Permanent storage lives elsewhere.
  • Capacity scales per request. Users cannot over- or under-provision capacity.
  • There is no idleness — you never pay for cold servers/containers or the related costs.
  • It’s implicitly fault-tolerant, because functions can run anywhere.

Much has been written about the “server” aspect of serverless, but what people forget about is the “less” part.

It is serverless the same way WiFi is wireless. At some point, the e-mail I send over WiFi will hit a wire, of course. — @slobodan_

“Serverless” uses servers in the same way “wireless” uses wires. But the “less” in “serverless” talks about the things, that I, as a developer, couldn’t care less about: machines, VMS, containers, scaling, provisioning, idleness, failover.

It’s as if Marie Kondo took a look at our software architecture and (after thanking each of the items) said “goodbye” to all the things that don’t spark joy. What remains is our code, our functions, and the fun that simplicity brings with it.

So here lies the paradox of serverless platforms: Yes, there are servers, containers, and probably even Kubernetes underneath; but the better job the platform provider does, the less the developer will actually see or care about any of it.

Do a good job, and you will get praised. Do a great job and you will be ignored.