阿里蒋航:Serverless将使前后端再度融合
极客时间编辑部
讲述:杜力大小:2.04M时长:04:27
Serverless 作为新兴的架构模式,与其相关的话题被讨论的如火如荼。近日,InfoQ 记者就 Serverless 技术的问题采访了阿里云前端工程师蒋航,聊了聊 Serverless 实践及对前端的影响,以下为重点内容。
时下,有一种观点认为 Serverless 必须依赖 BaaS ,蒋航认为这与现在公认的 Serverless 的定义有关,也就是 Serverless = FaaS + BaaS。
传统的编程中,函数针对输入计算输出,这些函数组成了一个应用程序。而 FaaS 则让开发者能够在云端编写、运行函数,并由这些云函数组成应用程序。
FaaS 本身提供的只有运行函数的功能,并且每个函数的执行都是孤立和短暂的。但应用程序往往还需要持久存储和临时存储,以及在存储中进行数据管理,因此需要 BaaS。BaaS 是一些列后端的功能的集合,比如云数据库、对象存储、消息队列、通知服务。没有这些 BaaS,函数的能力非常有限。整个 BaaS 也都由云供应商厂商提供,开发者不需要关心具体细节、实现,只需要在 FaaS 中使用 BaaS,这样才能构建整个应用。
依据 Serverless 的定义,蒋航谈到了 Serverless 的性能,这也是多数开发者都关注的一个话题。
蒋航认为,相比传统架构,在 Serverless 架构下,程序的运行需要经过一系列步骤,首先下载代码,然后启动容器,其次启动运行环境,最后执行代码。前三步统称为冷启动。传统应用则完全没有冷启动时间。而冷启动时间的长短,直接决定了应用性能的高低。
一方面,冷启动时间需要 Serverless 服务提供商去优化,另一方面,作为开发者,可以从应用的角度去优化。首先是选用合适的编程语言。因为 Java 等高级语言的冷启动时间大约是 Node.js、Python 等语言的 100 倍。其次是为函数分配合适的内存。一般而言,内存越大,冷启动的时间越短。基于这点,开发者也可以为 Java 分配更大的内存,使其冷启动时间和 Node.js 一样短。但更大的内存意味着更多的支出。所以为函数选用合适的内存很重要。
还有就是重复利用函数的执行上下文。当一个事件来临,函数冷启动并执行之后,运行环境并不会立即被销毁,而是在一定时间内处于冷冻状态继续等待下一次函数执行。这也是 Serverless 服务平台的一个性能优化方案。基于这样的特点,开发者可以将数据库连接、临时文件等保存在执行上下文中,从而使函数无需在每次运行时都创建这些资源。
此外,对函数进行预热也是一个办法。可以通过定时对函数进行调用的方式,使函数一直处于“温暖”状态,从而避免真实请求到来时函数进行冷启动,进而达到提高性能的目的。
除了 Serverless 的定义和性能保证外,蒋航还提出观点称, Serverless 将使前后端再度走向融合。纵观整个前端开发模式的演进历程,前端开发由最初的基于 JSP、PHP 等后端语言的模板渲染,演变到了基于 AJAX 的前后端分离,进而再演便到了现在的 BFF(Backend For Frontend)架构模式,甚至使用 Node.js 来做全栈开发。然而,无论是 BFF 还是全栈,都会涉及到服务器的运维,这恰好是前端工程师所不擅长的。但 Serverless 正好能解决这一问题。
基于 Serverless,前端工程师将再度回归到 Web 应用工程师这一职能,前后端也将由分离再度走向融合。前后端的协调也不在是基于接口的协调,而是基于 Serverless 函数的协调。前端工程师能够基于 Serverless 去开发函数、实现后端功能。而后端工程师则去实现不适用函数编写的功能,或者供函数使用的一些微服务。对前端工程师来说,后端变得更简单了,对后端工程师来说,后端变得更靠后了。整体而言,应用的开发效率也大幅提升,开发者只需要关注于业务逻辑的实现,使用更少的技术在更短的时间内得到更多的产出。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 桃子-夏勇杰前后端的重新分工并不合理。
- 加菲猫Serversless=FaaS+BaaS,可以解决现实中什么问题?
收起评论