Apache OpenServerless: A FaaS Solution with Privacy and Power

Introduction

Apache OpenServerless is an innovative project from the Apache Incubator, designed to deliver a versatile and scalable serverless environment compatible with any cloud provider or Kubernetes distribution. Built upon the robust Apache OpenWhisk framework, it aims to empower developers to create applications of any complexity, from simple forms to advanced AI-driven solutions.

Currently in its preview phase, Apache OpenServerless invites the community to provide feedback and contributions, accelerating its journey towards a stable release.

Key Features of Apache OpenServerless

Apache OpenServerless integrates three core components that collectively form a complete serverless ecosystem:

Serverless Engine Powered by Apache OpenWhisk

At the heart of Apache OpenServerless lies Apache OpenWhisk, a distributed and scalable open-source platform for executing serverless functions. OpenWhisk enables dynamic execution of lightweight code snippets, or “Actions,” written in multiple programming languages. These Actions respond to events (via triggers) or HTTP requests, seamlessly adapting to various workloads.

Application Services

To support various application needs, Apache OpenServerless provides a set of pre-configured services, including:

  • an S3 compatible storage,
  • a Redis compatible caching,
  • MongoDB and PostgreSQL for both noSQL and SQL.

Developer-Friendly Tools

To streamline development, Apache OpenServerless offers:

  • Ready-to-use application templates - kickstarting projects for various use cases.
    -Integrated Development Environments (IDEs) - the system offers a user-friendly CLI for seamless interaction with the serverless platform. Furthermore a VScode extension is available.
  • Simplified deployment workflows - to build, test, and launch cloud-ready applications with ease.

Installs everywhere and control data

OpenServerless is trying to set new standards in the Function as a Service (FaaS) landscape. Built on Kubernetes and Apache OpenWhisk, OpenServerless offers an infrastructure-agnostic approach that can be installed on-premises or in public clouds. This flexibility ensures that data remains under the control of the organization, addressing key privacy concerns for industries with strict data governance requirements. By providing companies with the option to run their applications on their terms, OpenServerless aligns with the demand for transparent and secure data handling in a serverless environment.

Conclusion

OpenServerless also benefits from the robust, scalable nature of Kubernetes, making it ideal for handling asynchronous, event-driven workloads that are core to modern serverless applications. With OpenWhisk’s powerful action-based execution model, it provides a straightforward framework for developers to deploy and manage functions seamlessly. The addition of observability tools allows developers to monitor performance, making it easy to optimize and troubleshoot.

In essence, OpenServerless is more than just a FaaS—it’s a privacy-focused, Kubernetes-native solution that empowers companies to innovate securely and effectively. With its unique approach to data control and its ability to support intensive workloads, OpenServerless is reshaping the serverless ecosystem and opening up exciting new applications for AI-powered, cloud-native solutions.

Assembling the lab for OpenServerless

Our first code drop is available: the development environment!
Development environment as a laboratory

OpenServerless is a complex project. It has a lot of moving parts and relies heavily on Kubernetes.

There are many subprojects, and each subproject has a complex set of dependencies. Setting up all those dependencies is usually complex and time consuming.

I have worked in a project where it used to take literally a couple of days to get everything ready to code. Also, you were never sure that everything was set up correctly because the dependencies were constantly changing.

For this reason, we have made a special effort to provide an easy and consistent way to have a standardized development environment for OpenServerless.

The Development Virtual Machine

We considered a few options for setting up the development environment.

The first option is of course a setup script, but since you may be working on Linux, Windows or Mac, this approach turns out to be difficult and fragile.

The second option is to use Docker, and indeed for a while we used a Docker image in DevContainer format as our development environment. We also set up a Kubernetes development cluster using Kind, that is, “Kubernetes-in-Docker”.

However, this approach proved to be slow and with a number of problems related to Docker. So we gradually moved to using a full virtual machine. And this is the approach we are taking with OpenServerless.

The development environment is a virtual machine initialized with a cloud-init script. Cloud-init is a standard for initializing a virtual machine in the cloud.

Using this cloud-init script you can actually run a developmnt environment basically in any cloud provider, if you want a shared one.

Or, if you want to use your local machine, assuming you have at least 16GB of memory, you can launch the VM and initialize it with Cloud-Init in Linux, Windows and Mac using multipass.

THe README of Apache OpenServerless is indeed entirely devoted to setup the development virtual machine with Multipass and Cloud-Init.

What is in the development machine?

Using this cloud-init script, you can actually run a development environment in basically any cloud provider if you want a shared one.

Or if you want to use your local machine, assuming you have at least 16GB of memory, you can start the VM and initialize it with cloud-init in Linux, Windows and Mac using multipass.

