在过去十年里,整个 IT 的基础设施发生了巨大的变化,从物理机、虚拟机再到容器,深刻地改变了企业获取和使用计算能力的方式。随着计算资源越来越细粒度、越来越弹性,IT 基础设施的维护成本持续下降。函数计算的出现,将云的弹性和效率提升到了更高层次。
在函数计算中,用户将业务逻辑抽象为函数(微服务)。函数计算平台负责管理服务器等基础设施,可靠地执行函数,例如根据函数负载动态分配计算资源、函数 / 用户级别的资源隔离、底层计算环境安全补丁升级等。有了函数计算,企业可以专注于业务层的创新,无须管理服务器等 IT 基础设施,大幅提高了产品迭代的效率,从而获得显著的竞争优势。
3.7.1 功能特点
函数计算具备以下特点。
事件驱动
函数计算通过事件驱动的方式和对象存储、日志服务、消息队列、API 网关等云服务无缝集成,用户只需要编写少量代码即可串联多个云服务,完成复杂的业务逻辑。例如用户上传图片到对象存储,就能够自动产生事件触发函数进行相应的处理。当前函数计算已经被大量云服务集成。典型的应用场景包括利用函数计算大规模并行处理对象存储数据,或者流式的处理消息队列、日志、数据库的增量数据。
丰富的计量模式,次秒级计量
函数计算提供了预付费(包年包月)和后付费(按量)两种模式。和其他类型的计算服务不同,函数计算的后付费真正做到了让用户不为任何闲置资源付费,即只有实际处理了用户的请求,才会计费;如果没有请求,则没有费用。针对动态变化的负载,用户能够无缝地结合两种计量模式,根据用户的实际使用情况来看,通常能有 10% - 90% 的成本降低。
实时弹性伸缩
函数计算根据用户的负载实时伸缩,管理底层计算资源。全自动的资源管理方式
不但减小了用户水位预估,资源扩缩容的复杂度,也提高了资源利用效率。
卓越的工程效率
在服务器等IT 基础设施由函数计算平台管理后,用户能够专注于应用层逻辑的编码、测试和运维。在实践中,在函数计算平台上采用微服务架构构建应用,用户服务的版本发布节奏通常从数月一次提升到数天甚至数小时一次。表3-3 对比了 Serverless 和Serverful 的差异。
表3-3 Serverless 和Serverful 的差异
项目 |
Serverless |
Serverful |
资源水位规划和伸缩 |
由平台负责 |
用户负责预估资源需求,并以对资源的扩/ 缩容应对负载的动态变化 |
服务器等IT 基础设施的运维 |
由平台负责 |
用户负责操作系统安装、网络配置、安全补丁升级、故障机器下线等运维工作 |
监控报警 |
基础设施的监控由平台负责,并提供了开箱即用的应用维度监控报警 |
用户负责搭建监控报警系统,对基础设施和应用进行监控 |
开发测试成本 |
用户专注于应用层的架构和开发,不需要考虑底层基础设施的容错、弹性伸 缩等 |
用户需要同时开发测试基础设施和应用层的功能 |
功能上线速度 |
快,平台提供了灰度发布等功能 |
慢,用户需自行搭建版本发布系统 |
3.7.2 适用场景
函数计算能够弹性可靠地执行用户代码。通过和云端大量服务以事件驱动的方式连接,用户可以快速构建弹性高可用的云原生应用。典型应用场景包括以下几种。
数据大规模并行处理
通过函数计算和对象存储的集成,用户既可以通过事件增量处理对象存储上的新增数据,也可以创建大量函数实例并行处理存量数据,如图3-86 所示。
数据实时流式处理
通过函数计算和日志服务、消息队列等管道类云服务的集成,用户能够使用函数实时流式处理日志、消息或者物联网等场景下的数据,如图3-87 所示。
图 3-87 数据实时流式处理
移动和 Web 应用后端
函数计算提供 HTTP 触发器,用户用函数实现 HTTP/HTTPS 请求的处理逻辑, 实现弹性高可用的应用后端服务,如图3-88 所示。
开发运维自动化
通过定时触发器,用户能够用函数快速完成定时任务,无须管理执行任务的底层服务器。通过云监控触发器,用户可以接收 ECS 重启 / 宕机、OSS 对象存储流控等 IaaS 层服务的运维事件,并自动触发函数处理。
图 3-88 移动和Web 应用后端