-
Alex Ellis authoredAlex Ellis authored
faas - Functions As A Service
FaaS is a platform for building serverless functions on Docker Swarm Mode with first class metrics. Any UNIX process can be packaged as a function in FaaS enabling you to consume a range of web events without repetitive boiler-plate coding.
Highlights:
-
Ease of use through UI portal
-
Setup a working environment with one script
-
Portable - runs on any hardware
-
Baked-in Prometheus metrics
-
Any container can be a function
-
Auto-scales as demand increases
Concept
- Each container has a watchdog process that hosts a web server allowing a JSON post request to be forwarded to a desired process via STDIN. The respose is sent to the caller via STDOUT.
- A gateway provides a view to the containers/functions to the public Internet and collects metrics for Prometheus and in a future version will manage replicas and scale as throughput increases.
Read the story on my blog or find out more below.
Minimum requirements:
- Docker 1.13 (to support attachable overlay networks)
- At least a single host in Swarm Mode. (run
docker swarm init
)
TestDrive
You can test-drive FaaS with a set of sample functions as defined in docker-compose.yml on play-with-docker.com for free, or on your own laptop.
Here is a screenshot of the API gateway portal - designed for ease of use.
Ongoing development/screenshots:
FaaS is still expanding and growing, check out the developments around:
- Auto-scaling through Prometheus alerts
- Prometheus alert example
- Invoke functions through UI
- Create new functions through UI
- Various sample functions
- ARM / Raspberry Pi support
Develop your own functions
Roadmap and contributing
Additional content
Would you prefer a video overview?
See how to deploy FaaS onto play-with-docker.com and Docker Swarm in 1-2 minutes. See the sample functions in action and watch the graphs in Prometheus as we ramp up the amount of requests.
Prometheus metrics are built-in
Prometheus is built into FaaS and the sample stack, so you can check throughput for each function individually with a rate function in the UI at port 9090 on your Swarm manager.
If you are new to Prometheus, you can start learning about metrics and monitoring on my blog: