Serverless 的初心、现状和将来

6.23.jpg

做者 | 不瞋前端

导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的将来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的见解,回顾其发展历程,并对 Serverless 的发展趋势作出预测。算法

源起

回望整个计算机技术发展史,咱们会发现 “抽象、解耦、集成” 的主题贯穿其中。产业每一次的抽象、解耦、集成,都将创新推向新的高度,也催生出庞大的市场和新的商业模式。数据库

大型机时代,硬件和软件都是定制化的,使用专有的硬件、操做系统和应用软件。编程

PC 时代,硬件被抽象解耦成 CPU、内存、硬盘、主板、USB 设备等标准化的部件,不一样厂商生产的部件能够自由组合,组装成整机。软件被抽象解耦为操做系统、库等可复用组件。硬件和软件的抽象解耦,创造了新的商业模式,释放了生产力,造就了 PC 时代的繁荣。小程序

云的时代,硬件软件化和软件服务化成为最显著的两个趋势。后端

硬件软件化的核心在于硬件功能中愈来愈多的部分由软件来呈现,从而在迭代效率、成本等方面得到显著优点。以软件定义存储(Software Defined Storage,SDS)为例,SDS 是位于物理存储和数据请求之间的一个软件层,容许用户操控数据的存储方式和存储位置。经过硬件与软件解耦,SDS 可运行于行业标准系统或者 X86 系统上,意味着用户能够无差异的使用任何标准的商用服务器来知足不断增加的存储需求。硬件与软件解耦也让 SDS 可以横向扩展,消除容量规划,成本管理等方面的复杂性。安全

云时代的另外一趋势是软件服务化。应用软件的功能经过网络以远程调用的模式被海量用户使用。服务成为应用构建的基础,API 被实现为服务提供给开发者,微服务架构得到普遍的成功。服务也成为云产品的基本形态。过去 10 年,云已经证实了它的成功。用户只须要经过调用 API 就能获取服务器,而无需本身建设数据中心。算力之前所未有简洁的方式提供给用户。服务器

还记得 Google 那篇著名的 “Datacenter as a computer” 论文吗?若是咱们把云看做是 DT 时代的计算机,那么一个很天然的问题是:随着云的 API(全托管服务)愈来愈丰富,什么才是适合于云的编程模型?咱们应当以何种 “抽象、解耦、集成” 的方式构建基于云的应用?微信

1.png

在回答上述问题以前,让咱们首先将目光转向 SaaS 领域。Salesforce 是 SaaS 领域的明星企业,在平台化能力建设方面的布局为咱们提供了一个绝佳的案例。早期的 SaaS 产品采用标准化的交付模式,经过开放 API 接口实现被集成的能力。随着 Salesforce 产品愈来愈丰富,客户规模日益增加,企业开始面临新的挑战:网络

  • 如何更快地推出新产品,增强产品间的整合和协同?
  • 客户迅速增加,需求多样。如何高效地知足客户的定制化需求,增长客户粘性?
  • 如何提升产品被集成的能力,更好的衔接上下游资源?
  • 当产品能力和 API 完整度到达必定水准后,如何让开发者快速整合 API,围绕 Salesforce 能力便捷地开发应用?
  • 如何设计好的商业模式,让客户、企业和开发者双赢?

Salesforce 的策略是让整个业务、技术和组织平台化。平台放大了企业的价值,让企业、客户、开发者三方受益。经过不断提高平台的应用交付能力,对内大幅提升产品的研发效率,增强产品的集成和整合;对外则大幅提升了产品的被集成能力,创建开发者生态。

从 2006 年开始,Salesforce 在平台化能力建设上大力投资,推出了 Apex,Visualforce 等编程语言,容许客户、合做伙伴和开发者在多租户环境下编写和运行自定义的逻辑代码。在此基础上,2008 年推出自研 Force.com PaaS 平台,客户可以在该平台上围绕 Salesforce 的能力构建本身的应用程序。2010 年收购了流行的 PaaS 服务商 Heroku,2019 年推出 Serverless 计算平台 Evergreen,进一步增强应用构建和集成与被集成能力。除了应用的构建能力,Salesforce 近几年来也在应用的移动化、数据化和智能化方面进行了大量的投资,延伸平台在相关领域的能力,帮助客户实现管理流程的数据化和智能化,并经过数据分析和交易撮合为客户带来增量业务。

总结 Salesforce 的发展历程,咱们能够得出一些观点:

  • API 已成为价值交付最重要的形式。
  • 把 API 做为价值交付形式的产品或组织,当 API 丰富度和能力完整度达到必定水准后,会升级为平台,经过平台突破能力瓶颈,实现业务、产品和技术新的进化。
  • 平台能力高低体如今其编程模型上,便是否能帮助用户高效、低成本的构建新一代应用。
  • 平台除了大幅提高企业价值交付的能力,更重要的是创建起应用开发生态。

