Serverless
1、技术特点
随着以 Kubernetes 为代表的云原生技术成为云计算的容器界面,Kubernetes 成为云计算的新一代操作系
统。面向特定领域的后端云服务(BaaS)则是这个操作系统上的服务 API,存储、数据库、中间件、大数据、
AI 等领域的大量产品与技术都开始提供全托管的云形态服务,如今越来越多用户已习惯使用云服务,而不是自
己搭建存储系统、部署数据库软件。
当这些 BaaS 云服务日趋完善时,Serverless 因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多
精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。Serverless 计算包含以下特征:
全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施
的开发、运维、安全、高可用等工作;
通用性,结合云 BaaS API 的能力,能够支撑云上所有重要类型的应用;
自动的弹性伸缩,让用户无需为资源使用提前进行容量规划;
按量计费,让企业使用成本得有效降低,无需为闲置资源付费。
函数计算(Function as a Service)是 Serverless 中最具代表性的产品形态。它通过把应用逻辑拆分多个
函数,每个函数都通过事件驱动的方式触发执行,例如当对象存储(OSS)中产生的上传 / 删除对象等事件,
能够自动、可靠地触发 FaaS 函数处理,且每个环节都是弹性和高可用的,客户能够快速实现大规模数据的实
时并行处理。同样的,通过消息中间件和函数计算的集成,客户可以快速实现大规模消息的实时处理。
目前函数计算这种 Serverless 形态在普及方面仍存在一定困难,例如:
函数编程以事件驱动方式执行,这在应用架构、开发习惯方面,以及研发交付流程上都会有比较大的改变;
函数编程的生态仍不够成熟,应用开发者和企业内部的研发流程需要重新适配;
细颗粒度的函数运行也引发了新技术挑战,比如冷启动会导致应用响应延迟,按需建立数据库连接成本高等。
针对这些情况,在 Serverless 计算中又诞生出更多其他形式的服务形态,典型的就是和容器技术进行融合创新,
通过良好的可移植性,容器化的应用能够无差别地运行在开发机、自建机房以及公有云环境中;基于容器工具
链能够加快解决 Serverless 的交付。云厂商如阿里云提供了弹性容器实例(ECI)以及更上层的 Serverless
应用引擎(SAE),Google 提供了 CloudRun 服务,这都帮助用户专注于容器化应用构建,而无需关心基
础设施的管理成本。此外 Google 也开源了基于 Kubernetes 的 Serverless 应用框架 Knative。
相 对 函 数 计 算 的 编 程 模 式, 这 类 Serverless 应 用 服 务 支 持 容 器 镜 像 作 为 载 体, 无 需 修 改 即 可 部 署 在
Serverless 环境中,可以享受到 Serverless 带来的全托管免运维、自动弹性伸缩、按量计费等优势。下面
是传统的弹性计算服务、基于容器的 Serverless 应用服务和函数计算的对比:
《云原生架构白皮书2022新版》——主要云原生技术——Serverless(下) https://developer.aliyun.com/article/1232943