Definitions of Serverless
Definitions of Serverless include:
- Serverless databases.
- Serverless accounting.
- Serverless functions.
- Serverless messaging.
- Serverless computing.
It seems like the word “serverless” gets attached to just about everything in the cloud world. The blasé use of this term has left some people confused and others annoyed. In this section, we define three uses of serverless:
- Serverless as SaaS: A statement about management
- Serverless as Hosted Application: A statement about hardware or virtual machines
- Serverless as Software: A software design pattern that does not use software servers (daemons)
A friend of mine once argued that there is no such thing as serverless because, of course there are servers underneath every one of the services mentioned above. While he is not wrong in his statement that the things described as serverless do indeed have servers running somewhere, he missed the main point: Serverless is a statement about what resources you must be concerned with and not so much about the actual presence of physical server hardware. The fact that my very smart friend found the word “serverless” frustrating is evidence that the term itself could use some clarification.
There are three main usages of the term “serverless.” None imply or mean that we have services floating around in the cloud amidst a great stack of technological turtles that somehow run on someone’s server somewhere. Each of the three meanings hinges on a particular assumption about servers. Let’s dive in, and you’ll soon see what I mean. We’ll start with the most generic definition and work toward the most specific.
Definition 1: Serverless as SaaS
The most generic term “serverless” indicates that some offering is run using the Software-as-a-Service (SaaS) model. In SaaS, an entire application is owned, built, and operated by one organization, and other individuals or organizations create accounts to use that application, typically via the web.
Some SaaS providers prefer to use the term “serverless” to describe the SaaS model, particularly when they want to emphasize that you, as the user, don’t have to do any management of the cloud resources required to run the SaaS.
If this is server-less, then what does “server” mean here? The server, that this serverless offering is hiding from you is what used to be called the application server (back in the pre-cloud days). In other words, the machine or machines whose job it was to execute a specific piece of software.
Definition 1: ”Serverless” merely means no management of cloud resources
You can spot this usage of the term easily. For example, when serverless is being used as a synonym for SaaS it signals that:
- the offering is targeted toward non-engineers,
- there is no REST API, library, SDK, or CLI to use, and
- the web interface is the only way to interact with the application.
Definition 2: Serverless as Hosted Application
Consider the following cloud services, each of which claims to be serverless:
- Serverless database hosting.
- Serverless logging and monitoring.
- Serverless messaging framework.
Along with describing themselves as “serverless,” what do these three have in common? A serverless database is one in which someone else manages the database software (starting and stopping, upgrading, patching security issues) and you simply use the database (creating tables, running queries, inserting data). Similarly, “serverless logging and monitoring” suggests the same: Someone else manages a bunch of servers that do log processing and monitoring, and you merely use the APIs provided to attach to your application.
Sometimes this definition of “serverless” overlaps with “cloud service” or “Platform as a Service (PaaS).” For example, one company may call its database a serverless database while another will call its hosted database a cloud service.
This definition treats the word “server” as referring to the hardware or Virtual Machine (VM) instance. While you (the user) may be required to say what kind of Operating System (OS) or architecture you prefer their cloud service to run on. In this case, you perhaps also choose your memory and/or storage requirements but you are not responsible for the day-to-day operations relating to any of this infrastructure.
Definition 2: ”Serverless” means you (the user) do not have to manage the infrastructure that your cloud services runs on.
You can spot the meaning of “serverless” in this context when the offering:
- is engineering-oriented,
- has a REST API, libraries, SDKs, or CLI client,
- allows you to create instances of this offering for your usage (but you don’t have to manage the day-to-day operations like upgrading, patching, or monitoring), and
- typically does not allow you to gain access directly to the operating system (such as a shell prompt or system administrator account).
Definition 3: Serverless as a Software Concept
Consider the process of building a Ruby on Rails, Python Django, or Node.js Express application. One of the first things you must do is write the code that starts a server to listen on a particular port. Or, if you go a level lower than these common frameworks, you might even have to create a socket server, attach a thread pool, and map incoming requests to an HTTP (or other protocol) handler. When you are doing any of these things, you are writing a software server.
In the software world, a server is a long-running process that listens for incoming requests (usually on a network connection) and then handles those requests. A server typically handles hundreds to millions of individual requests over its lifetime, which may span hours, days, months, or even years before the server is restarted.
Contrast this with a program where, instead of standing up an entire server, you merely write a function that starts up (receives a single request), handles that request, and then optionally returns a response before it shuts down. That is, each request executes the program from start to finish. Such a program may run for milliseconds, seconds, or perhaps several minutes. But rarely does it run longer.
This is the serverless app model. And this is our third usage of the term “serverless”.
This model gained the name “serverless function” when Amazon released its Lambda offering.
Definition 3: “Series” means you do not have to write the software server that will listen for requests, nor do you need to manage the hardware or operating system
So what are we “less” isms in this definition of “serverless”? First, you, as the developer, do not need to write a software server to execute your code. The programming model is more akin to event-based programming. Second, you do not manage the hardware (virtualized or not). In the best serverless application platforms, you don’t even have to choose the processor type or operating system. The server is completely abstracted away from your program.
You can spot the meaning of the term “serverless” in this context when:
- you, the developer, write request (event) handlers instead of software servers,
- a variety of SDKs, APIs, or tooling are provided to make it easier for you to write programs,
- you do not need to manage server hardware or virtual machines, and
- you also typically do not have administrator access or shell access to the environment executing your code