Serverless Compute and Serverless Data
I’ve been thinking a lot over the past few months about how we approach serverless as a discussion. I’ve come to the conclusion that it’s too “Function-centric” and that the tech community does not give enough thought to the nuance. As someone said recently, tech likes it’s discussions to be “binary”.
When I talk to people about serverless now, I find myself tending to have two different conversations:
The first conversation is about the scaling of the compute, what you need to consider, each function does one thing, functions shouldn’t call other functions… that kind of thing.
The second conversation is about the scaling of the data, how your data stores deal with upstream and downstream scaling bursts in your compute, what your access patterns might be, whether your data access needs are performant or otherwise… very different.
It’s important to separate these out. If you only focus on the compute, you will end up not understanding how your entire application will scale.
The way that we as technologists have built applications in the past is without having to consider infrastructure. We’ve had software, and the software has done the heavy lifting. Add to that our “data stores” and then we deploy those elements to our data centre or our cloud.
The difference with serverless is this: now that the vendor is handling a lot of the elements that you no longer have to, the scaling, the on-demand compute, the infrastructure provisioning, the data storage provisioning, the event sources connecting all of these resources to your on-demand compute… a lot of things we would normally do in software (or often now in Open Source Software) are gone.
The “less” in serverless isn’t about the “servers” although that’s probably the best word we have for it. The problem with the word “server” is that we primarily think about it in terms of compute, rather than any other context.
So maybe start to think about a serverless backend application as a combination of two things:
Serverless compute and serverless data
And of the two, I would suggest that it’s more important to get your serverless data right than your compute.
But that’s another blog post.