Serverless Containers vs PaaS

Jason Smith Jason Smith

August 16, 2024

containers-on-platform.jpg

Aren’t serverless containers just another word for PaaS (Platform-as-a-Service)? That’s what I have asked myself and I have heard people ask. Aren’t we just going full circle and creating a new form of PaaS?

If we are simply revisiting PaaS, is this realy a leap forward or a leap backward? I think now is a great time to talk about serverless platforming and whether or not this is just PaaS 2.0 or something new.

Level setting on PaaS.

In a previous, I go over the history of serverless and really, the history of cloud computing. I talk about the role PaaS played in the evolution of the cloud. While you can read a bit more detail in that post, let’s talk about the general idea here.

Platform-as-a-Service, better known as PaaS, was the cloud’s first attempt to make a platform that obsucred infrastrcture. The early days of cloud were not “cloud native” by most definitions. It as pretty much “don’t host your own VMs in your own datacenter, host them in OUR datacenter” but there was nothing unique at this point in time. Don’t get me wrong this was definitely a necessary step for the cloud to grow.

PaaS was an attempt to obscure infrastructure away from the users. From an end-user perspective, you will bundle code into a zip archive or somemthing similar and then push it to the cloud provider. The cloud provider then automates the deployment onto VMs.

Notice the use of the word VMs. PaaS was just an abstraction on top of the VMs. You often still had to find a VM size and you often had them idle and incur costs. They usually scaled better than typical VMs.

FaaS Lane to Serverless

In a previous post, I allude to the reality that Amazon essentially invented the term “serverless” by creating Lambda, the first major functions-as-a-service (Faas) platform. FaaS did something that PaaS could not. It was able to truly scale to zero. PaaS platforms often had “idle workers”. That’s to say, they had some form of VM under the hood and you were billed for it.

PaaS was definitely a necessary stepping stone to get to serverless but FaaS was the first truly serverless platform. That being said, it was rife with vender lock-in. However the provider defined their runtime is how you had to define your code. Containers, on the other hand, allow you to bundle your runtime with your code.

But can containers be serverless? Aren’t the just idle workers themselves?

Containers, PaaS or Something Else?

When I talk about serverless containers, some of you may be sitting and wondering “well isn’t that just a new version of PaaS?” and I understand where that idea comes from. With solutions like [Knative](https://knative.dev “Knative) and KEDA you are still required to have a Kuberentes cluster available. Even if it is a one node cluster, it is still an idle worker. It’s always on and you are always paying for it.

Don’t get me wrong, these solutions serve a valid purpose. Afterall, while Kubernetes is great, sadly, it can be hard to use. Some have difficulty with Kubernetes platforming per this article’s summary or a report. But I can see how even simplifying containers deployment and orchestration seems like a serverless anti-pattern.

I would present this argument. Who is serverless for? Remember, serverless STILL runs on servers. Maybe one day we can run applications on crystals or actual clouds but today, that’s not the reality. There are ALWAYS servers under the hood. Heck, you can create your own FaaS on top of Kubernetes with platforms like OpenFaaS.

The purpose of serverless is to look at the user. How well have you abstracted the server and infrastructure away? If the end user needs to provision nodes OR are charged for underlying nodes (even if they are auto-provisioned) then it is not serverless.

I would also add that serverless needs to be event-driven. Since there are no idle workers and the service isn’t “always on”, you need a way for the service to execute. An event wil trigger that. Whether it’s a user hitting a URL or a message from a message bus, all serverless services should be event-driven

Container provide us a bundled runtime that can be executed in a serverless way with solutions like Knative, KEDA and others.

So are serverless containers another PaaS? Sort of. It’s more of a PaaS 2.0. A new paradigm. PaaS without machines (as far as the user is concerned)!

Cover Image Credit to Chanka on Pexels