Permalink
Browse files

Update and trim-back ROADMAP.md

- This change points the roadmap back to the documentation and
GitHub issue trackers
- Draws distinction between OF and OFC.

Signed-off-by: Alex Ellis <alexellis2@gmail.com>
  • Loading branch information...
alexellis committed Feb 4, 2019
1 parent f2e062b commit 2269d0dec655a19f14a50b5810832dc18ec3015f
Showing with 18 additions and 123 deletions.
  1. +18 −123 ROADMAP.md
@@ -1,143 +1,38 @@
# Roadmap

## 1. Current features

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

* [Introducing OpenFaaS (Functions as a Service)](https://blog.alexellis.io/introducing-functions-as-a-service/)

For the latest updates see [blog.alexellis.io/tag/openfaas](https://blog.alexellis.io/tag/openfaas/)

## Primary GitHub Organisation:

* https://github.com/openfaas/faas
* https://github.com/openfaas/faas-netes
* https://github.com/openfaas/faas-cli
* https://github.com/openfaas/nats-queue-worker
## GitHub projects / source code

## Incubator GitHub Organisation:
You can find a detailed breakdown of the [openfaas](https://github.com/openfaas/) and [openfaas-incubator](https://github.com/openfaas-incubator/) organisations and projects [in the docs](https://docs.openfaas.com/contributing/get-started/).

* https://github.com/openfaas-incubator
## Feature overview

### The API Gateway
For an overview see [the docs](https://docs.openfaas.com/) or see a [feature comparison between OpenFaaS and OpenFaaS Cloud](https://docs.openfaas.com/openfaas-cloud/intro/).

This container acts in a similar way to the API Gateway on AWS. Requests can be made to this endpoint with a JSON body.
### OpenFaaS

Some of the more recent Completed Features:
OpenFaaS is a platform for building Serverless Functions and/or deploying existing microservices. Any programming language or binary is supported with a range of [templates](https://github.com/openfaas/templates) available to help you get started.

* 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](https://blog.alexellis.io/serverless-alexa-skill-mobymingle/)
* 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)
The core services which make up OpenFaaS need to run on a Linux master, but Windows worker nodes can be added to your cluster to run Windows binaries and functions.

**Incoming requests and routing**
Platforms: the x86_64 platform has first class support, with 32-bit arm and 64-bit arm provided on a best-effort basis.

There are three options for routing:
Orchestrators: there is official support for Kubernetes & Docker Swarm with the community providing support for AWS Fargate, Hashicorp Nomad and others.

* 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.
### OpenFaaS Cloud

### The watchdog
OpenFaaS Cloud is a multi-user distribution of OpenFaaS with a built-in CI/CD pipeline, OAuth delegation, a dashboard and a git-based workflow with public/private GitHub and self-hosted GitLab.

This binary fwatchdog acts as a watchdog for your function. Features:
Platforms: only the x86_64 platform has support.

* 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
Orchestrators: there is official support for Kubernetes and for Docker Swarm. Kubernetes has better support for multiple users / tenants than Swarm.

## 2. Future/current work (subject to change)
## What is coming next?

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](https://github.com/openfaas/faas/issues).
Proposals and feature requests are tracked in Trello and through the GitHub issue tracker of each project in the two organisations.

Native support is available for Docker Swarm and Kubernetes using primitive API objects in each orchestration platform.
* [openfaas](https://github.com/openfaas/)
* [openfaas-incubator](https://github.com/openfaas-incubator/)

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
## Contributing

Please see [CONTRIBUTING.md](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md).

0 comments on commit 2269d0d

Please sign in to comment.