云原生 Wasm 的开发者工具日趋主流

云原生 Wasm 的开发者工具日趋主流

精选文章moguli202025-02-18 11:15:5823A+A-

作者 Vivian Hu 原文链接:https://www.infoq.com/news/2022/11/cloud-native-wasm-day/

KubeCon + CloudNativeCon 的 Cloud Native Wasm Day 已成为 Wasm(WebAssembly 的缩写)爱好者相聚并规划生态系统未来的首选盛会。在10月下旬底特律举行的 KubeCon 2022 上,本次 Cloud Native Wasm Day 的会议重点是用于服务端 WebAssembly 的开发者工具。

Wasm 最初是作为 Web 浏览器中的安全沙箱开发的。近年来,它在服务端找到了许多应用,作为 VM 和 Linux 容器 (LXC) 的安全、轻量、快速和可移植的替代方案。例如,以太坊之后,几乎所有区块链平台都使用 Wasm 来执行智能合约。 边缘云使用 Wasm 运行 Serverless 函数,SaaS 平台使用 Wasm 运行嵌入式函数,包括云数据库和数据流 pipeline。在企业中,也越来越需要在 Wasm 中运行微服务,而不是在更重、更慢的容器中。

然而,阻碍 Wasm 采用和发展的一个主要问题是缺乏工具。虽然 Linux 容器可以运行任何 Linux 应用程序,但 Wasm 通常要求开发者使用 Wasm 支持的语言 SDK 以及编译器和运行时工具创建应用程序,以充分利用 Wasm 的函数。开发者需要一种简单的方法来开始使用 Wasm,同时使用他们偏好的编程语言进行开发。

此次大会汇聚了 Docker、Microsoft、VMWare、Fastly、Red Hat 和 Cisco 等知名公司,以及 Fermyon、Second State、SingleStore、Cosmonic 和 Suborbital 等初创公司。

Docker+Wasm

大会上,Docker 宣布了与 CNCF WasmEdge Runtime[1] 合作的 Docker+Wasm 技术预览[2] )。Docker CTO Justin Cormack 分享了 Wasm 如何融入 Docker 的愿景[3]:支持多种类型的容器。然后,来自 Docker 的 Chris Crone 和来自 Second State 的 Michael Yuan 介绍了如何使用 Docker 工具链构建、运行和共享 Wasm 应用程序[4]

Docker+Wasm 中的演示应用[5],基于 WasmEdge[6],由 Second State 开发,是一个数据库驱动的 Web 应用程序,用 Rust 编写并编译到 Wasm 中以在 WasmEdge 中运行。整个应用程序可以构建在容器中(例如具有预配置 Rust 开发环境的容器),并通过 docker compose up 命令与容器(例如有 MySQL 数据库的容器)并排着部署。

Component Model

在社区内,有许多改进 Wasm 的努力,以使 Docker 等公司更容易为 Wasm 构建工具。一个得到共识的方向是 Wasm 的 Component Model。Fastly 的 Luke Wagner 就 Component Model 的设计和进展[7]做了精彩的演讲,这将极大地提高 Wasm 模块的可重用性和可组合性。它将更好地从一个 Wasm 模块访问其他模块和系统,包括操作系统 API(例如网络)。WasmEdge 和 Wasmtime 等主要的 Wasm 运行时已经致力于支持和实施组件模型提案。

虽然 Wasm Component Model 的工作仍在进行中,但社区已经在部分使用该规范。Cosmonic 的 Brooks Townsend 发表了演讲 演示 Wasm 组件的实际示例[8],可以使用 wasmCloud 跨云和设备迁移。然后 Taylor Thomas 讨论了Component Model 应用程序在现实世界中的样子[9]

Wasm 组件模型定义了管理 Wasm 模块并与之交互的新方法。Cosmonic 的 Bailey Hayes 和 SingleStore 的 Kyle Brown,展示了 warg[10],这是一个用于 Wasm 组件的可加密验证且透明的注册表。它可以使 Wasm 组件模块实现更高级别的软件供应链安全。

编程语言

编程语言支持是开发者工具的关键部分。Wasm Day 有几场演讲都是关于在 Wasm 中支持新的编程语言。

来自 VMWare CTO 办公室和 Wasm 实验室的 Daniel Lopez Ridruejo 和 Rafael Fernandez Lopez 演示了 mod_wasm 项目[11]。它是一个在 Wasm 中运行 PHP 应用程序的 Apache 模块。该项目已经足够先进,可以运行复杂的 PHP 应用程序,例如 Wordpress。

Fermyon 的 Joel Dice 解释了如何在 Wasm 中运行 Java 应用程序[12]。由于 Wasm 不支持 GC,现在还为时尚早。但是 Wasm 已经可以在没有 GC 的情况下运行短时间运行的 Java 程序。

