Yesterday, I wrote a post about retiring the term Serverless in favor of more specific terms like Functions Compute or FaaS, Data Services, etc.. As I expected, this was met with pushbacks on Twitter from people who are in the AWS camp (as in applying the term for services like AWS Lambda, Azure Functions, etc.) saying the term is widely used and it doesn’t make sense to retire the term at this stage. However, the confusion caused by the vendor marketing is real and we see the role of StackSense to disambiguate vendor marketing, helping end users make better and informed decisions. In this post, we will highlight different flavors of Serverless, as marketed by various vendors.
AWS and Serverless
AWS uses this term in a more ambiguous way listing services ranging from Function Computes to S3 to Data Services to Analytics. Even though AWS started using the term to define AWS Lambda, they have started using the term to describe services beyond Lambda since last year’s Re:Invent conference. Even their website offers a more generic description of the term.
Serverless computing allows you to build and run applications and services without thinking about servers. Serverless applications don’t require you to provision, scale, and manage any servers. You can build them for nearly any type of application or backend service, and everything required to run and scale your application with high availability is handled for you.
It is not clear if Amazon would consider AWS Fargate (their Container as a Service) as Serverless because it fits well with their description above. Maybe, if they see many customers using AWS Lambda to invoke containers on AWS Fargate, they may list the service in this page.
Azure and Serverless
Microsoft has been using the term to describe Azure Container Instances, their Container as a Service offering. In the words of Brendan Burns, Distinguished Engineer at Microsoft and the one who is spearheading their container initiatives,
I really want to differentiate between “serverless” == not running OS/Machines and FaaS == a programming model for describing/running code.
Equating Serverless with FaaS is a mistake (and a mischaracterization, since there are plenty of other “serverless” programming models)
Frankly, the separation between what Brendan says and what AWS has on their website is very narrow but still, the term is used in different context by both the communities. When it comes to the term, Microsoft includes CaaS into the mix.
Google and Serverless
When it comes to the use of the term, Google has a definition which is not very far away from both AWS and Microsoft. Google includes no upfront provisioning, no management of servers and pay per use as the defining characteristics for Serverless (my mom called from 2008 and reminded me that it was the definition of PaaS). With this definition, Google has included Google App Engine, one of the earliest public cloud service and the first Platform as a Service, into the mix.
Multi Cloud Serverless Platforms
So far, we were talking about this confusion among the public cloud providers. If you now bring in Serverless Platforms that works on-premise or across multiple clouds, the discussion goes entirely out of the spectrum of our discussion so far. These platforms also include managing the underlying physical hardware and virtual machines. In fact, I recently got a press release that talked about the importance of a Serverless Platform citing a 11 hour outage of public cloud service.
Seriously folks, this is getting insane. Using a generic term to describe all types of public cloud services and even the on-premise ones make absolutely no sense. There are only two options in front of us
- All the public cloud providers come to an agreement about what constitutes Serverless and then we can go about using the term just like how we used the term Cloud (public and private clouds). Without an agreement between public cloud providers, this is going to confuse the end users as enterprises start using the services that come under this term
- Just retire the word and embrace more specific terms to describe various services that don’t require the end users to manage servers