Serverless 的前世今生

从云计算到 Serverless 架构

大家好,我是阿里云 Serverless 产品经理刘宇,很高兴可以和大家一起探索 Serverless 架构的前世今生。

从云计算到云原生再到 Serverless 架构,技术飞速发展的轨迹都有一定规律可循,那么 Serverless 架构为何而来,因何而生呢?

云计算的诞生

从世界第一台通用计算机 ENIAC 开始,计算机科学与技术的发展就从未停止过前进的脚步,近些年来,更是日新月异。有不断突破和创新的人工智能领域,有 5G 带来更多机会的物联网领域,还有不断走进寻常百姓家的云计算。

在图中可以看到三个关键词,这是2003年到2006年间,谷歌发表了三篇重要的论文,这些文章指明了HDFS(分布式文件系统),MapReduce(并行计算)和Hbase(分布式数据库)的技术基础以及未来机会,正式奠定了云计算的发展方向。关于这三个文章,或者这三个技术点,也有人曾说“因为它们,云计算才正式拉开帷幕”

云计算发展是飞速的,也是有目共睹的;但是随着云计算的进程,另一个名词诞生并迅速占领了“风口大旗”,被大众更为广泛地关注,那就是——云原生。

通过对云计算与云原生的文字组成结构分析,可以看到云原生实际上就是在云与计算之间,加了一个 Native,所以可以认为,云计算的飞速发展,无论是从技术迭代还是从概念升级,最终产生了如今耳熟能详的:云原生计算

云计算是什么?其实早在1961年云计算的雏形概念就已经诞生了,在麻省理工学院百周年纪念典礼上,约翰·麦卡锡,也就是1971年图灵奖获得者,第一次提出了一个概念,这个概念后来被喻为是云计算的“最初的、超前的”遐想模型。它翻译大意为:“计算机在未来,将变成一种公共资源,会像生活中的水、电、煤气一样,被每一个人使用。”时间到了1996年,云计算这个词被正式提出;而到了2009年,UC Berkeley(加利福尼亚大学伯克利分校)更是在发布的论文中,对云计算进行了较为细致描述,它说云计算是一个即将实现的古老梦想,是计算作为基础设施这一长久以来梦想的新称谓,它在正快速变为商业现实。同时在该文章中,也明确地为云计算做了定义:云计算包含互联网上的应用服务,以及在数据中心提供这些服务的软硬件设施。

云原生的火热

时至今日,云原生技术的发展同样迅猛,那么什么是云原生呢?在文章“什么是真正的云原生”中,给出了一个非常明确的解释:因云而生的软件、硬件、架构,就是真正的云原生;因云而生的技术,就是云原生技术。确实如此,出生于云,成长在云,因云而生,就是云原生。

那么云原生都包括哪些东西呢?耳熟能详的技术,加上云原生三个词,就都是云原生相关技术了,例如:数据库,云原生数据库;网络,云原生网络等。在 CNCF Landscape 中,可以看到云原生基金会对云原生产品维度的一个描述,包括了数据库、流、消息、包括容器镜像、包括servicemesh、包括网关、包括K8S、当然,这里还包括一个非常热门的词汇:Serverless

Serverless 架构的出现

在很多时候 Serverless 架构被称为是一种粘合剂,它将云原生的其他很多产品和用户的业务进行了链接,同时又提供了极其诱人技术红利,为此也被很多项目,业务所选择。那么什么是 Serverless 架构?

通过 Serverless 的结构,不难发现其所要传递的心智,Server指的是服务器,Less表示的是更少的精力,所以Serverless架构所传递的心智是:把更专业的事情交给更专业的人,开发者能够较少地关注服务器等底层相关内容,把更多的精力放在更具价值的业务逻辑之上。

2009年,UC Berkeley发表了一篇关于云计算的文章,在文章中,UC Berkeley为云计算做出了明确的定义,同时也提出了包括服务的可用性,数据安全性和可审计性等在内的十项云计算所面临的各种困难和挑战,并断言云计算将会引领未来的十年。

2019年,恰好时隔十年,UC Berkeley再次发文,不仅从多角度说明了什么是Serverless架构,例如从结构角度,肯定了Serverless是FaaS与BaaS的结合;从特性角度,对于被认为是Serverless架构的产品或者服务需要具备按量付费和弹性伸缩的特点;并非常激进地表示 Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,由此也意味着服务器 - 客户端模式的终结。

从IaaS,到PaaS,再到Serverless,云计算的发展,越来越清晰,也越来越明确,去服务器化也越来越明显。

