Guest post originally published on Medium by Michael Yuan
WebAssembly was originally created for the browser. But like Java and JavaScript before it, once it gained support from the community (esp standardization and toolchain support), WebAssembly has become increasingly popular on the server and on the edge as well. In 2021, WebAssembly won the prestigious Programming Languages Software Award from the ACM SIGPLAN.
In the age of cloud-native computing, the boundary of hardware and software is blurred. Everything is abstracted into “the cloud”. That has resulted in an explosion of microservices, messaging queues, data streams, and serverless functions. Those components are written by different developers, and potentially untrusted, but need to work together safely and seamlessly. The traditional way of using network APIs, or the more recent approach of using Docker containers, to isolate software components are slow and heavy. WebAssembly has emerged as a high-performance, cross-platform, and polyglot software sandbox for cloud-native software components. WebAssembly runtimes can be embedded into multiple programming languages and host environments. They can also be managed and orchestrated by container tools or data streaming frameworks.
The Cloud Native Computing Foundation (CNCF) is a proponent of WebAssembly in cloud-native infrastructure. It hosts several WebAssembly related projects and initiatives.
- WasmEdge (sandbox project) is a fully-featured WebAssembly runtime optimized for cloud and edge computing applications.
- wasmCloud (sandbox project) is an Actor-based WebAssembly host runtime that aims to make application development for WebAssembly easy.
- Krustlet (sandbox project) is a kubelet (or node agent on each Kubenetes node) that can run WebAssembly files as workloads. It is an easy way for running WebAssembly programs in Kubenetes.
- Kubernetes (graduated project) is a container orchestration tool. It can now manage the WasmEdge runtime and orchestrate WebAssembly applications side by side with other container apps. It can also run WebAssembly programs via Krustlet.
- KubeEdge (incubator project) is a runtime management and orchestration tool for edge computing. It is working with WasmEdge to support a WebAssembly runtime on edge devices.
- CRI-O (incubator project) is an OCI compliant container management tool. WasmEdge extended the CRI-O to support WebAssembly applications in standard Docker image repositories and management tools.
- Envoy (graduated project) utilizes WebAssembly to support dynamic extensions in service mesh proxies.
There are many other projects in the CNCF cloud-native landscape that utilize or integrate WebAssembly. If I have missed anyone (or you are interested in being included in this article), please reach out to me via email or Slack, or leave a comment in this medium article!
To learn more about WebAssembly in the cloud-native infrastructure and meet leaders in this industry, please join us at the Wasm Day event at the KubeCon North America 2021 (Disclaimer: I’m on the advisory board of Wasm Day). It is a virtual + in-person event. You can join as an attendee, speaker, or sponsor.
See you there!