serverless,无服务架构,当没有请求访问时,他不启动任何服务和资源,一旦触发了就会启动服务去处理任务。所以好处是无需关心服务是否挂了,适合处理耗时不长的快速事务处理,当流量大时,也能自动扩容响应。但如果高并发或突然没有流量时,它的自动扩容和缩容机制也会导致更多开销。
那Serverless到底解决了什么问题呢?
省钱、省力
算过部署服务器的开销吗?购买云服务商的Linux 虚拟机、RDS、Redis 缓存、负载均衡、CDN,再到容灾和备份,一年最小开销都在 1w。
但用了 Serverless,成本可降到 1k 以下。Serverless给应用开发和部署提供了一个极简模型,可让一个零运维经验的,几分钟就部署一个 Web 应用。根本无需了解怎么在 Linux 上装 Web 服务器,怎么配置负载均衡等无意义运维操作。
Serverless 可有效降低企业中中长尾应用的运营成本。
中长尾应用:每天大部分时间都没有流量或者有很少流量的应用。
尤其是企业在落地微服务后,一些边缘微服务其实被调用概率很低。往往又很难通过人工控制中长尾应用,因为不少应用还是被强依赖,无法直接下线。Serverless 之前,这些中长尾应用至少要独占 1 台虚拟机。现在有了 Serverless 的极速冷启动,企业就可以节省这部分开销。
Serverless一大特点就是缩容到0,平时没有流量时是不占用任何资源,除了硬盘。所以即使Serverless底层的容器方案,也可能是docker。但却更加节省资源。
提高研发效能
SFF(Serverless For Frontend)可让前端同学自行负责数据接口的编排,微服务 BaaS 化则让我们后端更加关注领域设计。这能进一步放大前端工程师的价值。
创业公司用 FaaS 来做基础设施编排和云服务编排
外包公司利用 Serverless 应用架构的快速迭代能力,提升开发效率,降低出错率,还可以给自己沉淀领域的解决方案
风险投资方也在逐渐开始关注 Serverless 领域,毕竟这也是一个新的风口
解放生产力,激发创造力
前端可自由通过FaaS组合完成业务需求,大大激发前端创造力。如果说 Node.js 语言的出现解放了一波前端工程师生产力,Node.js+Serverless 又可进一步激发前端工程师创造力。
微服务本身提出了很多理念。但微服务在服务端运维却缺少给力的支撑平台,放眼国内,目前还只有为数不多的大型互联网公司在重点跟进,其他人基本上只是在观望或者看热闹。
后端应用BaaS化
通过FaaS的后端解决方案将后端服务BaaS化,让后端工程师更加专注领域设计。Node.js在Serverless Computing,也就是FaaS中因为JIT的特性,冷启动速度确实是优势。实践经验来说,Java或其它语言比较适合下沉,去做后端服务化,也就是BaaS。目前比较好的是FaaS+BaaS架构。
所以Serverless架构中,后端同学应该去写BaaS微服务。前端同学可以自己写FaaS自由编排这些BaaS微服务。
Serverless你可以随时随地调用一个云端函数。对前端同学来说,降低了服务端运维的门槛;对后端同学来说,则是掌握一种新的云计算服务。
目前Serverless并不是万金油,它有它的局限性和使用场景。我们学习Serverless,应该将它作为一种工具,在适合的场景中使用。
serverless 冷启动问题
Node.js虽然说启动快,但启动时间+接口耗时给人的感觉就是这个服务性能不行。其实云服务商都会提供给你,预热和保留容器的方案,不过会产生额外费用。
像用户信息,通知私信,这些都有很多现成的云服务提供,用FaaS很容易搭建:云服务编排。但如果是已有业务上云,推荐还是逐步迁移吧。
参考
阿里跨境供应链前端架构演进与 Serverless 实践
Serverless 前端工程化落地与实践
从前端和云厂商的视角看 Serverless 与未来的开发生态
本文转载自微信公众号「 JavaEdge」,可以通过以下二维码关注。转载本文请联系 JavaEdge公众号。