云原生计算基金会(CNCF)最近的年度调查包含了关于WebAssembly(Wasm)的大胆预言:“容器是新常态,WebAssembly是未来。
这句话预示了很多事情,不仅是关于WebAssembly的路线图和发展趋势,还有它当前在计算领域的地位。据CNCF报道,已经有37%的终端用户组织有一些用WebAssembly部署应用程序的经验。CNCF报告还显示,虽然这些使用是为了测试Wasm的优点,但WasmEdge和WAMR是使用最多的运行时。
WebAssembly是未来,因为它越来越多地用于无服务器、容器化和插件技术,预计将大大影响网络、无服务器、游戏和容器化应用程序。”CNCF生态系统负责人 Taylor Dolezal表示。
但是,WebAssembly的采用将走向何方,它的路线图和未来在计算领域中的地位又是怎样的?让我们看看Wasm在容器、边缘和其他应用、编程语言和无服务器方面的集成及其未来。
1
现在与未来
你可以说Wasm与未来无关,但在它最初创建时所针对的所有主要Web浏览器中的使用已经非常重要。虽然Wasm在浏览器方面已经成熟,但在它成为未来的一部分之前,还需要做更多的工作才能将其用于后端应用程序,例如在边缘设备中的使用和部署。
事实上,它并不像将Python添加到Wasm然后通过托管Wasm运行时的Wasi运行包那么简单。对于机器学习和数据分析等Python专门适配的后端应用程序,其在Wasm中的应用与大量刚刚开发和编译的第三方依赖项密切相关。
目前还不存在一个Wasm平台即服务(PaaS)产品或平台,可以轻松地将WebAssembly用于后端应用。换句话说,Wasm在浏览器之外的应用才刚刚兴起。
“在可靠和高效地支持生产用例方面,有很多地方需要覆盖。” Enterprise Management Associates的分析师Torsten Volk告诉The New Stack,“究竟还缺少什么,我们将在这一过程中研究。到那时开源项目和商业供应商就会加入进来,来弥补这些差距,并提供尽可能最好的开发人员和DevOps体验。”
将服务器端(ss-Wasm)WebAssembly与用于浏览器应用程序的Wasm区分开来,ss-Wasm具有很大的前景,而采用ss-Wasm的道路是漫长的,“很多地方仍然需要规划”,提供项目协作平台的Xymbia公司的CEO和创始人Wiqar Chaudry告诉The New Stack。
“有两个非常简单的衡量标准。第一是,在创建软件时,Wasm是否有明确的经济价值主张?它是否降低了成本,帮助公司和开发商赚更多钱,或者它是否有助于释放其他类型的未实现的价值?” Chaudry说,他也参与了Wasmer项目,目前担任顾问。
第二个是它的技术价值主张。它是否吸引了足够多的开发人员并解决了足够多的技术难题,让他们承担使用Wasm作为其堆栈一部分的开销?”
2
WASI化
目前,WASI已经成为将Wasm的范围扩展到浏览器之外的最佳候选者。它被描述为WebAssembly的模块化系统接口,事实证明它有助于解决在任何有正确配置的CPU的地方运行Wasm运行时的复杂性——这是自WebAssembly创建以来的主要卖点之一。
我相信WebAssembly作为通用技术的关键特性是支持WebAssembly系统接口(WASI)。” Fermyon Technologies联合创始人兼CEO Matt Butcher告诉The New Stack,“WASI允许开发人员在他们的代码中使用熟悉的系统习惯,例如打开文件和读取环境变量,但不会破坏WebAssembly的安全模型。随着WASI支持的普及,我们将看到WebAssembly用例的爆炸式增长。”
然而,WASI仍在不断成熟。“WASI的第一个版本让我们看到了WebAssembly的潜力。第二个版本,预览版2,将在几个月后发布。”Butcher说,“预览版2中添加的网络功能将开辟大量新用途。”
Cosmonic CEO兼联合创始人Liam Randall表示,WebAssembly将利用组件和WASI,以便将常见的应用程序库抽象为常见的可插拔组件。他说,发布-订阅消息传递或特定SQL服务器等组件作为抽象而不是与特定库的紧密耦合交付给应用程序。
“当容器出现时,它们更小,启动速度更快,并且为开发人员提供了比虚拟机更小的配置和维护表面积。”Randall说,“WebAssembly模块延续了这一趋势,体积更小,启动速度更快,并利用组件来减少开发人员编写和维护的代码量。
“更重要的是,组件模型是一种新的应用程序方法,它允许以能力为导向的安全性,并使平台运营商更容易安全地运行应用程序。”
Wasm将WASI用于系统级集成API,进一步增加了其作为通用运行时的可行性,Dolezal说:“WebAssembly在安全环境中托管不受信任的代码的能力也是一个重要的好处。”
3
与容器关系
正如CNCF报告所说,容器确实是“新常态”,尤其是在云原生领域。在某些用例中,Wasm可以取代容器,但总体而言,WebAssembly和容器的采用将同步增长。
“我绝对相信Kubernetes和Wasm是互补的产品,其中一个Kubernetes负责配置和扩展基础设施,而另一个Wasm则在此基础设施之上交付应用程序,包括其运行时,”Volk说。
Kubernetes采用的路径可以作为Wasm如何以及何时可能被大规模采用的可能模型。“Kubernetes之所以被广泛采用,是因为Kubernetes和使用它的工具、扩展它和支持它的工具被广泛提供。”Chaudry说,“如果Kubernetes不像AKS、EKS或GKE那样容易获得,我们就不会看到这么多的使用。WebAssembly将走同样的路。”
Wasm也只解决了容器所做的一些问题,他说:“容器更复杂,并且具有更高的操作开销。两者之间的权衡使得两者同步增长是合理的。”
Butcher说,当DockerHub开始支持新的工件存储规范时,Wasm社区意识到,与其重新发明轮子,不如将Wasm运行时存储在Docker Hub等开放容器倡议注册表中。
例如,这个月,Fermyon的Spin 0.8开始支持OCI注册表。“虽然我们最初不确定OCI注册表是否是正确的分发机制,但标准的演变加上Docker Hub的支持改变了我们的想法。”Butcher说,“我们致力于使用OCI注册表分发WebAssembly应用程序,并且今天就可以这样做。”
推荐阅读:

为了方便大家交流,我们特别建了运维技术交流群,欢迎大家进群交流。
继续阅读
阅读原文