Demystifying the term Serverless


Server, the physical hardware

When people think of servers, they imagine a big machine or a large stack of them making humming noises and furiously serving millions of requests.

A server can also mean a computer program that is continuously running, listening for client requests and serving them. Think Apache, Nginx or Tomcat.

Apache HTTP server, the software
Apache HTTP server, the software

When someone says that they have gone serverless, what they actually mean is that they are no longer running a software program listening to requests. There should still be a physical computer of some sort serving the requests of the clients.

The premise of serverless is that you don’t have to keep a computer program called a server continuously running to serve your clients’ requests. When a request comes in, a small program (maybe a single function) gets invoked, serves the request and terminates.

What is FaaS then?

Serverless (not running server programs) is the goal and Function as a Service (FaaS) should be considered one of its implementations.

Are microservices and P2P applications serverless too?

Not really. A lot of microservices use HTTP for communication and thus have a server component in them. A P2P application (e.g. Syncthing, BitTorrent) acts as both the client and the server and hence doesn’t need a server decoupled from the client.

Now that you know what serverless actually means, it’s time to learn more about it. I recommend starting with this blog post by Badri Janakiraman.