虽然云远比上述 SaaS 案例复杂,但遵循着相似的发展逻辑。几乎全部云服务的产品功能都经过 API 体现,云服务商也把发展平台编程模型,提高用户价值交付能力和创建应用开发生态做为最重要的目标。当咱们从编程模型的视角去审视云的产品体系,纷繁复杂的云服务各自的定位逐渐清晰。

基础设施即服务(IaaS)和容器技术是云的基础设施,以 K8S 为表明的容器编排服务是云原生应用的操做系统,面向特定领域的后端服务(BaaS)则是云的 API。为了实现更高的生产力,在存储、数据库、中间件、大数据、AI 等领域,大量的 BaaS 服务是全托管、Serverless 的形态,这一趋势已持续多年。例如如今客户已经很是习惯使用 Serverless 化的对象存储,而不是本身基于服务器搭建数据存储系统。当云提供了丰富的 Serverless BaaS 服务后,须要一种新的通用计算服务,可以屏蔽基础设施的复杂度,基于云服务快速构建应用。所以 Serverless 计算应运而生,它包含了如下要素:

  • Serverless 计算是全托管的计算服务,客户编写代码构建应用,无需管理和运维服务器等底层基础设施。
  • Serverless 计算是通用、普适的,结合云 API(BaaS 服务)的能力,可以支撑云上全部重要类型的应用。
  • Serverless 计算不但实现了最纯粹的按需付费(为代码实际运行消耗的资源付费),也应当支持预付费等计量模式,使得客户成本在各类场景下,与传统方式相比都极具竞争力。
  • 不一样于虚拟机或容器等面向资源的计算平台,Serverless 计算是面向应用的。要能整合和联动云的产品体系及其生态,帮助用户在价值交付方式上实现颠覆式创新。

2.png

现状

当下 Serverless 在哪些场景落地?

随着用户心智的创建,产品自己能力的完善,Serverless 近年来呈加速发展的趋势。咱们看到在不少场景下,用户使用 Serverless 架构在可靠性、成本和研发运维效率等方面得到显著的收益。

1. 小程序/Web/Mobile/API 后端服务

在小程序、Web/Moible 应用、API 服务等场景中,业务逻辑复杂多变,迭代上线速度要求高,并且这类在线应用,资源利用率一般小于 30%,尤为是小程序等长尾应用,资源利用率更是低于 10%。Serverless 计算的免运维,按需付费的特色很是适合构建小程序/Web/Mobile/API 后端系统,经过预留计算资源+实时自动伸缩,开发者可以快速构建延时稳定、能承载高频访问的在线应用。在阿里内部,使用 Serverless 构建后端服务是落地最多的场景,包括前端全栈领域的 Serverless For Frontends,机器学习算法服务,小程序平台实现等等。

2. 大规模批处理任务处理

典型的离线任务批处理系统,例如大规模音视频文件转码服务,包含计算资源管理、任务优先级调度、任务编排、任务可靠执行、任务数据可视化等一系列功能。若是从机器或者容器层次开始构建,用户一般使用消息队列进行任务信息的持久化和计算资源的分配,使用 K8S 等容器编排系统实现资源的伸缩和容错,自行搭建或集成监控报警系统。若是任务涉及多个步骤,还须要整合工做流服务实现可靠步骤执行,而经过 Serverless 计算平台,用户只须要专一于实现任务处理逻辑,并且 Serverless 计算的极致弹性能很好的知足突发任务对算力的需求。

3.png

3. 基于事件驱动架构的在线应用和离线数据处理

典型的 Serverless 计算服务经过事件驱动的方式普遍的与云端各类类型服务集成,用户无需管理服务器等基础设施和编写集成多个服务的胶水代码,轻松构建松耦合、分布式的事件驱动架构的应用。

以阿里云函数计算为例,经过 API 网关和函数计算的集成,用户能够快速实现 API 后端服务。经过对象存储和函数计算的事件集成,函数能实时响应对象建立、删除等事件,实现以对象存储为中心的大规模数据处理。经过消息中间件和函数计算的事件集成,用户能快速实现海量消息的处理。经过和阿里云 EventBridge 的集成,不管是一方云服务,仍是三方的 SaaS 服务,或者是用户自建的系统,全部的事件均可以快速便捷的被函数计算处理。

4. 运维自动化

经过定时触发器,用户可以用函数快速实现定时任务,而无须管理执行任务的底层服务器。经过云监控触发器,用户能够接收 ECS 重启/宕机,OSS 对象存储流控等 IaaS 层服务的运维事件,并自动触发函数处理。

将来

Serverless 将向何处去?

近年来,Serverless 一直在高速发展,呈现出愈来愈大的影响力。主流的云服务商也在不断地丰富云产品体系,提供更好的开发工具,更高效的应用交付流水线,更好的可观测性,更细腻的产品间集成,但一切才刚刚开始。

