2015年,刚好是JavaScript和PHP问世的20 周年,我们邀来这两大语言的发明人,JavaScript之父Brendan Eich和PHP之父Rasmus Lerdorf,担任Modern Web开发大会的主题讲者。大家最好奇的问题是,这两个语言下一个十年、二十年会怎么发展?
中午找来几位开发社群成员,与两大开发教父一起用餐,两位大师除了大谈爸爸经和开发圈秘辛之外,他俩不约而同地提到,效能,是网页开发语言接下来最重要的课题。
Rasmus Lerdorf演讲中展示了当年最新发表的PHP 7(现在已经到8.4了),背后有哪些优化设计,可以让大型网站服务的执行效能快一倍,也让PHP更适合用来打造微服务架构的应用。
Brendan Eich更绝,直接在演讲中,在台上玩起第一人称射击游戏,全场观众大吃一惊,包括坐在前几排的我。这款操作灵巧,画面流畅的3D互动游戏,竟然是跑在浏览器中的Web应用。秘诀就是这款应用用了支援Asm.js的游戏引擎Unity与Unreal。透过编译JavaScript子集合的作法,让JavaScript执行效率几乎跟Bytecode程式一样。
一个月后,JavaScript之父和四大浏览器平台业者联手,发起了W3C WebAssembly社群小组,想要重新发明JavaScript网页应用,他以WebAssembly来命名这项新技术,顾名思义,就是Web的Assembly(组合语言)形式,要让网页应用也能拥有二进位Bytecode的执行格式。
不过,WebAssembly的做法跟JavaScript子集合有本质上的不同,Brendan Eich指出,WebAssembly直接定义了一个新的网页执行层,而非JavaScript子集合,让浏览器能直接执行二进位档案格式的WebAssembly档案,来达桌面软体般的速度。他更点出了一个趋势,WebAssembly技术不限于JavaScript,而是任何语言都可以用的技术。
两年后,各大浏览器纷纷支援这项新的W3C标准,不少科技公司,都用WebAssembly来打造大型网页应用,或是需要庞大运算的线上服务。Google就是其中一家。
Google地球就是靠V8引擎的WebAssembly多执行绪支援,才在浏览器中实作出任意放大缩小的飞行视角操作。Google Sheets则是用Wasm封装Java计算引擎,让超大型试算表的计算速度提高了1.8倍。
Adobe花了很多年,想要将设计圈最重要的软体Photoshop搬上云端,一直克服不了JavaScript的效能问题,后来找Google帮忙,改用Wasm技术,终于在2021年打造出Web版Photoshop测试版,去年正式推出。
2019年,Mozilla联手云端新创Fastly,将Wasm带出浏览器以外的世界,发表了WASI(WebAssembly System Interface)专案,透过独立执行的runtime程式和命令列工具,不需要浏览器,可以直接在桌机或伺服器端执行Wasm应用。
这一步让Wasm成了云原生世界的要角。这个原本在浏览器中的安全沙盒技术,转而可以在任何地方,提供一个轻量、快速、安全、跨平台的应用程式执行环境。这两年甚至开始具备跨语言能力,可以让多个语言的Wasm档案,只靠同一个runtime,在单一只应用中互相互动,就像同款语言开发的元件一样。
生成式AI开发圈也看上Wasm的轻薄短小,高速冷启动能力。现在若想用GPU来执行一只AI推论程式,除了开发者自己的程式码之外,还需要Nvidia的CUDA runtime、AI技术框架如PyTorch或TensorFlow函式库,加起来的容器映像档,最少也要4.8GB,若再加上所用的LLM模型档案可能多达10GB,想要执行一只容器化的AI推论应用,至少要15GB,冷启动的时间往往得花上30秒,甚至好几分钟。常见做法是,提前启动AI推论的服务来待命,这也限制了AI推论的部署和执行模式。
但若改用Wasm技术来封装AI推论应用,Wasm平台新创Fermyon技术长Radu Matie指出,只需要数MB档案大小,冷启动可以大幅缩短到千分之几秒,可以切割出短暂的GPU算力,来提供「刚好即时(Just in time)」的AI推论回应。
甚至今年还出现了Wasm打包的AI推论框架LlamaEdge,包括了一套10亿参数量的Llama 2模型,档案大小只有30MB,可以提供GPU原生应用执行速度。Wasm可以成为GAI快速部署到不同环境、提供快速推论的关键基础环境。
也难怪,Gartner在2024年新兴科技发展周期报告中,特别将WebAssembly和GenAI并列为唯二,跨出「期望过高的巅峰期」,即将进入技术成熟度曲线的「幻灭期」,意味著这两项技术已经度过了炒作阶段,接下来经过一段时间改善和优化,就会进入稳定发展的成熟期,最快2~5年,就会对全球带来变革式的影响。
11月刚在盐湖城落幕的KubeCon北美大会,WebAssembly更成了这场容器与云原生大会最热门的技术话题,被视为K8s未来十年的三大发展方向之一,与eBPF、IT永续并列。
国外也有企业开始采用这项技术,例如高盛集团有个每天数百万次呼叫的开发者平台,用不同种语言开发的API外挂,都全面改用Wasm来封装,大幅简化了部署和管理的工作。
K8s、容器技术是许多台湾企业数位转型,推动IT现代化所用的主流、核心技术,但是,云原生的下一波技术WebAssembly开始成熟,值得大家留意!