From 2269d0dec655a19f14a50b5810832dc18ec3015f Mon Sep 17 00:00:00 2001 From: Alex Ellis Date: Mon, 4 Feb 2019 09:50:16 +0000 Subject: [PATCH] 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 --- ROADMAP.md | 141 +++++++---------------------------------------------- 1 file changed, 18 insertions(+), 123 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 50a96084..e9875b0c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,143 +1,38 @@ # 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 -* https://github.com/openfaas/faas-netes -* https://github.com/openfaas/faas-cli -* https://github.com/openfaas/nats-queue-worker +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. -## 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 -* 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) +Platforms: only the x86_64 platform has support. -**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} -* Automatic routing is also enabled through the `/` endpoint via a `X-Function` header which matches a service name (function) directly. +Proposals and feature requests are tracked in Trello and through the GitHub issue tracker of each project in the two organisations. -### 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: - -* 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 +## Contributing Please see [CONTRIBUTING.md](https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md).