mirror of
https://github.com/openfaas/faas.git
synced 2025-06-13 10:46:46 +00:00
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>
This commit is contained in:
parent
f2e062b493
commit
2269d0dec6
141
ROADMAP.md
141
ROADMAP.md
@ -1,143 +1,38 @@
|
|||||||
# Roadmap
|
# Roadmap
|
||||||
|
|
||||||
## 1. Current features
|
## GitHub projects / source code
|
||||||
|
|
||||||
For an overview of features in August 2017 read the following post:
|
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/).
|
||||||
|
|
||||||
* [Introducing OpenFaaS (Functions as a Service)](https://blog.alexellis.io/introducing-functions-as-a-service/)
|
## Feature overview
|
||||||
|
|
||||||
For the latest updates see [blog.alexellis.io/tag/openfaas](https://blog.alexellis.io/tag/openfaas/)
|
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/).
|
||||||
|
|
||||||
## Primary GitHub Organisation:
|
### OpenFaaS
|
||||||
|
|
||||||
* https://github.com/openfaas/faas
|
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.
|
||||||
* https://github.com/openfaas/faas-netes
|
|
||||||
* https://github.com/openfaas/faas-cli
|
|
||||||
* https://github.com/openfaas/nats-queue-worker
|
|
||||||
|
|
||||||
## Incubator GitHub Organisation:
|
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.
|
||||||
|
|
||||||
* https://github.com/openfaas-incubator
|
Platforms: the x86_64 platform has first class support, with 32-bit arm and 64-bit arm provided on a best-effort basis.
|
||||||
|
|
||||||
### The API Gateway
|
Orchestrators: there is official support for Kubernetes & Docker Swarm with the community providing support for AWS Fargate, Hashicorp Nomad and others.
|
||||||
|
|
||||||
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 Cloud
|
||||||
|
|
||||||
Some of the more recent Completed Features:
|
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.
|
||||||
|
|
||||||
* UI for viewing and testing functions deployed through stack
|
Platforms: only the x86_64 platform has support.
|
||||||
* 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)
|
|
||||||
|
|
||||||
**Incoming requests and routing**
|
Orchestrators: there is official support for Kubernetes and for Docker Swarm. Kubernetes has better support for multiple users / tenants than Swarm.
|
||||||
|
|
||||||
There are three options for routing:
|
## What is coming next?
|
||||||
|
|
||||||
* Functions created on the overlay network can be invoked by: http://localhost:8080/function/{servicename}
|
Proposals and feature requests are tracked in Trello and through the GitHub issue tracker of each project in the two organisations.
|
||||||
* Automatic routing is also enabled through the `/` endpoint via a `X-Function` header which matches a service name (function) directly.
|
|
||||||
|
|
||||||
### The watchdog
|
* [openfaas](https://github.com/openfaas/)
|
||||||
|
* [openfaas-incubator](https://github.com/openfaas-incubator/)
|
||||||
|
|
||||||
This binary fwatchdog acts as a watchdog for your function. Features:
|
## Contributing
|
||||||
|
|
||||||
* 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](https://github.com/openfaas/faas/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](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md).
|
Please see [CONTRIBUTING.md](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user