无论此时我们说云原生,还是 Serverless 架构,云的概念确实是在不断地升级,云的技术也在不断地迭代,而这一切的改变其实都是为了效能提升,为了安全提升,为了成本降低,生产力驱动。

什么是 Serverless 架构?

尽管对于 Serverless 架构的定义,并没有一个非常明确的表述,但是 Serverless 是 FaaS 与 BaaS 的组合这种说法,却被很多人所接受。所谓的 FaaS 就是函数即服务,而 BaaS 则指的是后端即服务,两者搭配,共同成为 Serverless 架构不可获取的部分,为开发者提供降本提效的技术红利。

诚然,CNCF 云原生基金会在 Serverless 白皮书中,肯定了 Serverless 是 FaaS 与 BaaS 的结合这种说法;而UC伯克利在论文中,肯定这种说法的同时,也从特性角度指出,对于被认为是 Serverless 架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点,但是这也都是2019年的“描述”了。

时至今日,Serverless 架构已经完成了“自我更新与迭代”。在信通院发布的 Serverless 的白皮书中,明确指出 Serverless架构计算平台包括了函数纬度和应用纬度两种形态,而随着时间的发展,阿里云领先性地推出了 Serverless 应用引擎(SAE),以应用为维度进行 Serverless 化的平台,换句话说,它其实可以是应用 Serverless 化的最佳实践。

至此,Serverless 架构的组成已经逐渐明确:

  • 从结构角度,Serverless是计算平台与BaaS产品的结合。计算平台包括了事件触发的函数计算,也包括了应用Serverless化的最佳实践Serverless应用引擎。BaaS层面则包括了Api网管,CDN,对象存储,数据库等一系列的云服务。
  • 从特性角度,就像UC Berkeley所说,对于被认为是 Serverless架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点。

Serverless 架构和传统架构的区别

作为云时代新的计算范式,Serverless架构本身属于一种天然的分布式架构,其工作原理较于传统架构虽没有翻天覆地的变化,但也是有细微的不同。

如图所示,传统架构下,开发者开发完成应用之后,还需要购买虚拟机服务,初始运行环境,安装需要的软件(例如MySQL等数据库软件,Nginx等服务器软件等),完成环境的准备之后,还需要上传开发好的业务代码,启动该应用,此时用户才可以通过网络请求,成功的访问到目标应用。但是,如果应用的请求量过大或者过小时,开发者or运维人员,还需要针对实际的请求数量进行相关资源的扩充或缩容,并在负载均衡&反向代理模块增加相对应的策略,以确保扩缩容操作的及时生效;同时,在做这些操作的时候还要保证线上用户不会受到影响。

而在Serverless架构下,整个应用发布的过程和工作的原理,将会发生一定的变化:

当开发者开发完整业务代码之后,只需要部署或更新到对应的 FaaS 平台即可,完成之后根据真实的业务需求,进行相关的触发器配置,例如为了对外提供Web应用服务,可以配置HTTP触发器等,此时用户就可以通过网络,访问到开发者所发布的应用。在这个过程中,开发者不需要再额外关注服务器的购买,运维等相关的操作,也无需对一些软件的安装,应用资源的扩缩容进行额外的精力支出;开发者所需要关注的仅仅是自身的业务逻辑,至于在传统架构下需要安装配的各种服务器软件等,都变成了配置项交给云厂商来管理;同样,传统架构下需要根据服务器的利用,而进行资源的扩缩行为,也全都自动化地交给云厂商来实现。

传统意义上的弹性伸缩,指的是当项目的容量规划与实际集群负载间出现矛盾时,即当现有集群的资源无法承载压力时,通过调整集群的规模或者进一步分配相对应的资源,以保障业务的稳定性。当集群负载较低时,系统可以尽量降低集群的资源配置从而减少闲置资源的浪费,以进一步节约成本开销。但是在Serverless架构下,弹性伸缩被进一步泛化,即在用户侧的表现,取消了项目本身容量规划的过程,而是完全由平台调度决定资源的增加与缩减。

在UC Berkeley的文章中,对Serverless架构特点与优势的描述,有这样的表达:“代码的执行不再需要手动分配资源。不需要为服务的运行指定需要的资源(比如使用几台机器、多大的带宽、多大的磁盘等),只需要提供一份代码,剩下的交由Serverless平台去处理就行了。当前阶段的实现平台分配资源时还需要用户方提供一些策略,例如单个实例的规格和最大并发数,单实例的最大CPU使用率。理想的情况是通过某些学习算法来进行完全自动的自适应分配”,其实作者在此处所描述的“完全自动的自适应分配”指的就是Serverless架构的弹性伸缩的特点

