MichaelYuanSecondState 近日,OSCHINA和Gitee联合发布了《2022中国开源开发者报告》。其中,CNCFWasmEdge维护者MichaelYuan在报告中对开源大前端领域里WebAssembly进行了解读。以下是未删减版原文。 报告地址:https:gitee。comreportchinaopensource2022 2022年是云原生WebAssembly(Wasm)工具链逐渐成熟的一年,也是Wasm的云原生应用逐渐走向主流的一年。 虽然Wasm已经在浏览器里使用多年,在服务端上,云原生Wasm是一个起源于2019年的新生事物:Docker创始人SolomonHykes在推特上说,服务端的Wasm是云计算的未来。他说Docker未来不但要支持Linux容器,而且也会支持Wasm容器。与Linux容器相比,同等的应用在Wasm容器里会更轻,更快,更安全,更加(跨平台)可移植。 三年疫情之后,SolomonHykes的预言终于变成了现实。2022年10月24日,Docker在CloudNativeWasmDayNA宣布了DockerWasm技术预览,并且在之后发布了集成WasmEdge的DockerDesktop4。15正式发行版。通过与WasmEdge的合作,Docker现在可以肩并肩运行Wasm容器与Linux容器。现实世界的例子展现了Wasm容器应用的启动时间与空间占用都比Linux容器改进了两个数量级(100倍)。 Docker的支持是Wasm的开发工具链步入主流的一个里程碑。这意味着1000万使用Docker的开发者可以使用他们熟悉的工具链来开发与管理Wasm应用程序。通过一个简单的dockercomposeup命令,开发者可以立刻构建、共享和运行Wasm容器。 Docker的Wasm支持不仅依赖于WasmEdge,也依赖于runwasi这个开源项目。它使得任何基于containerd的容器管理系统(包括Docker与Azure)都能用shim的方式启动Wasm容器。12月2日,runwasi成为containerd的正式项目,这也意味着containerd正式支持了Wasm。 当然,很多云原生项目并不一定依赖containerd。但是几乎所有云原生项目都会用到更底层的OCIRuntime。crun与youki是两个率先支持Wasm的主流OCIruntime,它可以使Wasm应用无缝接入现有K8s生态。通过crun的支持,CRIO、Podman、OpenShift与K8s及K8s的变种如OpenYurt、SuperEdge、KubeEdge、kind都可以启动、编排Wasm容器。 在操作系统层面,FedoraLinux37与RedHatEnterpriseLinux的EPEL9都在2022年正式集成了WasmEdge的安装包。这样,云原生开发者可以直接在自己的Linux程序里集成Wasm应用,或者用简单的命令行启动Wasm的运行沙盒。 2022年,Wasm的语言的支持也在逐渐增加。例如,通过WasmEdgequickjs项目,JavaScript程序,甚至包括Node。JSAPI与NPM软件包,都可以运行在Wasm容器里。VMware将PHP导入到WebAssembly,可以在WasmRuntime运行WordPress。微软的。Net增加了对WASI的支持。 在2022年,Wasm标准里面最值得期待的是Componentmodel提案,这个提案将支持从一个Wasm模块访问其他模块和系统(例如数据库,消息队列),提高Wasm模块的可重用性和可组合性。Fermyon的spin与Microsoft的SpiderLightning等项目已经在使用componentmodel的一些接口与工具。主流的WasmRuntimes,包括wasmtime与WasmEdge,也都明确表示要支持componentmodel的实现。 但是同时,Wasm社区也在继续扩展WASI的应用范围,以让更多的Rust、JavaScript或者其他语言的应用程序能够不加更改地在Wasm上运行。这里有代表性的是WasmEdge对WASIsocket的改进创新使得Rust的Tokio,hyper,reqwest,甚至mysql,kafka,redis等crates,以及JavaScript里的Node。JSAPI,都能在WasmEdge里面运行。 开发工具的支持与开发者的努力,使得Wasm在2022年解锁、丰富了几个重要的云原生应用场景。微服务相较于传统Linux容器,Wasm为微服务提供了轻量级、安全、高性能的运行环境。例如,wasmCloud与Adobe合作部署了基于Wasm的安全微服务。又比如WasmEdge与Dapr正在合作,让基于WasmEdge的微服务能够直接使用Dapr集成的几百种服务。数据流函数作为一个轻量级、可嵌入的runtime,Wasm在数据库UDF和数据流的ETL方面有落地应用场景。例如SingleStore与NebulaGraph使用Wasm在数据库执行UDF。InfinyOn与Redpanda使用Wasm在实时数据流中处理数据。PaaSserverless函数Wasm非常适合执行轻量级,需要快速冷启动扩容的serverless函数。Fermyon、Cosmonic以及Fastly都基于Wasm推出了类似AWSLambda的Serverless平台。SaaSserverless函数Wasm可以赋能SaaS平台支持用户上传的代码。这些代码是由SaaS事件触发的,以取代复杂、慢、且难用的webhookAPIs。Suborbital推出了基于Wasm构建SaaS扩展的框架。而Flows。network是一个用Wasmserverless函数来连接SaaS的工具。 另外值得一提的是,我们也看到了越来越多的公司正在加大对Wasm的投入,这其中不仅有初创公司SecondState、Fermyon、Suborbital、Cosmonic、Diagrid、Singlestore,还有较大规模的公司比如Microsoft、VMWare、Intel、Cloudflare、Fastly、RedHat、Docker、Cisco、阿里、蚂蚁、字节跳动等等都在探索或正在使用服务器端的Wasm。 最后,Wasm在浏览器端也有了进展。W3C发布了WebAssembly核心规范2。0的首个草案,讨论了WebAssemblyCoreSpecificationVersion2。0、WebAssemblyJavaScriptInterfaceVersion2。0、WebAssemblyWebAPIVersion2。0,为WebAssembly在浏览器的应用指明了方向。 2022年,是Wasm云原生工具链逐渐完善的一年,相信云原生Wasm的应用在2023年将会更广泛。 《2022中国开源开发者报告》报告由前沿开源技术领域解读中国开源创业观察2022,以及开发者画像分析三个章节组成。在前沿开源技术领域解读部分,多位在其领域有所建树的一线开发者和开源商业化公司创始人,对目前国内外流行的前沿开源技术领域过去的发展和未来的趋势进行了深入的洞察,覆盖开源云原生、开源AI、开源大前端、开源大数据、开源DevOps、RISCV、开源操作系统、开源数据库、编程语言九大领域。