The README for [Apache OpenServerless] (https://github.com/apache/openserverless) is actually entirely devoted to setting up the development virtual machine with Multipass and Cloud-Init.

What is in the development machine?

The development machine is actually packed with goodies. For a start, it includes Kubernetes in the form of K3S, a lightweight but full-featured version of Kubernetes. Well, technically, K3S is an API-compatible, work-alike sister re-implementation of Kubernetes, but for all practical purposes, it IS Kubernetes.

But we need more than Kubernetes. We have a number of subprojects, and for each one, there’s a different set of tools and programming languages that need to be set up. We used to have a script to setup these dependencies, but since it turned out to be tedious to update, we switched to using [the package manager Nix] (https://nixos.org/download/). This is a tool that allows you to set up development environments (actually any environment) declaratively by writing a script shell.nix, the Nix language that defines the development environment. The virtual machines also include nix, and also a tool called direnv to automatically configure nix, calling a different shell.nix every time you change a directory.

Last but not least, we use VSCode as it provides remote development features and allows you to work in the virtual machine as if it were a local folder. Instructions for setting up VSCode to use the virtual machine are provided in the README.

It is also worth mentioning that since we use task a build tool everywhere, we included it in the VM. There is also a license manager license-eye to ensure that all files are properly licensed under the Apache license.

Apache OpenServerless started

The project Apache OpenServerless is now active

The Apache OpenServerless project’s goal is to build a serverless distribution that runs in all major flavors of Kubernetes in public and private clouds, and in any virtual machine running Linux in any cloud. It is not just a serverless engine, but a complete set of integrated tools to easily build cloud-native applications, with a focus on building AI applications.

Specifically, we are building on top of Apache OpenWhisk, which includes Apache Kafka and Apache CouchDB as components, adding Apache APISix as an API gateway, and a set of custom runtimes.

We have a Kubernetes operator to manage all the components, and a rich CLI to support installation and development.

We have a strong focus on development tools: the system includes support for developing full-stack applications in web-based IDEs using the DevContainer standard, with built-in full-stack hot reload (both backend and front-end).

We will have a set of starters that support the development of AI applications based on LLM. Furthermore, since many AI applications are basically a coreography of functions, something well supported in the serverless world, we will have a workflow generator to easily develop applications.

The project is already running at the Apache Software Foundation and we are in the process of migrating the contributed code base.

Our home is https://github.com/apache/openserverless

Join us by subscribing to our mailing list sending an email to

dev-subscribe@openserverless.apache.org

The Name OpenServerless Was Approved

The name Apache OpenServerless has been approved by the Apache Software Foundation!

We are in the process of submitting thr open source codebase of Nuvolaris Community, to the Apache Software Foundation as an Apache project, and our proposed name is Apache OpenServerless.

The name is excellent because it conveys what the project is: a complete serverless environment for running cloud-native applications anywhere.We have already written the proposal and found our champions and mentors.

But before we voted the project in the Incubator PMC, we wanted to make sure that the chosen name was available.There was some concern because the name “serverless” is already trademarked, although we found that combinations using the name “serverless” are disjointly trademarked, so it should work.

To resolve this, we initiated research with the Apache Trademark team to be sure the nome was usable. The research took some time, but the result was: approved!So now we are ready to vote and get the process approved by the community and start building the next standard in the open source world: Apache OpenServerless!

Project Accepted for Incubation!

OpenServerless is now incubating at the Apache Software Foundation!

It is official! Apache OpenServerless is now an incubating project at the Apache Software Foundation! The result of the vote was positive and this is the email announcing the result of the vote on the Incubator Mailing List.

From: Jean-Baptiste Onofré 
Date: Tuesday 18 June 2024 16:20:06 BST 
Subject: [RESULT][VOTE] Accept OpenServerless into the ASF incubator 

Hi folks,

this vote passed with the following result:

+1 (binding): Francis Chuang, PJ Fanning, Yu Xiao, Duo Zhang,
 Bertrand Delacretaz, Zhongyi Tan, Zhang Yonglun, Charles Zhang, 
 Enrico Olivelli, Dave Fisher, François Papon, 
 Roman Shaposhnik, Yu Li, Calvin Kirs 

+1 (non binding): ZhangJian He, Nicolò Boschi, likeho


Thanks all for your vote !

Regards JB

OpenServerless Proposal Submitted

We are submitting the OpenServerless project to the Apache Software Foundation

Hello everyone, we are happy to announce that we submitted the OpenServerless project to the Apache Software Foundation. We are going to develop our Nuvolaris Community into a worldwide open source project at the highest level.

The goal is to provide the open source foundation of our Nuvolaris Enterprise product as a vendor independent and stable project maintained by a community.

To achieve this goal, we have submitted the Apache OpenServerless proposal is the natual step. The link to the proposal can be found here.

Our codebase is well tested and already has a number of paying and open source customers. We already have a network of contributors who have already contributed to the codebase and we have found the mentors for our project and the champion for the project.

But what is the Nuvolaris community (to become Apache OpenServerless)? There is already an open source serverless engine (Apache OpenWhisk) and I am one of the PMC of the project and also wrote an O’Reilly book about it: Learning Apache OpenWhisk.

What is missing now is a complete distribution including integrated services to build a complete platform. We want the Apache OpenServerless project to fill this gap.

With Nuvolaris Community we provide storage, databases, caches, frontend, IDE, starters and even LLM support on top of OpenWhisk. We have made this available and running on all major cloud provider Kubernetes platforms (EKS, AKS, GKE, LKE) and also for the Kubernetes of all major Linux distributions (RedHat OpenShift, Ubuntu MicroK8S, SuSE K3S).

Simply put, if OpenWhisk is Linux, then Nuvolaris is RedHat. The OpenServerless project aims to be the first complete open source distribution that makes it easy to build cloud-native applications with portability in mind.

And we want to build the platform in the open, contributing our work to the Apache Software Foundation to make it widely available and get more vendors involved in supporting it.