主要云原生技术
Serverless
Kubernetes 成为了云计算的新一代操作系统,面向特定领域的后端云服务(BaaS)则是这个操作系统上的服务 API,存储、数据库、中间件、大数据、AI等都开始变为全托管的云形态,用户不再需要搭建存储系统、部署数据库软件,无需关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作。
当这些 BaaS 云服务日趋完善时,Serverless 因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现。
Serverless 计算包含以下特征:
- 全托管的计算服务
- 通用性
- 自动的弹性伸缩
- 按量计费
函数计算(Function as a Service)
函数计算(Function as a Service)是 Serverless 中最具代表性的产品形态。通过把应用逻辑拆分多个函数,每个函数都通过事件驱动的方式触发执行,并且每个环节都是弹性和高可用的,通过与中间件的集成,客户能够快速实现大规模消息、数据的实时并行处理。
函数计算这种 Serverless 形态在普及方面仍存在一定困难,例如:
- 函数编程以事件驱动方式执行,这在应用架构、开发习惯方面,以及研发交付流程上都会有比较大的改变;
- 函数编程的生态仍不够成熟,应用开发者和企业内部的研发流程需要重新适配;
- 细颗粒度的函数运行也引发了新技术挑战,比如冷启动会导致应用响应延迟,按需建立数据库连接成本高等。
其他:基于容器的 Serverless 技术
通过和容器技术进行融合创新,借助良好的可移植性,使容器化的应用能够无差别地运行在开发机、自建机房以及公有云环境中,容器工具链能够加快解决 Serverless 的交付。代表作有:
- 阿里云提供了弹性容器实例(ECI)以及更上层的 Serverless 应用引擎(SAE);
- Google 提供了 CloudRun 服务,这都帮助用户专注于容器化应用构建,而无需关心基础设施的管理成本。此外 Google 也开源了基于 Kubernetes 的 Serverless 应用框架 Knative。
相对函数计算,这类 Serverless 应用服务支持容器镜像作为载体,无需修改即可部署在 Serverless 环境中,可以享受到 Serverless 带来的全托管免运维、自动弹性伸缩、按量计费等优势。
Serverless 技术常见场景
- 小程序 /Web/Mobile/API 后端服务
- 大规模批处理任务
- 基于事件驱动架构的在线应用和离线数据处理
- 开发运维自动化
技术关注点
- 计算资源弹性调度:调度算法应满足容错、资源利用率、性能、数据驱动等多方面目标。
- 负载均衡和流控
- 安全性:用户代码的安全是不可逾越的底线,系统应从权限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。