A relative who is making his first steps into the world of programming recently asked me what is meant by the term "serverless".
I have to admit that the term is a bit of a misnomer because all applications eventually run on an actual server. But marketing folks and others like the term, so it stuck. It's a bit like calling credit-card based purchases "moneyless". You're still paying your hard-earned money. It's just that someone is taking care of the logistics of moving the money around for you.
But to actually understand this whole concept of "serverless" we have to step back in time a little bit. And even before we do that, let's define what is meant by the term "server".
A "server" is any computer who provides any sort of service to another computer. That's it. So the computer that is hosting my website is a server because it serves my website to your browser. Likewise, the computer that Google uses to send and receives emails for you is also a server.
Later on, when the World Wide Web came to being in the early 90's, many computer hobbyists began connecting up their personal computers to the internet and using them as servers to serve up their personal websites, share files with one another, chat etc.
Soon, companies started realizing the monetary potential of the internet and began creating online stores and other digital assets to promote their products. Each company would buy one or more computers, stick them in a specially designed room called the "server room" which would house all these servers and serve their websites from there to the world.
This was fine for a while but probably somewhere around the smartphone revolution (2009ish) the amount of devices and internet usage really started to take off -- vertically. Companies were faced with a whole new breed of problems. First, there was the issue of load. Their servers were getting "hit" a lot more and a lot harder and they needed to deal with that. Second, their websites are becoming more and more crucial to their operation and "being down for maintenance" was no longer a viable option. Third, they were constantly putting down fires caused by malfunctioning hardware.
Around that time, a little-known company called Amazon identified this issue and said to these companies: "hey, we know all this server maintenance thing is really hard. So why don't you let us do it for you? you can rent however many servers you want from us and we'll charge you by usage." And many companies did. And the "cloud" (rented servers) was formed.
So companies started shutting down their internal server rooms and switch to the "cloud". So now instead of going to dell.com, ordering a server, waiting two weeks, installing it in their server room, configuring it etc. they just click on a few buttons on their Amazon cloud console and voila they have a new server ready to go.
So Amazon folks identified this problem and thought: "what if we tell our customers: hey, don't worry about servers and scalability and geographic redundancy and monitoring and all that jazz. Just give us your applications and we'll run them for you. We'll make sure it's always on, we'll automatically add more horsepower as needed, we'll distribute it across the globe and we'll take care of monitoring your service for you to make sure it's always alive. And you'll pay us based on the amount of resource that your application consumes."
I went to a Google Cloud Summit recently and developers couldn't explain the definition of 'serverless' really well. Thanks for your article.
"What makes an application serverless? - Zero administration - Auto-scaling - Pay-per-use - Increased velocity"
"cloud (rented servers)", the best definition of cloud computing! Awesome post btw.
I thought the same thing when I read that line!
Absolutely loved the way you explained the entire thing!
@Arik Thanks a lot you really clarified the term in a handy way.
That is probably the best explanation I have seen of this topic.