Permalink
Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
144 lines (105 sloc) 5.65 KB

Roadmap

1. Current features

For an overview of features in August 2017 read the following post:

For the latest updates see blog.alexellis.io/tag/openfaas

Primary GitHub Organisation:

Incubator GitHub Organisation:

The API Gateway

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 a X-Function header which matches a service name (function) directly.

The watchdog

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 or cat
  • Can also run Windows native binaries

2. Future/current work (subject to change)

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.

Contributing

Please see CONTRIBUTING.md.