Should “serverless” just mean “function-as-a-service”?

Yan Cui

I help clients go faster for less using serverless technologies.

Gregor Hohpe said something that has me mulling over for some time now.

Essentially, he asked, “Should we narrow the definition of serverless to mean just function-as-a-service (FaaS)?”

“Serviceful”

For context, I’m firmly in the “serverless means serviceful” camp:

a) Serverless is a mindset: To leverage managed services to deal with undifferentiated heavy lifting so we can focus on creating business value. (see Ben Kehoe’s writing here [1])

b) Serverless should mean “fully managed”, “scale to zero”, and “usage-based pricing”. (see Momento’s Litmus test for serverless here [2]) By this definition, S3, SQS, DynamoDB, EventBridge and many other SaaS services should all be considered serverless.

As an early adopter, I was heavily influenced by other early adopters like Ben Kehoe, Paul Johnston, Joe Emison and Ant Stanley. But the problem is that most people outside of this cohort of early adopters just don’t get it. Many of whom already equate “serverless” with “FaaS”.

And I can appreciate why.

Problems with “serviceful”

When presented with a new concept, we want concrete examples and definitive yes/no answers to know if we’re doing it right. We struggle to elevate from concrete practices (the what & how) to principles (the why).

It’s why the simple principles of “agile” (see the Agile Manifesto [3]) have descended into the scrum-infested reality we occupy today. Scrum, for all its limitations, gives you concrete implementation steps. If you follow these prescriptive steps, you can pat yourself on the back and say, “We do agile”.

Yes, labels matter. It’s our ticket to these exclusive technology clubs where the cool kids hang out!

Sarcasm aside, definitions do matter. We can’t have any meaningful conversations around serverless without a shared understanding of what “serverless” means.

Unfortunately, the “serviceful” definition of serverless is too broad and has too many grey areas.

Say you’re running your application on EC2. It’s not very serverless.

But what if this EC2-hosted application uses serverless services like DynamoDB, EventBridge, SQS, and others? That’s serviceful, right? So, are you doing serverless or not? Can one be both serverless and serverful? If so, how are they different? If they’re not different, what’s the point of serverless?

The “serviceful” definition kinda just means “use managed services”. That’s too vague and confusing for most.

Years ago, I ran .Net applications across hundreds of EC2 instances while using DynamoDB, SNS, and SQS. If serverless just means “use managed services”, then that’s what I was doing already, mostly. So what’s the point of serverless if it’s just more of the same thing?

I have been fully focused on serverless since 2016. I can confidently say that I understand the value of serverless better than most.

And yet, for all the changes to how I think about computing and building systems, the main practical difference to what I did before is that I use Lambda instead of EC2.

Let Serverless equal Functions.

If the goal of serverless is to shift focus from creating technology to creating business values, then perhaps we serverless advocates ought to do the same. Perhaps we should make the definition of serverless boring and focus on getting people through the door.

Convincing people to let go of the sense of control and delegate their business logic to a service is the biggest hurdle anyway. They have a better chance of “getting it” once they see some benefits.

Talking about the higher principles has not worked, at least not at scale.

Maybe it’s time to try a different approach, one that has a simple, practical step: use function-as-a-service.

Links

[1] Serverless is a state of mind

[2] Litus test for serverless

[3] The Agile Manifesto

Whenever you’re ready, here are 3 ways I can help you:

  1. Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
  2. I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
  3. Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.