Abstract
OpenServerless is an open source, cloud-agnostic, serverless platform. It offer a complete environment for serverless applications development, based on Kubernetes. With Apache OpenWhisk as its FaaS engine, it provides an unified developer experience with a plethora of services (SQL and noSQL databases, key-value stores, object storage, LLMs services, function schedulers) managed by the platform’s core: the operator, along with tooling (the CLI) to simplify (and interact with) deployments, integrated ide and starter application and optmized runtimes integrated with the staters.
Proposal
OpenServerless is to provide an easy to deploy, cloud-agnostic, Kubernetes-based serverless platform with, at its core, a sophisticated operator and an extensible CLI tool. Through the operator, OpenServerless provides an all-round environment consisting of:
- Apache OpenWhisk for the FaaS capabilities
- Apache Apisix as the gateway
- Postgres Database as the SQL DB
- FerretDB Database as the NoSQL DB
- Minio or Ceph as the S3-compatible object storage
- Valkey as the key-value store
- A cron scheduler for the OpenWhisk actions
- In-cluster LLMs services
- An user interface for function management
- Extensible with containers to provide integration with serverless functions
The CLI tool makes the platform deployment straightforward on any kind of Kubernetes environment and it supports user extensions via plugins based on the “Task” task runner.
It will support seamless deployment on
- Local docker container
- AWS EKS
- Azure AKS
- Gcloud GKE
- RedHat OpenShift
- Ubuntu MicroK8s
- SuSE K3S
- Any server running Linux
Background
Serverless computing obtained widespread usage in recent years, often considered the next stage in cloud computing. The main idea behind is the complete abstraction of the infrastructure behind an application, where programmers can just write functional code and execute it based on some specific events (e.g. when an user requests a web page, a function returning the HTML is executed). This kind of functionality is what came to be known as FaaS (Function-as-a-Service), a platform that manages and executes (with auto-scaling) functions.
Over the years many such platforms have been developed, including Apache OpenWhisk, but they are only one side of a complete Serverless platform. Since its introduction, Serverless computing was defined as a combination of BaaS (Backend-as-a-Service) and FaaS where the former manages automatically the services that compose the latter.
Without a BaaS system behind, the maintenance duties are shifted from managing an application components to the FaaS platform components.
The OpenServerless project was born from a need to make an open source, complete, Serverless platform, free from vendor lock-ins. It was originally developed at Nuvolaris as an open source Kubernetes operator that automatically deployed and managed Apache OpenWhisk and it was then expanded to support multi-tenancy and several services (databases, storage, etc). It was designed from the ground up to be deployable on any cloud and locally for a better developer experience.
Rationale
Although there exists several FaaS platforms and many cloud vendors have their own offerings, there is currently a lack of a true open source serverless environment that connects a FaaS platform to other, needed, systems for serverless applications. The main proprietary platforms seamless integrate with their other offerings (e.g., databases), but they are geared towards vendor lock-in and make it difficult to use external services.
The first and foremost objective for OpenServerless is a to have a platform that can be deployed in any Kubernetes clusters, already equipped with several free and open source services. Having this type of platform available and governed by an open community like Apache could accelerate the adoption and the growth of this technology, as well as improve further interoperability.
Having OpenServerless incubated by the ASF would provide a clear signal to developers and companies interested in not only serverless applications development, but also in hosting and integrating a serverless environment in their workflow, that they are welcome to participate and contribute in its development, growth and governance.
Moreover, OpenServerless can easily fit in the Apache ecosystem and take advantage of the numerous projects. It uses Apache OpenWhisk as its FaaS engine, Apache Apisix for the gateway and Apache Kvrocks for the key-value store service, but any project could potentially be integrated and managed by the OpenServerless operator, such as other databases or message brokers.
Initial Goals
Foster a collaborative development with a broader community of developers in the Serverless space and the expansion of the offered services within the OpenServerless platform with other Apache projects.
Current Status
The OpenServerless project was developed as an open source project from the ground up (under the Apache v2.0 license) within Nuvolaris Inc. It is hosted on Github (https://github.com/nuvolaris) since December 2021 from its inception.
The project consists of the Kubernetes operator repository, currently named “nuvolaris-operator” (https://github.com/nuvolaris/nuvolaris-operator), and the CLI tool repository, named “nuv” (https://github.com/nuvolaris/nuv). Besides being useful to interact with the underlying OpenWhisk, the CLI tool is also a task runner that can execute user-defined tasks (grouped in “plugins”). The OpenServerless deployment tasks are written in a built-in plugin (https://github.com/nuvolaris/olaris).
With these three repositories come along a family of repositories that include custom OpenWhisk runtimes (https://github.com/nuvolaris/nuvolaris-runtimes-ng), E2E testing (https://github.com/nuvolaris/nuvolaris-runtimes-ng)
Issue tracking and project governance are also managed through Github. All pull requests are checked via Github Actions and are reviewed by contributors with write privileges.
Nuvolaris has also set up private staging servers to perform E2E testing and to stress test the platform performance under load and over extended periods of time before being merged into the main code branch.
Currently, the project is not officially versioned and is considered a “beta”, but is marching towards milestone 4 that aligns with what is considered to be “GA” content for the “core” platform. We would be very glad to adopt an Apache community system for deciding on milestones, constituent epics (features) along with dates a versioning plan and communicate effectively using email lists, IRC and a project homepage (which is currently lacking).
Meritocracy:
With OpenServerless new contributors were always welcome and helped getting familiar with the projects from the start. Frequent contributors have been added to the relevant repositories are core members and invited in the projects dev communication channels. We plan to continue the trend and invite frequent contributors to become committers in the project areas where they show a consistent track record.
Community:
There is a significant effort to build a community using the main media and social outlets, showing the progress made on the development and inviting interested developers to join and contribute. Although they are currently named after Nuvolaris. We plan to create and use “OpenServerless” specific ones.
The following outlets have been created to engage the public:
- Linkedin: https://linkedin.com/company/nuvolaris-io
- Slack: https://nuvolaris.slack.com
- Youtube: bit.ly/nuvtube
- Twitter: https://twitter.com/nuvolaris
Nuvolaris has sought to promote the project at every logical event worldwide where we are able.
Stats (GitHub):
15+ contributors across the repositories: https://github.com/orgs/nuvolaris/people
20+ contributors on the project "fantacalcio" built on top of Nuvolaris: https://github.com/orgs/fantacalcio/people
Some ContributionGraphs:
https://github.com/nuvolaris/nuvolaris/graphs/contributors
https://github.com/nuvolaris/nuv/graphs/contributors
https://github.com/nuvolaris/nuvolaris-operator/graphs/contributors
https://github.com/nuvolaris/nuvolaris-documentation/graphs/contributors
Stars: 200+ : https://github.com/nuvolaris/nuvolaris/stargazers
Core Developers:
The following core developers, along with their credentials, are proposed; each have been committers within the OpenServerless projects since their initial development:
- Michele Sciabarrà, CEO Nuvolaris Inc and Apache OpenWhisk PMC , original project developer and architect.
- Francesco Timperi Tiberi, CTO Nuvolaris Inc <francesco AT @nuvolaris.io>
- Giuseppe De Palma, PhD student in Computer Science, <giuseppe.depalma2 AT unibo.it> .
- Antonio Piga, Senior Software Developer , <antonio.piga93 AT gmail.com>
- Bruno Salzano: ICT Manager < d4rkstar AT gmail.com >
Alignment:
From the project's inception, we have considered Apache as a model for building a strong developer community, and we have strived to adopt its spirit and best practices. Our goal from the beginning has been to generate enough interest to establish a pool of developers and make them participate in the project’s progress. This would allow us to adopt an Apache governance model, acknowledging the merits of committers and core contributors who can bring external knowledge to further expand the project.
Known Risks
An exercise in self-knowledge. Risks don't mean that a project is unacceptable. If they are recognized and noted, then they can be addressed during incubation.
Project Name
No other project is using the name “OpenServerless” although the word “Serverless” has a widespread use as of now.
Orphaned Products
The initial group of committers was small, so the main knowledge of the codebase is somewhat centralized, which can pose a risk on the project being orphaned.
We however started to enlarge the base of people knowledgeable of the product and enlarge the base of the committes.
Inexperience with Open Source:
OpenServerless started as an open-source project in 2022. The initial committers have varying degrees of experience with open source projects and some have had extensive experience contributing to Apache OpenWhisk up to the level of PMC.
Length of Incubation:
Currenly the project is already able to deploy Nuvolaris clusters in a variety of cloud environments and provides an environment to build complete serverless applications.
Most of the focus will be to clean the code base, distribute it as an apache project and support users, and aligning to the more recent version of its Apache Comopnents.
Once those goals are reached the project can graduate, and it can be achieved in one year or less
Homogenous Developers:
Due to the fully remote nature of the initial committers group, the development of the project is already being done from geographically distributed team across Europe.
All committers are experienced in working in a distributed environment. They utilize various messaging and collaboration tools to communicate effectively, develop, and review code, irrespective of their location.
Reliance on Salaried Developers:
Some of the initial contributors has been funded by Nuvolaris. We aim to promote and encourage participation whenever interest is shown. We also anticipate attracting volunteer contributors who are interested in building a fully-featured, open source serverless environment.
Relationships with Other Apache Products:
OpenServerless relies on several Apache products. With OpenWhisk as the FaaS core, it consequently makes use of (and manages) CouchDB and Kafka. Currently it supports Kvrocks and Apisix as part of the managed services. There are potential future ties that will be explored (databases, data-processing services such as Spark).
A Excessive Fascination with the Apache Brand:
The initial committers have been active as users and/or contributors to other Apache projects and we are aware that the ASF has a strong brand which will help to attract more contributors.
However, our expectation is not the Apache brand itself. Instead, it's the project governance and best practices along with access to the Apache community, and the support and mentorship.
Documentation
Documentation is mainly gathered at a Nuvolaris website at the moment:
It consists of extensive documentation on the possible deployments via the CLI, a Tutorial, a Quick start guide, and the development workflow.
Moreover each command and tool in the CLI is documented and can be accessed with their relative “help” flags.
Initial Source and Intellectual Property Submission Plan
Code to be submitted is currently available in the following repositories
- https://github.com/nuvolaris/nuvolaris-operator
- https://github.com/nuvolaris/nuv
- https://github.com/nuvolaris/olaris
- https://github.com/nuvolaris/nuvolaris-testing
- https://github.com/nuvolaris/nuvolaris-documentation
- https://github.com/nuvolaris/nuvolaris-runtimes-ng
- https://github.com/mastrogpt/python-starter
- https://github.com/mastrogpt/nodejs-starter
- https://github.com/mastrogpt/php-starter
External Dependencies:
All the code is under the Apache License and includes code under compatible licenses.
A review of all the external dependencies will be however performend in the submission process.
Cryptography:
No encryption code is involved.
Required Resources
Mailing lists:
Git Repositories:
Upon entering incubation, we want to move (or copy) the existing repo to the Apache Software Foundation:
- https://github.com/apache/openserverless
- https://github.com/apache/openserverless-operator
- https://github.com/apache/openserverless-cli
- https://github.com/apache/openserverless-task
- https://github.com/apache/openserverless-runtimes
- https://github.com/apache/openserverless-testing
- https://github.com/apache/openserverless-documentation
- https://github.com/apache/openserverless-python-starter
- https://github.com/apache/openserverless-nodejs-starter
- https://github.com/apache/openserverless-php-starter
Issue Tracking:
We plan to use GitHub issues to track the project.
Other Resources:
For testing we will ask a donation of a Kubernetes cluster for AWS, Gcloud, Azure, Akamai and more.
Initial Committers
- Michele Sciabarrà: msciabarra at apache.org,
- Francesco Timperi Tiberi: francesco at nuvolaris.io,
- Giuseppe De Palma: giuseppe.depalma2 at unibo.it
- Antonio Piga: antonio.piga93 AT gmail.com
- Bruno Salzano: d4rkstar AT gmail.com
- Mattia Molinaro: ing.mattiamolinaro AT gmail.com
- Mario Cartia: mariocartia AT gmail.com
- Mirko Danzi: mdanzi @ codearchitects.com
All the initial committers have already submitted the ICLA at the secretary.
Sponsors
Champion:
- Jean-Baptiste Onofré jbonofre AT apache.org
Nominated Mentors:
- Jean-Baptiste Onofré jbonofre AT apache.org
- Enrico Olivelli eolivelli AT apache.org
- PJ Fanning fanningpj AT apache.org
- François Papon fpapon AT apache.org
- Bertrand Delacretaz bdelacretaz AT apache.org
Sponsoring Entity:
We are asking the Apache Incubator to sponsor this proposal.