For an overview of features in August 2017 read the following post:
For the latest updates see blog.alexellis.io/tag/openfaas
- https://github.com/openfaas/faas
- https://github.com/openfaas/faas-netes
- https://github.com/openfaas/faas-cli
- https://github.com/openfaas/nats-queue-worker
This container acts in a similar way to the API Gateway on AWS. Requests can be made to this endpoint with a JSON body.
Some of the more recent Completed Features:
- UI for viewing and testing functions deployed through stack
- Auto-scaling of replicas as load increases
- Backing off of replicas as load reduces
- Unique URL routes for serverless functions
- Instrumentation via Prometheus metrics at GET /metrics
- Bundled Prometheus stack with AlertManager
- UI enhancements to create new function through a form
- Raspberry Pi (armhf/armv6) support (currently available)
- Documentation for current API in Swagger format
- Documentation about Alexa sample function
- Native CLI for templating/building and deploying functions
- Windows support for watchdog back-end - so that Windows executables can be used in a multi-OS swarm
- Enforcing function execution time in seconds.
- Python, Node.js, Ruby and CSharp code templates for the CLI
- Delete function in CLI
- Developer guide for CSharp
- Developer guide for Python
- Kubernetes support
- Asynchronous / long-running tasks via NATS Streaming
- CLI - invoke / list functions / query function info
- OS constraints in the deploy function API
- helm chart
- Developer guide to using functions together - via pipes on client, or a "director" function on server
- Developer guide for DigitalOcean
- Re-branding to OpenFaaS
- New logo - graphic icon and text
- Website / landing page
- Non-root Docker templates for the CLI
- Integration with a reverse proxy - such as Traefik or Kong
- I.e. for TLS termination
- Basic auth for /system endpoints (probably via reverse proxy)
- AARCH64 (64-bit ARM) port (dependent on Docker release schedule)
- Healthchecks for functions deployed on Kubernetes
- Supporting request parameters via query-string
- Custom end-to-end label support for functions
- Supporting request parameters via route - QueryString / Path
- Guide for basic authentication over HTTPs (set up externally through NGinx etc)
Incoming requests and routing
There are three options for routing:
- Functions created on the overlay network can be invoked by: http://localhost:8080/function/{servicename}
- Automatic routing is also enabled through the
/
endpoint via aX-Function
header which matches a service name (function) directly.
This binary fwatchdog acts as a watchdog for your function. Features:
- Static binary in Go
- Listens to HTTP requests over swarm overlay network
- Spawns process set in
fprocess
ENV variable for each HTTP connection - Only lets processes run for set duration i.e. 500ms, 2s, 3s.
- Language/binding independent - can invoke any UNIX process, including built-ins such as
wc
orcat
- Can also run Windows native binaries
If you need an up-to-date picture of what is current and ready-for-use please reach out to the OpenFaaS maintainers through our Slack comunity. Most items are detailed via Github issues.
Native support is available for Docker Swarm and Kubernetes using primitive API objects in each orchestration platform.
Must have
-
Dedicated blog site built from GitHub pages or Hugo
-
Developer Cloud guides:
-
for Digital Ocean (done)
-
for Packet
-
for AWS
-
Developer guide for your first Node.js function
-
Configurable memory limits per function exposed through API
-
Certifier for third-party integrations - via e2e tests (in progress)
-
Return stderr or link to stderr via function invocation (For VMWare / Mark Peek)
-
Community function templates for the FaaS-CLI (in progress)
Should have
-
Docker image builder as remote service based upon Moby
-
Kafka-Connector for the API Gateway
-
AfterBurn - fork once, use many which removes almost all runtime latency - (Alpha available)
-
Kafka queue worker implementation (async currently available by NATS Streaming) - available in pending PR
-
Our own "timer" (aka cron) for invoking functions on a regular basis - or a guide for setting this up via Jenkins or CRON
-
Guide/proxy for Flask in a function
Could have
-
Multi-tenancy (in-progress for Kubernetes and Docker Swarm)
-
Progress animation for building Docker images via CLI
-
Built-in Docker registry with default configuration
-
Function store - list of useful predefined functions
-
Configurable memory limits via "new function" pop-up (already supported by Docker compose stack)
-
Scale to zero 0/0 replicas
-
Serverless Inc framework support - as a "provider" (in progress)
Nice to have
- CRIU - (Checkpoint/Restore In Userspace) for starting serverless tasks with a high start-up cost/latency.
- Deeper tests coverage and integration tests
On-going integrations in addition to Swarm and K8s:
- ECS - via Huawei
- Nomad via Hashicorp / Nic Jackson
- Hyper.sh via Hyper
- Cattle / Rancher by Ken in the community
- DC/OS via Alberto in the community
Internal research is also being done for the ACI / AKS / K8s-connector.
Please see CONTRIBUTING.md.