• Stars
    star
    2,550
  • Rank 17,989 (Top 0.4 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A lightweight & portable faas engine

faasd - a lightweight & portable faas engine

Sponsor faasd Build Status License: MIT Downloads

faasd is OpenFaaS reimagined, but without the cost and complexity of Kubernetes. It runs on a single host with very modest requirements, making it fast and easy to manage. Under the hood it uses containerd and Container Networking Interface (CNI) along with the same core OpenFaaS components from the main project.

faasd logo

Use-cases and tutorials

faasd is just another way to run OpenFaaS, so many things you read in the docs or in blog posts will work the same way.

Videos and overviews:

Use-cases and tutorials:

Additional resources:

About faasd

  • faasd is a static Golang binary
  • uses the same core components and ecosystem of OpenFaaS
  • uses containerd for its runtime and CNI for networking
  • is multi-arch, so works on Intel x86_64 and ARM out the box
  • can run almost any other stateful container through its docker-compose.yaml file

Most importantly, it's easy to manage so you can set it up and leave it alone to run your functions.

demo

Demo of faasd running asynchronous functions

Watch the video: faasd walk-through with cloud-init and Multipass

What does faasd deploy?

faasd relies on industry-standard tools for running containers:

You can use the standard faas-cli along with pre-packaged functions from the Function Store, or build your own using any OpenFaaS template.

When should you use faasd over OpenFaaS on Kubernetes?

  • To deploy microservices and functions that you can update and monitor remotely
  • When you don't have the bandwidth to learn or manage Kubernetes
  • To deploy embedded apps in IoT and edge use-cases
  • To distribute applications to a customer or client
  • You have a cost sensitive project - run faasd on a 1GB VM for 5-10 USD / mo or on your Raspberry Pi
  • When you just need a few functions or microservices, without the cost of a cluster

faasd does not create the same maintenance burden you'll find with maintaining, upgrading, and securing a Kubernetes cluster. You can deploy it and walk away, in the worst case, just deploy a new VM and deploy your functions again.

You can learn more about supported OpenFaaS features in the ROADMAP.md

Learning faasd

The faasd project is MIT licensed and open source, and you will find some documentation, blog posts and videos for free.

However, "Serverless For Everyone Else" is the official handbook and was written to contribute funds towards the upkeep and maintenance of the project.

The official handbook and docs for faasd

You'll learn how to deploy code in any language, lift and shift Dockerfiles, run requests in queues, write background jobs and to integrate with databases. faasd packages the same code as OpenFaaS, so you get built-in metrics for your HTTP endpoints, a user-friendly CLI, pre-packaged functions and templates from the store and a UI.

Topics include:

  • Should you deploy to a VPS or Raspberry Pi?
  • Deploying your server with bash, cloud-init or terraform
  • Using a private container registry
  • Finding functions in the store
  • Building your first function with Node.js
  • Using environment variables for configuration
  • Using secrets from functions, and enabling authentication tokens
  • Customising templates
  • Monitoring your functions with Grafana and Prometheus
  • Scheduling invocations and background jobs
  • Tuning timeouts, parallelism, running tasks in the background
  • Adding TLS to faasd and custom domains for functions
  • Self-hosting on your Raspberry Pi
  • Adding a database for storage with InfluxDB and Postgresql
  • Troubleshooting and logs
  • CI/CD with GitHub Actions and multi-arch
  • Taking things further, community and case-studies

View sample pages, reviews and testimonials on Gumroad:

"Serverless For Everyone Else"

Deploy faasd

The easiest way to deploy faasd is with cloud-init, we give several examples below, and post IaaS platforms will accept "user-data" pasted into their UI, or via their API.

For trying it out on MacOS or Windows, we recommend using multipass to run faasd in a VM.

If you don't use cloud-init, or have already created your Linux server you can use the installation script as per below:

git clone https://github.com/openfaas/faasd --depth=1
cd faasd

./hack/install.sh

This approach also works for Raspberry Pi

It's recommended that you do not install Docker on the same host as faasd, since 1) they may both use different versions of containerd and 2) docker's networking rules can disrupt faasd's networking. When using faasd - make your faasd server a faasd server, and build container image on your laptop or in a CI pipeline.

Deployment tutorials

Terraform scripts:

Function and template store

For community functions see faas-cli store --help

For templates built by the community see: faas-cli template store list, you can also use the dockerfile template if you just want to migrate an existing service without the benefits of using a template.

Community support

Commercial users and solo business owners should become OpenFaaS GitHub Sponsors to receive regular email updates on changes, tutorials and new features.

If you are learning faasd, or want to share your use-case, you can join the OpenFaaS Slack community.

Backlog, features, design limitations and any known issues

For open backlog items, shipped features, design limitations and any known issues, see ROADMAP.md

Want to build a patch without setting up a complete development environment? See docs/PATCHES.md

Are you looking to hack on faasd? Follow the developer instructions for a manual installation, or use the hack/install.sh script and pick up from there.

More Repositories

1

faas

OpenFaaS - Serverless Functions Made Simple
Go
24,942
star
2

faas-netes

Serverless Functions For Kubernetes
Go
2,122
star
3

workshop

Learn Serverless for Kubernetes with OpenFaaS
Python
955
star
4

faas-cli

Official CLI for OpenFaaS
Go
794
star
5

openfaas-cloud

The Multi-user OpenFaaS Platform
Go
767
star
6

templates

OpenFaaS Classic templates
Dockerfile
261
star
7

of-watchdog

Reverse proxy for STDIO and HTTP microservices
Go
244
star
8

ofc-bootstrap

Bootstrap OpenFaaS Cloud for your team
Go
181
star
9

store

Official Function and Template Store for OpenFaaS
Shell
162
star
10

faas-provider

A backend provider interface for OpenFaaS
Go
123
star
11

nats-queue-worker

Queue-worker for OpenFaaS with NATS Streaming
Go
122
star
12

golang-http-template

Golang templates for OpenFaaS using HTTP extensions
Shell
100
star
13

openfaas-linkerd-workshop

Lightweight Serverless on Kubernetes with mTLS and traffic-splitting with Linkerd2
98
star
14

python-flask-template

HTTP and Flask-based OpenFaaS templates for Python 3
Python
82
star
15

faas-swarm

OpenFaaS provider for Docker Swarm
Go
79
star
16

ingress-operator

Custom domains, paths and TLS for your OpenFaaS Functions
Go
68
star
17

docs

Official Docs for OpenFaaS
65
star
18

community-cluster

OpenFaaS Cloud Cluster for Community
60
star
19

connector-sdk

SDK for connecting events to functions
Go
56
star
20

openfaas.github.io

Primary website / landing-page for the project
HTML
53
star
21

store-functions

Common CLIs packaged in containers with a HTTP interface
Dockerfile
51
star
22

media

Press kit / Media pack for OpenFaaS
44
star
23

cron-connector

Invoke functions on a schedule.
Go
39
star
24

nats-connector

An OpenFaaS event-connector to trigger functions from NATS
Go
38
star
25

mqtt-connector

MQTT connector for OpenFaaS
Go
32
star
26

cloud-functions

OpenFaaS social functions
Python
28
star
27

classic-watchdog

Classic Watchdog for OpenFaaS
Go
25
star
28

certifier

OpenFaaS Compliance testing
Go
25
star
29

license-check

Check your code for Copyright header compliance
Go
19
star
30

ruby-http

A Ruby HTTP template for OpenFaaS
Ruby
12
star
31

faas-middleware

HTTP middleware for OpenFaaS
Go
12
star
32

templates-sdk

SDK resources for templates such as models and entrypoints
Java
10
star
33

function-builder-examples

OpenFaaS Pro function builder API examples
PHP
10
star
34

social-functions

Enabling social media for OpenFaaS
Go
9
star
35

cli.openfaas.com

The installation script for the OpenFaaS CLI served by Netlify
Shell
9
star
36

python-fan-in-example

Python code example for implementing a fan-out/fan-in pattern with OpenFaaS functions.
Python
8
star
37

config-checker

Check your OpenFaaS Configuration
Go
7
star
38

astradb-openfaas

Connect to Astra DB using Node.js and OpenFaaS
JavaScript
3
star
39

go-sdk

An SDK for use within OpenFaaS functions
Go
3
star
40

openfaas-autoscaler-tests

JavaScript
2
star
41

derek-test-repo

Testing compliance
1
star
42

.github

README for organisation
1
star
43

multi-tenant-tests

Basic multi-tenant-tests
JavaScript
1
star