本文将介绍一种新的 Serverless 架构:基于 WebAsssembly 虚拟机的 Serverless 架构。通过本文,你会了解到 WebAssembly 技术、Serverless WebAssembly 架构、如何使用 Serverless WebAssembly 开发一个简单的应用程序。
先来看一个 MobileNet TensorFlow model 在 Serverless Wasm 的实例。上传一张食物照片,识别图片里的食物是什么。
点击这里,上传你的午餐,将自动识别你中午吃了什么!
当下的 Serverless 架构
在 Serverless 架构中,开发者与用户无需关注服务器的运维与费用,而是将关注点投入在实现业务逻辑的代码上,并按实际资源使用量交费。在不降低用户体验的前提下,Serverless 极大降低了开发与运营的成本。
Serverless 云函数是今天实现互联网应用的最快捷最简单的方法。国内外各大云厂商都有自己的 Serverless 业务,或架构在系统或硬件级别的虚拟机,或建立在容器,如 Docker 之上。
这两种方法在安全与性能上各有千秋。 根据伯克利大学的 Johann Schleier-Smith 的观点,使用系统或硬件级别的虚拟机提供了最佳的隔离和安全性,但是运行很慢,并且管理起来很复杂。使用容器的方法安全性比较差,但是性能比系统级虚拟机高得多。
新兴的 Serverless Wasm 架构
除了上面两种 Serverless 架构外,还有一种新兴的方法:使用特定于应用程序的虚拟机,比如 WebAssembly(Wasm) 。
我在《为什么说软件服务的未来必然是WebAssembly?》一文中介绍过 WebAssembly 在服务端的巨大潜力。一言以概之,WebAssembly 提供了接近了接近本机代码的性能,但是依然保持着良好的安全性。
如果在 2008 年已经有了 WASM + WASI,那么我们压根无需创始 Docker 这个项目了。 Wasm 就有这么重要!服务器上的 WebAssembly 是计算的未来。 — Docker 联合创始人 Solomon Hykes