Kenneth Falck's Blog

The world needs a standard for Serverless

Posted on 2021-05-26 by Kenneth Falck

Nearly every web application is nowadays distributed as Docker container image. Even if the primary installation method is something else, there is a Docker installation available. WordPress is a typical example.

I want this to change. I don't like running Docker containers. Containers require a server, or at least a continuously running service like AWS Fargate. I don't want anything running continuously. It costs money and eventually crashes, gets stuck or leaks memory and needs a reboot.

I want applications to be serverless.

I want there to be a thriving standard and ecosystem for distributing serverless applications.

I want to install serverless versions of WordPress, GitLab, Odoo and any other web application. I want to run them on my AWS account with API Gateway and Lambda. No containers or servers.

Of course there will be challenges. Some parts of WordPress, GitLab, Odoo and other web apps will be difficult to run in a serverless way. But people will start making it happen. They will eventually make these apps run in a serverless way on AWS, Azure, Google and other platforms.

This will be true progress. These applications will stop using system resources when they are idle. They will cost nothing to run when nobody is using them. You can install all of them without having to provision any servers. You can keep them around to use at any time. Maybe just once a year.

As far as I can tell, this kind of a serverless standard does not exist yet. There's OpenFaaS, knative, kubeless, OpenWhisk and many other projects. But they are deployment tools. They're not creating a standard for packaging and distributing serverless apps. At least not successfully, in the same way that Docker did with Docker containers.

Once a serverless standard exists, I can add serverless backend components to my React apps. The components will not require any plugins or special configuration to deploy. When I deploy my app on a platform like Netlify, it'll just work. It will also be obvious and easy for other users to deploy my app on their own favorite platforms.

I realize that we already had this once with PHP. I want more than that. I don't want serverless applications to be limited to just PHP. They should be anything that FaaS platforms can support: Node.js, Python, Go, .NET and eventually also WebAssembly. Maybe they can even Docker containers, but executed in a serverless way and scaling down to zero when idle. That's how Lambda works.

Without a standard for serverless applications, we are stuck with Docker containers forever. Billions of containers are running idle, consuming resources and costing money for no reason. This must change.

PS. This blog is powered by WordPress that runs on AWS Lambda. It's serverless, but I had to tweak it a lot. The actual content is published to S3 and CloudFront. i would like such things to be automatic and standardized and available by default in the future.

PPS. I am in no way opposed to cloud-specific serverless features. You are very likely to need cloud services like Amazon DynamoDB or Google Firebase while developing serverless applications. That's how it should be. I am only advocating standardization of the basic serverless features enough so that we can package and distribute serverless apps. It's then up the application developer whether they support a single cloud or several clouds or something else.