Serverless架构下的弹性伸缩指的是,Serverless架构可以根据业务流量波动,自动进行资源的分配和销毁,并最大程度化地平衡稳定性、高性能、提升资源利用率。即当开发者完成业务逻辑的开发,把业务代码部署到 Serverless 平台之后,平台通常并不会立即分配计算资源,而是将业务代码与配置等相关内容进行持久化,当流量请求到来时,Serverless平台会根据真实流量以及配置情况,自动的进行实例的启动,反之也会自动的进行实例的缩减,甚至在某些时候实例的个数可以缩减到0,即平台并未分配资源给对应函数。

Serverless 架构的核心技术红利的:弹性伸缩能力,在一定程度上也代表着提升资源利用率,朝着绿色计算方向不断前进的过程。

在上图弹性伸缩部分:左侧是传统云主机架构下流量与机器负载示意图,右侧是Serverless架构弹性模式下流量与负载的示意图,在这两个图中,橙色面积部分表示的是用户侧所感知的资源负载能力,蓝色的折线表示的是某网站在某天的流量走势图。通过这两张图对比,不难发现,传统云主机架构下,需要人工进行资源的增加与缩减,变化的粒度是主机级别,所以实现性受到严重考验,粒度过粗仍然没办法有效地平衡资源浪费与性能稳定之间的关系。

在图中,蓝色线以上的橙色面积,是被浪费掉的资源;右侧是 Serverless 架构弹性模式下流量与负载的示意图,在这个图中可以清晰地看到负载能力始终在和流量是匹配的,即并不需要像左侧传统云主机架构,需要在技术人员的人为干预下应对流量的波峰波谷;这一切的弹性能力(包括扩容和缩容),均由云厂商提供;这种模式下所带来的好处一方面是降低业务运维人员的压力,以及降低其工作复杂度,另一方面可以看到在用户侧的感知是,真实的资源消耗与所需的资源消耗是成正相关的,可以极大程度的降低资源浪费的情况,在一定程度上也是符合绿色计算思想的。

所谓的按量付费是一种先使用后付费的计费方式,通过按量付费,用户无需提前购买大量资源,而是可以根据资源的使用量进行后付费。即便非Serverless架构的产品或者服务,也具备一定的按量付费能力,例如云主机等产品均有按量付费的选项。但是之所以Serverless架构可以将按量付费作为一种技术红利,其很大的一部分原因在于它按量付费的粒度会更细,在用户侧的资源利用率表现为近乎100%(实际上资源利用率是没有达到100%,仅仅指代的是在请求粒度下,用户侧在Serverless架构下的一种感知)。

以某网站为例,在白天时资源利用率相对较高,夜晚时间段资源利用率相对较低,但是一旦购买了服务器等资源,实际上无论当天流量多少,费用都是持续支出的过程;即便采用按量付费的模型,也会因为计费粒度过粗,而没办法最大可能性地提升资源利用率。按照《福布斯》杂志的统计,在商业和企业数据中心的典型服务器仅提供5%~15%的平均最大处理能力的输出,这无疑也证明了传统服务器的资源使用率过低和浪费过多的情况。

而 Serverless 架构的出现,可以让用户委托服务提供商管理服务器、数据库和应用程序甚至逻辑,这样的做法一方面减少了用户自己维护的麻烦,另一方面用户可以根据自己实际使用函数的粒度进行成本的支付。对于服务商而言,他们可以将更多的闲置资源进行额外的处理,从成本的角度、“绿色”计算的角度来说,都是非常不错的。而从另一个角度,尽管 Serverless 架构的按量付费模型也是按照资源使用量进行收费的,但是计费粒度更为细腻:

  • 请求次数角度:Serverless架构的计费粒度是请求级别的,而传统的云主机等架构的计费粒度是实例级别的(往往这种实例级别的所支持的请求个数远远大于1);
  • 计费时间角度:Serverless架构的计费时间通常为秒级(但是现在阿里云支持毫秒级计费或者是百毫秒级计费)而对于传统的云主机架构,计费时间粒度往往是小时级;

