Serverless
引子
2019年腾讯云第三季度内年营收破百亿 员工获发iPhone 11 Pro奖励
什么是serverless
无服务计算是指构建和运行不需要服务器管理的应用程序的概念 —— CNCF
可以先尝试从字面上来理解,server less
随着Serverless架构的兴起,真正的云计算时代才算到来了
发展历史
Iaas(Infrastructure as a service) -> Paas / Caas -> Faas / Baas
Serverless = Faas + Baas
Baas 后端即服务
它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的,前后端交互主要是以restAPI调用为主
比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等
Faas 函数即服务
开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。其中AWS Lambda是目前最佳的FaaS实现之一
优劣
优
- 降低运维复杂度
- 降低运维成本
- 缩短产品的上市时间
- 事件驱动触发
- 安全可靠?
- 弹性伸缩
劣
- 不适合长时间运行应用
- 会依赖于第三方服务
- 缺乏调式和开发工具,排查问题困难
Serverless实践
传统 BFF (Backend For Frontend) 架构
1、一方面,对不同的设备需要使用不同的 API,另一方面,由于微服务导致前端接口调用的复杂,所以前端开始使用 BFF 的方式,对接口进行聚合裁剪,以得到适用于前端的接口。
2、最底层的就是各种后端微服务,最上层就是各种前端应用。在微服务和应用之前,就是通常由前端开发的 BFF。
传统 BFF (Backend For Frontend) 的痛点
1、需要维护各种 BFF 应用
2、并发压力
Serverless 则可以帮我们很好的解决这些问题。用Serverless,我们可以用一个个函数来实各个接口的聚合裁剪。前端向 BFF 发起的请求,就相当于是 FaaS 的一个 HTTP 触发器,触发一个函数的执行,这个函数中来实现针对该请求的业务逻辑,比如调用多个微服务获取数据,然后再将处理结果返回给前端。这样运维的压力,就由以往的 BFF Server 转向了 FaaS 服务,前端再也不用关心服务器了。
其他应用场景
- 定时任务
- 数据加工
- 低频请求
- loT
- 认知计算
- 适用于某些 AI 场景,如聊天机器人
- 发送通知
- WebHook
- 数据统计分析
- Trigger 及定时任务
参考
https://www.jianshu.com/p/92632d6c2269
https://segmentfault.com/a/1190000020631510
https://www.cnblogs.com/tugenhua0707/p/10991363.html
https://segmentfault.com/a/1190000018455041