September 30, 2019
In recent years I have noticed more and more people seem to be dropping the term “serverless”. It is up there with “Blockchain”, “Crypto”, and “Micro-services” in the trending tech nomenclature.
It makes sense why people would love it though. I mean I just pay for what I use. I don’t think about networks or storage or patching servers. I just write and deploy my code and all of the server operator work is abstracted away.
What makes me very excited is that I feel that this is what cloud computing was always supposed to be. The early days of the cloud computing was simply a large of managed services.
Additionally, hosting wasn’t a new concept at the time Amazon launched EC2, arguably the first “Cloud Computing Service” (in modern terms). If we really wanted to get technical, Remote Job Entry were probably the first form of “hosted computing” and that goes back to the 60s.
We didn’t really see a “hosting industry” until the Dot-Com Boom. The nature of the client-server relationship turned home computers into clients, opening the opportunity to create a server market. While it was entirely possible to purchase your own servers and start a data center, outsourcing to a reliable third party was an option many people chose.
Hosting most often came in two forms. You had your shared hosts and your dedicated hosts. Dedicated hosts gave you your own physical server while shared hosts gave you a user and directory on server with maybe 1,000 other people.
While virtual machine hosting wasn’t unheard of, it also wasn’t super scalable. It was often touted as a cheap alternative or middle ground. Then, in 2006, Amazon created their “Elastic Compute Cloud” offering. They offered virtual machines in their data center that could scale vertically and horizontally on demand. You had your own server with command line access but didn’t have to worry about racking and networking bare metal.
The idea of being able to build and scale at the click of a button did make it easier for small businesses to start small and grow without absorbing the CapEx upfront. It also made it easier to see infrastructure as code with tooling such as Puppet and Chef. One could use a declaritive language to easily deploy and update their infrastructure.
However, it was really just another managed service. I still needed to configure the server, choose and operating system, patch the server, etc. The major difference was the ease of scalability, the lower costs, and the SLOs offered by the third party.
The true promise of the cloud, in my mind, is a platform to host software. In it’s first few years, the cloud has been very infrastructure and managed component focused.
It really didn’t have a developer focus. The term “Full Stack Developer” has been used to reflect the need for developers to also understand the entire stack for their application to work.
From an application standpoint, shouldn’t the cloud help developers get past the patching and updates of servers. Shouldn’t we be past the days of making sure the right libraries and versions are running on the server but also doesn’t cause any conflicts down the line.
This is where serverless comes in. Now serverless doesn’t actually mean that the software is floating on a literal cloud. It means that there has been an abstraction layer that handles all of the primitives of the environment and deploys.
You may be saying “well isn’t this just PaaS (Platform as a Service)?” Yes and no. PaaS did provide an abstraction layer in deployment but not in pricing. You often were billed for workers (nodes, VMs) rather than consumption (memory, CPU, network). It also wasn’t very event-driven nor portable. You usually were locked into the platform and limited to HTTP/S triggers.
Serverless abstracts the compute to the point that you are just paying for resources, not worker nodes. Serverless allows developer to focus on code and not infrastructure while giving managers transparency on costs and giving operators less to worry about.
I am a serverless fan so you will see me post a lot about serverless computing in this blog and elsewhere but I wanted to start by saying that the Promise of the Cloud is Serverless.