在上图中按量部分,是该网站的某天的流量图,图中的蓝色的折线为一个网站在某天的流量走势:通过对“传统云主机架构流量与费用支出示意”与“Serverless架构弹性模式下费用支出示意图“进行对比,不难发现,左侧的传统云主机架构下流量与费用支出示意图,通常业务在上线之前是需要进行资源使用量评估的,当该网站的资源使用量评估之后,购买了一台可以承受每小时最大1300PV的服务器,那么在一整天的时间内,这台服务器所提供的算力总量为橙色面积,所需的费用也是橙色面积对应算力的费用;但是我们明显可以看到,真正有效的资源使用与费用支出仅仅是流量曲线下面的面积,而流量曲线上方的橙色面积部分则为资源损耗与额外的支出部分;而右侧的Serverless架构弹性模式下费用支出示意图,费用支出和流量基本是成正比的,即当流量处于一个较低水位时,对应的资源使用量是相对较少的,同样对应的费用支出也是相对较少的;当流量处于一个比较高的数值时,借助Serverless架构的弹性伸缩能力与按量付费能力,资源使用量和费用支出将会成正相关增长;在整个过程中,能够清晰看到并未像左侧传统云主机架构下流量与费用支出示意图,产生明显的资源浪费与额外的成本支出。

视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如:对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换、鉴黄鉴恐等,以满足不同场景下的需求。例如:

除此之外,Serverless还可以在实时文件处理,实时流处理、机器学习、IOT 后端、移动应用后端、web 应用程序等多种场景下发挥作用:

全球领先的 Serverless 平台

阿里云是国内较早一批提供 Serverless 服务的厂商,在过去的几年实践中,也取得了优异的成绩。包括不限于,2021年Q1,Forrester 评测中,阿里云的 Serverless 产品能力位居中国第一;CNCF 2020年云原生调研报告中,阿里云 Serverless市场份额是国内第一;信通院2020年中国云原生用户调研报告中,阿里云Serverless用户占比同样国内第一。

阿里云 Serverless 产品和服务,之所以可以得到广大开发者的认可,其根本原因是阿里云 Serverless 架构安全、技术稳定领先的基础上,还有着以用户为核心的态度。

阿里云 Serverless 产品布局

从上图中,可以看到在最底层是计算平台和 BaaS 产品层。计算产品部分,有事件驱动的—— 函数计算 FC,也有应用 Serverless 化的最佳实践——Serverless 应用引擎 SAE;在 BaaS 服务联动部分,有不同层面的服务,数据库,网络,消息等,而这些产品也正在不断的 Serverless 化,从云到云原生再到Serverless化;在上层有开发者工具和应用中心,为广大开发者提供前后端一体化、WebAPI以及数据库处理、AI推理等一系列的All On Serverless 解决方案和场景。

函数计算 FC : https://www.aliyun.com/product/fc

让 Serverless 更简单:Serverless Devs

在生态层面,阿里云 Serverless 团队开源了无厂商锁定工具——Serverless Devs,秉承着让 Serverless 更简单,可以在 Serverless 应用全生命周期发挥作用的态度,Serverless Devs 不仅仅在底层规范模型上,推动信通院一同发布 Serverless 工具链模型,也在工具层面捐赠项目到 CNCF Sandbox,成为了全球首个 CNCF Serverless Tools 中的 Sandbox 项目。

综上所述,做 Serverless 架构,我们是认真的,也是专业的。做感动的产品,做好用的工具,做有责任感的工作,做踏实又创新的内容,感谢大家对阿里云 Serverless 架构的关注。

作者:刘宇(江昱)

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eunomia-bpf 项目重磅开源!eBPF 轻量级开发框架来了

近日,在 2022 云栖大会龙蜥峰会 eBPF & Linux 稳定性专场上,来自 eBPF 技术探索 SIG Maintainer 、浙江大学的郑昱笙分享了《eunomia-bpf:eBPF 轻量级开发框架》技术演讲,以下为本次演讲内容: 大家好!…

一文看懂分布式链路监控系统

背景 传统的大型单体系统随着业务体量的增大已经很难满足市场对技术的需求,通过对将整块业务系统拆分为多个互联依赖的子系统并针对子系统进行独立优化,能够有效提升整个系统的吞吐量。在进行系统拆分之后,完整的业务事务逻辑所对应的功能会…

深度 | 新兴软件研发范式崛起,云计算全面走向 Serverless 化

11月3日,2022 杭州 云栖大会上,阿里云智能总裁张建锋表示,以云为核心的新型计算体系正在形成,软件研发范式正在发生新的变革,Serverless 是其中最重要的趋势之一,阿里云将坚定推进核心产品全面 Serverless…

适用场景全新升级!扩展 Dragonfly2 作为分布式缓存系统架构

Dragonfly2 简介 Dragonfly 作为龙蜥社区的镜像加速标准解决方案,是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。 现阶段 D…

sdut 最长公共子序列问题

Problem Description 从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下地字符按原来顺序组成的串。例如:“ ”,“a”,“xb”,“aaa”,“bbb”,“xabb”&a…

hdu1176 免费馅饼 动态规划 二维数组实现

