Functions as a Service (FaaS) are only a narrow subset of Serverless. And yet, FaaS (a form of serverless compute) dominates most discussions of the topic. This narrow focus on FaaS, and the endless debates around it make it difficult for us to understand & explore what it really means to be serverless. The wider concept of serverless holds much more promise than just compute.

A (Partially) Serverless Architecture from Microsoft

What Comes After Serverless Compute?

Serverless everything…

Databases, Messaging, Identity, Storage, Analytics, and more, all serverless.

In a post about evaluating FaaS providers i discussed how important it is for a FaaS offering to be well integrated with all the other services a cloud provider offers. The natural progression is for the characteristics that make serverless compute so appealing to seep into those other services.

I believe that in the near future, most (non IaaS) services in the cloud will offer a serverless tier.

Why Go Beyond Serverless Compute

What we mostly have today are partially serverless architectures (like in the image at the top of this post). These “serverless architectures” are usually just a mixture of serverless compute and non serverless databases, messaging, storage, analytics, identity etc. etc.

Here’s how going fully serverless improves things…

Even More Cost Savings

It doesn’t make sense to only scale compute down to zero (to save money) while reserving capacity for messaging, storage and other services. The cost savings from scaling down are readily available in the other parts of the architecture and we should take advantage of them.

How would that improve the partially serverless architecture up top? Well both event hubs and cosmos db would scale. Consumers would only pay for usage + storage & cloud providers would get more efficient usage of their infrastructure.

Cooperative Scaling

Handling spiky / variable workloads is hard. In most architectures, every component scales with zero knowledge of the other components and that means you, the developer, have to right-size each and every component for the potential spikes in load. It’s very easy to over or under provision individual components and you constantly have to adjust as your workload changes.

Serverless compute (like FaaS) changes this status quo to some extent. It can scale up or down based on events e.g. http requests, queue messages etc. But the ideal future is an even more cooperative one. Every component of the architecture scaling up and down in concert. Databases, messaging services and more that all scale in concert.

An additional benefit of cooperative scaling is that components of your architecture don’t overwhelm each other.

And all of this happens without you lifting a finger.

It’s Already Happening

There are already many serverless services in the various clouds and providers are adding even more. Two upcoming additions that interest me the most at the moment are Service Fabric Mesh and Serverless Kubernetes.

The history of software is one of layered abstractions. I’d argue that serverless is the next big one.

Note. This post was originally posted on my old blog, it’s been resurrected here and reworked to some extent.