1.2 KiB
1.2 KiB
Design for FaaSO
Introduction
This should explain the high-level plan. Of course once I start writing the thing it will change, because I am agile like that.
So, here it is:
Function Builder
Take the function code, some ancillary files, and build a docker image using a template so that it can be executed.
Additionally:
- The image should be runnable with a standard
docker run
command - A test can be defined to check if the function is working
Function Runner
Given a description of what functions should be made available at which endpoints, like
/sum -> sum /mul -> multiply
It should:
- Start those functions via docker, running in specific ports
- Create a reverse proxy that routes the paths to the correct function
- Start/reload/configure the proxy as needed
- Periodically check the functions are still running
Intentionally: No HA yet, no multiple instances of functions, no up/downscaling, no multiple versions routed by header.
Implementation Ideas
- caddy for proxy? It's simple, fast, API-configurable.
- Local docker registry for images? See https://www.docker.com/blog/how-to-use-your-own-registry-2/
- Maybe grip for crystal template? Maybe kemal?