免费馅饼 Time Limit: 1000MS Memory Limit: 32768KBSubmit Statistic DiscussProblem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉&am…

如何通过链路追踪进行定时任务诊断

背景简介 什么是定时任务 定时任务是业务应用系统中存在定时周期性运行的业务逻辑。由于其运行于后端进程中往往存在执行状态和执行链路的不可见性《常见定时任务技术方案》。 什么是链路追踪 随着分布式微服务化架构在企业中大规模运用,业务运行的应用平台是一…

关于平台工程的开发者工具链,你还想加点啥?

前言 从 Kubernetes 诞生以来,以 DevOps、容器化、可观测、微服务、Serverless 等技术为代表的云原生,催生了应用架构新一轮的升级。有意思的是,与以往的技术迭代更新不同,原本是一个技术圈常规的一次技术实践,在千行…

阿里云联合“产学研媒”发起 BizDevOps 共促计划,助力企业提升组织效能

2012年全球最具影响力的独立研究咨询机构Forrester曾预言:“In the future, all companies will be software companies”(在未来,所有的企业都将成为软件企业) 近10年来,DevOps运动在全球和中国风起云涌,…

Kubernetes HPA 的三个误区与避坑指南

前言 云计算带来的优势之一便是弹性能力,云原生场景下Kubernetes提供了水平弹性扩容能力(HPA),让应用可以随着实时指标进行扩/缩。然而HPA的实际工作情况可能和我们直观预想的情况是不一样的,这里面存在一些认知误区。…

K8s有损发布问题探究

问题提出 流量有损是在应用发布时的常见问题,其现象通常会反馈到流量监控上,如下图所示,发布过程中服务RT突然升高,造成部分业务响应变慢,给用户的最直观体验就是卡顿;或是请求的500错误数突增&#xff0c…

解读 K8s Pod 的13种典型异常

在K8s中,Pod作为工作负载的运行载体,是最为核心的一个资源对象。Pod具有复杂的生命周期,在其生命周期的每一个阶段,可能发生多种不同的异常情况。K8s作为一个复杂系统,异常诊断往往要求强大的知识和经验储备。结合实战…

实践教程之如何快速使用 PolarDB-X

PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。 本期实验可以让您快…

实践教程之如何将 PolarDB-X 与大数据等系统互通

本期实验将指导您使用PolarDB-XCanalClickHouse搭建实时分析系统。 本期免费实验地址 本期教学视频地址 前置准备 假设已经根据前一讲内容完成了PolarDB-X的搭建部署,可以成功链接上PolarDB-X数据库。 实践教程之如何快速安装部署PolarDB-X 部署Canal Canal是…

加载速度提升 15%,关于 Python 启动加速探索与实践的解析

编者按:在刚刚结束的 PyCon China 2022 大会上,龙蜥社区开发者严懿宸分享了主题为《Python 启动加速的探索与实践》的技术演讲。本次演讲,作者将从 CPython 社区相关工作、本方案的设计及实现,以及业务层面的集成等方面进行介绍。…

统信软件高级工程师:关于云原生技术在容器方面的应用介绍

编者按:随着近几年来云原生生态的不断壮大,众多企业纷纷开展了用云上云的工作,学习云原生及容器技术对于现代工程师是必不可少的。本文整理自龙蜥大讲堂 54 期,统信高级研发工程师参与技术分享,为大家介绍了云原生的介…

解读最佳实践:倚天710 ARM芯片的 Python+AI 算力优化

编者按:在刚刚结束的 PyCon China 2022 大会上,龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲,作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作,以及在 ARM 云平台…

从敏捷协作到价值交付

前面我的同事在分享的时候,指出目前软件研发的最大问题不是效率,而是研发资源的浪费。可能产品经理半天写的需求,开发要埋头苦干三个月。如果错误的选择了一个对业务发展无益的需求,会带着大家往错误的方向越跑越远。 那么什么是…

行动策略过于复杂怎么办?试试下面一些解决方法

背景 随着使用SLS告警越来越深入,有些用户的行动策略会配置的特别复杂,有些时候可以让用户通过创建多个行动策略来进行一定的精简,但是在一些场景下,用户是无法创建多个行动策略的。例如用户想要通过SLS来统一管理其各个监控系统…

从效能公式解构研发效能

这几年,云原生、Web3.0、元宇宙等技术的出现和应用,正在深刻地改变着我们这个世界。以数字技术应用为主线的数字化转型是此次人类文明变革的核心动力。在这一变革过程中,软件研发模式的发展起到了重至关重要的作用。从早期瀑布式、精益敏捷、…