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