趋势 1:Serverless 将无处不在

任何足够复杂的技术方案将被实现为全托管、Serverless 化的后端服务。不仅是云产品,也包括合做伙伴和三方服务。云及其生态的能力将经过 API + Serverless 来体现。事实上,对于任何以 API 做为功能透出方式的平台型产品或组织,例如钉钉、微信、滴滴等等,Serverless 都将是其平台战略中最重要的部分。

趋势 2:和容器生态将更加紧密融合

容器在应用的可移植性和交付流程敏捷性上实现了颠覆式创新,是现代应用构建和交付的一次重要变革。

  • 绝佳的可移植性。经过操做系统虚拟化技术,应用及其运行环境被虚拟化为容器,实现了 build once,run anywhere。容器化的应用可以无差异的运行在开发机,on-premise,以及公有云的环境中。
  • 敏捷的交付流程。容器镜像已经成为应用封装和分发事实上的标准。今天全世界的开发人员都习惯将容器做为应用交付和分发的方式。围绕容器,已经创建了完整的应用交付工具链。

容器已经成为现代应用运行的基础,但用户仍然须要负责服务器等基础设施的管理,包括水位预估、机器运维等等。所以业界出现了 AWS Fargate,阿里云 ECI 等 Serverless container 服务,帮助用户专一于容器化应用的构建,而无需负担基础设施的管理成本。从 Serverless 视角来看,函数计算等 Serverless 计算服务为用户带来了全自动的伸缩模式、极致弹性以及彻底按需的计量方式,却在用户开发习惯的兼容性、可移植性、完工具链和生态等方面面临挑战,而这正是容器的优点。相信随着技术的发展,将来容器镜像也将成为函数计算等更多 Serverless 应用的分发方式,容器庞大的工具生态和 Serverless 免运维、极致弹性结合在一块儿,为用户带来全新的体验。

趋势 3:Serverless 将经过事件驱动的方式链接云及其生态中的一切

咱们已经在前述章节中讨论了函数计算经过事件驱动和云服务链接的意义,这样的能力也会扩展到整个云的生态。不管是用户本身的应用,仍是合做伙伴的服务;不管是 on-premise 环境,仍是公有云,全部的事件都能以 Serverless 的方式处理。云服务及其生态将更紧密的链接在一些,成为用户构建弹性高可用的应用的基石。

趋势 4:Serverless 计算将持续提升计算密度,实现最佳的性能功耗比和性能价格比

虚拟机和容器是两种取向不一样的虚拟化技术。前者安全性强,开销小,后者则相反。Serverless 计算平台一方面要求最高的安全性和最小的资源开销,鱼与熊掌必须兼得;另外一方面要保持对原有程序执行方式的兼容,好比支持任意二进制文件,这使得适用于特定语言 VM 的方案不可行。所以 AWS Firecracker,Google gVisor 这样新的轻量虚拟化技术应运而生。以 AWS Firecracker 为例,经过对设备模型的裁剪和 kernel 加载流程的优化,实现了百毫秒的启动速度和极小的内存开销。一台裸金属实例支持数以千计的实例运行。结合应用负载感知的资源调度算法,云服务商有望在保持稳定性能的前提下,将超卖率提高一个数量级。

当 Serverless 计算的规模和影响力变得愈来愈大,从应用框架、语言、硬件等层面,根据 Serverless 的负载特色进行端对端优化就变得很是有意义。新的 Java 虚拟机技术大幅提升 Java 应用的启动速度,非易失性内存帮助实例更快被唤醒,CPU 硬件和操做系统协做对高密环境下性能扰动实现精细隔离,全部新技术正在创造崭新的计算环境。

实现最佳性能功耗比和性能价格比的另外一个重要方向是支持异构硬件。长期以来,X86 处理器的性能愈来愈难以提高。而在 AI 等对算力要求极高的场景,GPU、FPGA、TPU(Tensor Processing Units) 等架构的处理器的计算效率更具优点。随着异构硬件虚拟化、资源池化、异构资源调度、应用框架支持的成熟,异构硬件的算力也能经过 Serverless 的方式释放,大幅下降用户使用门槛。

后记

2009 年,UC Berkeley 发表了一篇著名的论文 “Above the Clouds: A Berkeley View of Cloud Computing”,讨论了云及其价值、挑战和演进路径,其中的真知灼见在云的十年发展历程中陆续被验证,今天已没有人怀疑云的价值和对各行各业深入的影响。2019 年,他们发表了新的论文,“Cloud Programming Simplified: A Berkeley View on Serverless Computing”,预言 Serverless 将主导下一个十年云的发展,产业的发展是螺旋式上升,Serverless 的诞生和兴起逻辑早已蕴含其中。相信下一个十年, Serverless 将重塑企业创新的方式,帮助云成为社会发展的强大动力。

相关文章
相关标签/搜索