Fermyon promises over 5000 WebAssembly applications on one Kubernetes node via new platform

Fermyon promises over 5000 WebAssembly applications on one Kubernetes node via new platform

Fermyon has introduced SpinKube, for developing and deploying WebAssembly applications to Kubernetes, and Fermyon Platform for Kubernetes, including a specialized runtime which enables high density of applications.

Spin is a framework for building web applications in WebAssembly. Developers use the language of their choice, including Python, Go, JavaScript, and Rust to write the application which is then compiled to WebAssembly and runs in the Spin environment.

Spin has now been adapted to run well on Kubernetes. SpinKube, an open source project under the Apache 2.0 license, includes a Kubernetes operator for deploying Spin applications to Kubernetes nodes, a Containerd Shim enabling Spin applications to behave like container workloads, and a runtime class manager for installing Wasm runtimes.

The Fermyon Platform for Kubernetes, also open source, is a serverless platform including a runtime that supports thousands of applications on a single node. Using this runtime Fermyon claims “20 times the current pod limit in Kubernetes and often 50-100 times the number of pods running on a Kubernetes node.” The platform can be self-hosted or run on public cloud.

There is also a new Kubernetes plugin for Spin which enables applications to be deployed using the Spin CLI (Command Line Interface).

Although Fermyon is the main sponsor of the project, the Containerd Spin Spin has been contributed by Deis Labs, part of Microsoft’s Cloud Native Compute Team, and the Runtime Class Manager by SUSE and Liquid Reply, a container orchestration specialist.

The interest in WebAssembly in this context is based on the small size of its binary output, sandboxing, and portability across different architectures and operating systems. A Spin WebAssembly component starts in less than a millisecond, according to the introductory post. Sandboxing means that multiple workloads can be hosted in a single runtime instance. In principle, this means that WebAssembly workloads on Kubernetes are more efficient, and therefore cheaper, than deploying applications in containers. Fermyon claims savings on 60 percent on compute cost. 

The sandboxing of WebAssembly applications is weaker than the isolation offered by a separate virtual machine – though a VM with its own operating system has a larger attack surface so there are some benefits too.

WebAssembly is also used by CloudFlare for its Workers platform, which deploys code to data centers running V8 isolates, these being independent copies of the V8 runtime. V8 is the JavaScript engine used by Google’s Chromium project. CloudFlare’s Workers service is closed source but based on workerd, which is open source.

SpinKube and the new platform has the potential to being similar benefits to standard Kubernetes infrastructure, though it is still early days both for Spin and for WebAssembly outside the browser.