» FaaSO is an ALPHA QUALITY functions as a service system «


FaaSO: Why, What, How

FaaSO is a platform for running serverless functions. It is designed to be simple to use, and to be able to run on any infrastructure. But in real life it's mostly meant to be used by self-hosters to run their own code on their own hardware.

It has been interesting to decide the design constraints for FaaSO. Here are what I came up with:

Having said all that, let's get to the interesting bits:

Architecture

FaaSO as a platform has three components:

The faaso proxy service (the proxy from now on) uses Docker as source of truth. It literally doesn't save anything to disk or to any database, excepto for some minor temporary files.

What does "docker as source of truth" imply?

When you use any of the FaaSO tools to manage your funkos, what they do is work with docker. Building a funko? Builds a docker image. Scaling a funko up or down? Starts or stops docker containers. And so on.

There is ZERO MAGIC here. If you know docker, you know how FaaSO works. If you want, you can do exactly what FaaSO does using docker commands, and FaaSO won't mind.

In addition to all your funkos, FaaSO will run one container of its own: the faaso-proxy.

The Proxy

The proxy listens on port 8888 and is the only thing that needs to be exposed to the users / the Internet. It will automatically work as reverse proxy for all funkos.

Internally, the proxy uses caddy as a reverse proxy and configures it as needed when funkos are started or stopped.

What else

There is not much more to FaaSO. It's not meant to be a replacement for AWS Lambda or Google Cloud Functions. It's meant to be a simple way to run your own code on your own hardware.

Your next steps are probably to set up a faaso proxy, and learn how to write code to run on it.