Serverless 的背景
Serverless 概念从 2012 年开始提出,真正推出相关云产品是 2014 年 AWS 推出 Lambda。因此,当提及 Serverless 的时候会联想 Lambda,并且冒出“函数”、“按需(调用次数)收费”、“事件驱动”等。
Serverless 的定义
CNCF 对 Serverless 给出的定义是:NoOps 和 Pay as You Run;伯克利对 Serverless 的定义是:Serverless = FaaS + BaaS。其实,Serverless 无需去定义,因为名字本身已经非常清晰明确了 "Server + less" ,核心思想就是让你不再需要关注 Server。作为对比的是 IaaS 时代,需要购买服务器,安装各种工具,再在上面开发自己的业务。Server 不会消失,而是让一般的开发者不需要再关注 Server ,这意味着**【智能弹性】、【快速交付】、【更低成本】,这也是 Serverless 相关产品的典型特性**。Serverless 是一个理念,不是某一种具体的技术。Serverless 不是推翻重来这种革命性的,而是全面的降低用户使用云的成本,全面的提升开发者的研发效率。
Serverless 从诞生的第一天起就是云原生的。
Serverless 相关产品
函数计算 FC
FC 是根正苗红的 Serverless 产品,经过这么多年的发展,它在前端 Serverless、多媒体处理、AI 等场景均得到了很好的应用。
FC 中的工作负载更多算是 Functions
PaaS 在 Serverless 时代的重生
PaaS 本身的概念挺大,广义的说它处于 IaaS 和 SaaS 之间。
SAE(Serverless App Engine)是阿里云 2019 年推出的产品,它是 PaaS 和 Serverless 的融合,有 PaaS 的快速交付,也有 Serverless 的智能弹性、更低成本。具体如下:
- 是一个应用 PaaS
- Serverless 化的,也就是不必再关心服务器,不用再申请机器,维护服务器,而是按需使用,按分钟计费。
- 依托于容器镜像,解决了 PaaS 的突出问题(各种限制和强绑定),可以跑任何语言的应用
Serverless 并不是微服务的进一步演进之后的技术,Serverless 和微服务并不冲突,完全可以共存。因为 Serverless 背后的理念代表的是一种无需关注服务器,降低使用云计算服务的理念。因此,在 Serverless 类的 PaaS 产品上完全可以继续使用为微服务技术开发,同时享受 Serverless 理念所带来的智能弹性、更低成本等。
GAE(Google App Engine),位于 IaaS 之上,也像 Lambda,但是限制很多,结果最终大家都还是回到了 IaaS 上了。
PaaS 下的工作负载更多算是 Application
Serverless 容器
Kubernetes 作为生产级别的容器编排系统,现在已经成为了容器编排的事实标准,被广泛应用在自动部署、扩展和管理容器化应用。它有相应的 Serverless Kubernetes 产品,比如 ASK、AWS Fargate。
在这类产品中,无需购买节点即可直接部署容器应用,无需对集群进行节点维护和容器规划,并且根据应用配置的 CPU 和内存资源量进行按需付费。
典型的有:
- 微博:在 30s 之内可以极速扩容 500 个应用实例,应对跨年活动和热点事件
BaaS
上述提到的 FC、SAE 更多是计算类的产品,但是开发过程中除了计算逻辑,还会有其他依赖,比如存储、中间件等。BaaS 则主要负责这个,BaaS 类产品,提供基于 API 的服务,这些 API 一般都是按需使用、免运维、自动扩缩容的,所以他们也是 Serverless 化的。典型的比如阿里云的 OSS,具有与平台无关的 RESTFUL API,可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。