Red Hat 的 Christian Heimes 讨论了当前在 Wasm 运行时中对 Python 的支持[13]。CPython 项目可以编译成 Wasm,它允许各种 Python 应用程序在浏览器和服务端上的 Wasm 上运行!

Fermyon 的 Ivan Toowlson 讨论了 Wasm 的 .Net 运行时中的新功能[14],它允许 C++ 程序更好地与 C 程序互操作。

嵌入式函数

Wasm 的一个常见应用场景是开发者为现有软件产品或平台创建扩展。

SingleStore 的 Carl Sverre 演示了开发者如何使用嵌入在 SingleStore 的云数据库中的 Wasm 运行时通过 UDF 自定义数据处理[15]。通过利用 SingleStore 提供的内置 AI 函数,开发者可以在该数据库平台上创建复杂的视频游戏!

来自 Cisco 的 Guba Sandor 和 Dubas Adam 展示了一个基于 Wasm 的 Envoy 代理插件系统[16],该系统专为自定义日志数据 pipeline 而设计。

云服务

最后,对于开发者来说,部署 Wasm 函数的最简单方法是让其他人管理基础设施。在 Cloud Native Wasm Day,初创公司好几个都选在了这个领域.

Fermyon 推出了 Fermyon Cloud[17] 服务,使开发者能够简单地将 GitHub 存储库转换为 Servereless 微服务。Fermyon Cloud 从 GitHub Repo 获取源代码,将其构建为 Wasm 字节码,按需运行,并将 HTTP 输入和输出连接到它。

Cosmonic 推出了 PaaS[18],使开发者能够跨云创建、组合、运行和扩展 Wasm 模块,以完成复杂的工作流程。

Suborbital 展示了基于云的 SaaS 扩展引擎[19]。它允许将 Wasm 函数嵌入到 SaaS 产品中,作为 Web API 的更安全、更快、更强大的替代方案。

Second State[20] 预览 flows.network[21],一个面向 SaaS 的 serverless 函数平台。Flow 函数可以由 SaaS webhook event 触发并将输出发送到另一个 SaaS API。它支持基于 Wasm 的 SaaS connector(类似 Zapier,但带有代码)和自动化机器人(例如 GitHub 机器人或聊天机器人)。


参考资料

[1]

WasmEdge Runtime: https://github.com/WasmEdge/WasmEdge

[2]

Docker+Wasm 技术预览: https://docs.docker.com/desktop/wasm/

[3]

Wasm 如何融入 Docker 的愿景: https://youtu.be/uf0Rboi0mYg

[4]

使用 Docker 工具链构建、运行和共享 Wasm 应用程序: https://youtu.be/3j915xoDovs

[5]

Docker+Wasm 中的演示应用: https://github.com/second-state/microservice-rust-mysql

[6]

WasmEdge: https://github.com/WasmEdge/WasmEdge

[7]

Component Model 的设计和进展: https://youtu.be/phodPLY8zNE

[8]

演示 Wasm 组件的实际示例: https://www.youtube.com/watch?v=1KbMYnJXEm4&list=PLj6h78yzYM2PzLhPvZIihwPShNuXP01C5&index=10

[9]

Component Model 应用程序在现实世界中的样子: https://youtu.be/JotItWTHD5s

[10]

展示了 warg: https://youtu.be/niCLN2NMZQs

[11]

mod_wasm 项目: https://youtu.be/jXe8kulUscQ

[12]

如何在 Wasm 中运行 Java 应用程序: https://sched.co/1AUDG

[13]

当前在 Wasm 运行时中对 Python 的支持: https://www.youtube.com/watch?v=B52cSnNOrFM&list=PLj6h78yzYM2PzLhPvZIihwPShNuXP01C5&index=5

[14]

Wasm 的 .Net 运行时中的新功能: https://youtu.be/nPvRpV7kp7o

[15]

开发者如何使用嵌入在 SingleStore 的云数据库中的 Wasm 运行时通过 UDF 自定义数据处理: https://www.youtube.com/watch?v=YgTyS6ccK2o&list=PLj6h78yzYM2PzLhPvZIihwPShNuXP01C5&index=8

[16]

一个基于 Wasm 的 Envoy 代理插件系统: https://www.youtube.com/watch?v=yfWaY6lyRtY&list=PLj6h78yzYM2PzLhPvZIihwPShNuXP01C5&index=14

[17]

Fermyon Cloud: https://www.fermyon.com/cloud

[18]

Cosmonic 推出了 PaaS: https://cosmonic.com/

[19]

Suborbital 展示了基于云的 SaaS 扩展引擎: https://suborbital.dev/

[20]

Second State: https://www.secondstate.io/

[21]

flows.network: https://flows.network/

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2