Serverless
是云原生开发模型的一种,特点是开发人员专注于构建和运行应用,而无需管理服务器等硬件资源。
介绍
在 Serverless 中:
- 云提供商负责物理设备的维护和运维
- 开发人员通过将代码打包到容器中进行部署
- 部署时,开发人员不需关注硬件资源,应用即可对外服务(由请求来驱动计算),且根据需求自动伸缩
- 按需计算:用户为实际占用的资源付费,不在为固定的云服务器、带宽、存储等资源付费
现代应用架构通常是 Serverless、Microservice 和传统分布式应用的混合模式
如何理解 Serverless
参考 运维/软件架构进化史 的资源粒度部分,做如下类比:
资源粒度 | 类比 | 特点 |
---|
物理机 | 买私家车 | 成本高、利用率底 |
虚拟机 | 租车 | 灵活租用、按需购买资源 |
Serverless | 打网约车 | 按需使用、根据业务负载弹性伸缩、没有闲置成本 |
与其它云计算模型的区别
- 由云服务商负责管理基础架构(计算、存储和网络等)和应用扩展
- 云服务商继续管理操作系统、文件系统、漏洞补丁、负载均衡、容器、弹性伸缩、日志和监控等
- 开发人员专注于业务需求
- 公司不需要采购昂贵的硬件资源
- 应用部署与容器内,且容器在调用时按需启动
- 出现触发代码运行的事件(如HTTP访问)时,云架构才为应用分配资源
- 代码执行结束后,占用的大部分资源按照一定的策略释放
优点 & 缺点
- 优点
- 计算资源利用率高:按需付费、节约成本
- 弹性伸缩
- 聚焦业务、底成本(没有维护物理机、虚机等成本)
- 缺点
- 尚未形成统一的标准,每家云供应商都要自己的标准
- 仅支持无状态服务
- 高延迟:冷启动存在延迟、分布式会放大延迟
- 存在厂商锁定的风险
分类

图片摘自
Serverless
产品通常被分为两类(参考):
BaaS(Backend as a Service)
:处理整个后端的功能- 云服务端将后端所需的各种服务(如认证服务、数据库、消息队列、对象存储、块存储、代码构建等)封装为 API 提供给用户
- 用户根据 BaaS 的 API 编写并提交代码,通过自动化的方式完成应用容器的构建、部署和扩缩容管理
FaaS(Function as a Service)
:处理应用程序中支持的 响应事件
- 由事件驱动的计算执行的应用架构模型
- 开发人员编写业务逻辑,并将其部署到云服务提供的管理平台中,之后:
- 开发人员(或客户)通过 API 调用 Serverless 应用
- FaaS 服务商通过 API 网关来处理 API 调用请求
- 运行 Serverless 代码的容器特点:
- 无状态(使数据集成变得更加简单)
- 寿命短
- 由事件触发(按需自动启动)
- 完全有云提供商维护(客户无需接入环境维护)
Serverless 主流产品