1、封面页(此页面将由下图全覆盖,此为编辑稿中的示意,将在终稿 PDF 版中做更新)开篇语 早在 2009 年,加州大学伯克利分校预测云计算将会蓬勃发展,在未来云的世界,应用开发将经历汇编语言向高级语言的变革,企业无需自建机房,可以按需使用近乎无线的云端计算资源。在未来云计算将全面 Serverless 化,更加接近“电网”模式,按计算的调用次数付费。Serverless 将在下一个十年成为云的默认编程范式。十年过去,Serverless 架构已经逐渐从“被接受”走向了“被学习”和“被应用”。目前云的产品体系正在 Serverless 化,从计算、存储、数据库到中间件,越来越多的云产品采用了 Se
2、rverless 模式。服务器不再是开发者构建应用的唯一选择。全托管的函数计算、Serverless 应用引擎、对象存储、消息队列、数据库等云产品成为构建应用的基础组件,帮助开发者在更高的抽象层构建弹性、高可用的云原生应用。作为一个革命性的技术,Serverless 的价值,不仅体现在技术层面和开发者层面,更是为企业的业务创新带来了巨大价值,推动商业模式的变革、获得更强的市场竞争力。为何写作本书 过去一年全球正在加速推进云计算的 Serverless 化进程。2022 杭州云栖大会,阿里云提出将坚定推进核心产品全面 Serverless 化,通过 Serverless 化,让企业使用云服务像用
3、电一样简单。作为 Serverless 的引领着与实践者,阿里巴巴集团的淘宝、支付宝、钉钉、语雀、闲鱼都已经规模化使用 Serverless 架构。未来阿里云 Serverless也将通过不断提升研发技能,缩短研发周期,助力业务快速迭代,赋能企业帮助客户更好的实现敏捷创新。本书初衷指在帮助开发者洞悉 2022 Serverless 领域热点知识;深入了解 Serverless背后的技术原理、如何在不同领域应用 Serverless 架构,并学会从零开发 Serverless应用。本书主要内容 本书从全局角度出发详细为读者介绍了 Serverless 知识体系,分为“Serverless,未来已
4、来“、“人人都是 Serverless 架构师“、“Serverless 实用技能“、“Serverless 落地案例“四个维度沉淀内容,带你探悉聚焦阿里云 2022 年Serverless 架构在各领域的应用、实战案例。从技术理论到方法指导,帮助你打开思路、精进技术,实现从入门到上手 Serverless 的平滑进阶,享受到技术跃迁带来的红利。第一章:Serverless,未来已来 本章主要介绍 Serverless 架构相关概念、优势、未来趋势、实用价值、帮助读者更好理解 Serverless 为何而来,因何而生。第二章:人人都是 Serverless 架构师 2022年阿里云Server
5、less在技术上有哪些迭代创新?开发者在实际使用Serverless时都会遇到哪些痛点问题,如何解决?本章将带领各位克服 Serverless 技术上手难点。第三章:Serverless 实用技能 从企业应用角度出发,介绍构建 Serverless 的预备条件,以及如何应用 Serverless进行技术升级,实现架构改造最终达到降本提效的目标。第四章:Serverless 落地案例 介绍 Serverless 架构在千行百业中的实战应用,剖析各个领域中 Serverless 实际的用户场景案例。CONTENT1第一章 Severless未来已来Serverless奇点已来,下一个十年将驶向何方
6、新兴软件研发范式崛起,云计算全面走向 Serverless 化Serverless 的前世今生关于 Serverless 应用架构对企业价值的一些思考拥抱开放,Serverless 时代的下一征程聊聊与前端工程师天然互补的 ServerlessServerless 技术解析与落地2第二章 人人都是 Serverless 架构师人人都是 Serverless 架构师,弹幕应用开发实战人人都是 Serverless 架构师,“盲盒抽奖”创意营销活动实践基于 Serverless 架构的头像漫画风处理小程序更省更快,如何使用 Serverless 搭建个人专属网盘?PHP 遇见 Serverles
7、s,帮你解决这些痛点!硬核调试实操,手把手带你实现 Serverless 断点调试无需修改代码,用 fcapp.run 运行你的 REST 应用函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务092026414856637490107114123141148CONTENT详解 Serverless 架构的 6 大应用场景闲置计费,Serverless 冷启动与成本间的最优解异步任务处理系统,如何解决业务长耗时、高并发难题?为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)为 Serverless Devs 插上 Terraform 的
8、翅膀,实现企业级多环境部署(下)如何用一个插件解决 Serverless 灰度发布难题?函数计算,如何使用层解决依赖包问题?降价背后,函数计算规格自主选配功能揭秘事件总线+函数计算构建云上最佳事件驱动架构应用详解异步任务:函数计算的任务触发去重详解异步任务:任务的状态及生命周期管理阿里云 Serverless 异步任务处理系统在数据分析领域的应用Serverless Job,传统任务新变革从“预见”到“遇见”,SAE 引领应用步入 Serverless 全托管新时代主流定时任务解决方案全横评一文搞懂 SAE 日志采集架构3第三章 Serverless 实用技能Serverless 技术解析与落
9、地156163170189203208224240245263271276291298308321CONTENT优化 20%资源成本,新东方的 Serverless 实践之路TapTap 算法平台的 Serverless 探索之路如虎添翼!高德地图+Serverless 护航你的春节出行成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台新零售标杆 SKG 全面拥抱 Serverless,实现敏捷交付鱼传科技:函数计算,只要用上就会觉得香传统大型国企云原生转型,如何解决弹性、运维和团队协同等问题?4第四
10、章 Serverless 落地案例Serverless 技术解析与落地333338344354361367373379第一章Serverless 未来已来 Serverless 奇点已来,下一个十年将驶向何方?9 Serverless 奇点已来,下一个十年将驶向何方?作者:丁宇(叔同)过去十年,上云成为确定性的趋势。在上云阶段,企业关注点在于如何实现平滑上云,因此云厂商将云托管(Cloud-Hosting)作为核心策略。云的主要形态是资源型服务,以虚拟机的形式为企业提供海量的算力。对开发者而言,虚拟机的功能和使用方式和 IDC 中的物理服务器没有区别。原有的应用、技术栈不需要改变就可以平滑上云
11、云托管的策略很好地满足了企业在上云阶段的核心诉求,因此取得了成功。随着越来越多的企业上云,甚至很多企业系统第一天就是在云上构建,企业的核心关注点转变为如何更好地利用云的能力,将产品快速推向市场,从而实现业务成功。这促使云在下一阶段发展的主要目标转变为利用云自身的优势,解决大规模复杂应用的开发和运维挑战。但是,如果算力的呈现形式仍然是服务器这样的资源形态,它的使用门槛依然很高。算力和业务相隔太远,企业需要有一整套支撑应用的基础设施来用好算力。如何让算力像电力一样的普及,云计算需要新的形态。云服务的角色将发生巨大的变化,不再是单纯的提供资源,而是要成为企业构建应用的新平台,要帮助企业尽可能减小机
12、器运维等低价值重复工作,聚焦于业务的创新。下一个十年,是云演进自身能力,帮助企业用好云的阶段,而云厂商的核心能力就是 Serverless 云服务。Serverless 奇点已来,下一个十年将驶向何方?10 一、为什么选择 Serverless 1.Serverless 服务是全托管的 云厂商可以通过存储计算分离,软硬协同优化等底层技术,大规模提高服务的资源效率和性能。以阿里云存储服务为例,自 2018 年开始大规模使用 RDMA 技术,自研了 Solar-RDMA 协议,以及 HPCC 流控和端网融合技术。通过网络和存储的协同设计,结合 FPGA 硬件加速压缩算法等能力,实现了稳定的微秒级的
13、读写性能。企业只需要调用服务 API,就能使用云厂商在相关领域的专业能力,享受到技术红利。Serverless 服务具备自适应弹性,让企业的应用更平稳的应对业务负载不可预测或者突然爆发的情况。一个典型的业务系统可划分为应用层、接入层、资源层。资源型的云服务只提供了资源层面的弹性能力,企业还需要实现接入层和应用层的弹性能力,才能做到业务的全链路弹性。Serverless 奇点已来,下一个十年将驶向何方?11 1)架构设计阶段 根据各个组件的依赖关系,制定弹性伸缩和限流降级方案。对于关系型数据库等几乎没有弹性能力的服务,一般需要预测未来 3 年对数据库的写入和读取规模,进行分库分表。2)资源规划阶
14、段 权衡各个组件的扩缩容难易度、伸缩速度、业务负载变化速度等因素,通过冗余资源实现相应的弹性能力。接入层资源占比在整个系统不高,维持较高冗余资源成本不高,也比较容易扩容。应用层的资源规划最具挑战。应用层是资源消耗大头,一般不允许通过很高的冗余资源来扛住负载峰值,此外应用层的扩缩容牵扯上下游链路,复杂度很高。最后,应用层不同服务的流量规模不同,需要梳理清楚,重点做好热点链路的冗余资源规划。3)线上运行阶段 通过完整的可观测能力,建立量化链路的流量,检测热点,进行动态扩缩容,再量化热点链路流量,再判断是否进行动态扩缩容的闭环。此外,完整、及时的监控报 Serverless 奇点已来,下一个十年将驶
15、向何方?12 警也是十分必要的,为不同组件设定不同的热度阈值,检测到热度流量后,系统要及时的广播给关联组件的开发、运维人员,根据预定方案进行处理。可见,在资源层的弹性能力上构建整个业务的弹性能力复杂度非常高。Serverless 服务的自适应弹性目标就是为了简化复杂度,帮助企业更容易实现业务弹性。首先云厂商会将大量中间件、数据库、大数据等 BaaS 化的服务 Serverless 化。以数据库为例,不但提供 NoSQL 等天然具备高弹性能力的数据库服务,也将传统的关系型数据库 Serverless 化。其次,Serverless 计算服务通常具备百毫秒到秒级的实例启动速度,每秒钟启动数千甚至上
16、万实例,以及高度自动化的弹性伸缩能力,配合 Serverless 化的 BaaS 服务,将实现全链路的业务弹性。最后,Serverless 服务通常内置了限流降级的能力,让企业资源可控,更容易应对系统雪崩的问题。如何高效的利用好资源,是企业面临的一个普遍的难题。业界数据中心的统计数据表明,企业整体平均资源利用率是不高的,一般小于 15%。要提高资源利用率,企业一般面临以下挑战:各个业务部门资源使用相互独立,没有资源并池,没有统一调度。出于对性能、负载峰值以及业务未来发展保障等因素的考虑,业务部门一般倾向于多申请资源,通常是实际使用资源的 3-5 倍。非核心应用碎片化的资源消耗导致了大量资源浪费
17、大量非核心应用为了满足高可用的要求,至少需要 2-3 台机器,而这些应用很多时候是长尾、低频调用的,甚至业务下线但服务器忘了释放,造成资源浪费。在阿里巴巴集团,非核心应用消耗的资源甚至超过了核心应用。不同性质的应用没有共享资源,没有削峰填谷,集群整体资源利用率不高。Serverless 奇点已来,下一个十年将驶向何方?13 容器化是提高资源利用率的有效手段,但实施的复杂度较高。阿里巴巴集团通过全栈容器化,统一调度和离在线混部来提升资源的整体利用率,涉及到容器性能的优化、租户隔离、底层服务器算力归一化、定制的资源统一调度和离在线混部等等。Serverless 的目标让企业用更简单的方式提高资源
18、利用率,降低成本。以函数计算为例,企业不需要为闲置资源付费,而是根据实际使用的资源付费。这意味着大量测试、预发甚至生产环境,大量非核心应用碎片化资源的使用场景,使用 Serverless 后资源利用率会非常高。如果从性能角度考虑,需要预留一些资源,函数计算的闲置资源费用也比服务器更低。函数计算内置了多 AZ 容灾能力,企业不需要为容灾准备冗余资源。函数计算支持百毫秒级别的弹性伸缩速度和丰富的伸缩规则,企业不需要为峰值负载预留资源。当云服务演进为 Serverless 形态后,企业的使用门槛大大降低,Serverless 将让算力像电力一样普及。二、驱动研发模式升级 应用架构和研发模式的演变主要
19、是由企业的业务发展诉求推动的。企业总是期望能够更敏捷的应对业务规模和复杂度的增长,更快的将产品推向市场,加快业务创新的速度,这就要求技术能支持大规模、复杂软件的快速迭代。传统的企业级应用架构,通常是单体的,所有模块都耦合在一起,同时发布。这种单体架构应用在一开始是易于管理的,但随着业务发展,会带来巨大的复杂度。这种强耦合的架构带来开发、测试和运维过程中大量的冲突,拖慢了整个迭代速度。例如整个应用的开发要求所有模块采用统一的语言和框架技术栈,如果一个基础库被多个模块共享,其中一个模块想要升级到新版本,则需要说服所有人同时升级,Serverless 奇点已来,下一个十年将驶向何方?14 即便其他人
20、并不需要新版本。所有模块的发布节奏被强行拉齐,一个模块的问题会影响整个应用的发布。想要快速修复某个模块的线上问题也变得非常困难,因为这需要和其他模块正在进行中的变更合并,解决冲突,重新发布整个应用,运行所有测试,才能重新发布上线。单体应用架构已经不能满足软件研发效率的要求,被以微服务为主要特征的互联网分布式架构取代。采用微服务架构后,应用程序由独立的服务组成。这些服务是松耦合的,通过 API调用、事件触发或者数据流的方式交互。每个服务都完成一个特定的功能,独立开发、运行和发布。微服务解决了单体架构的研发效率瓶颈,但是对应用的基础设施提出了非常高的要求。例如,为了确保独立开发的微服务能够按预期协
21、调配合,需要进行详尽的集成和端对端测试。测试环境中的应用部署次数通常是生产环境的 10 倍。如果应用基础设施不能快速提供独立的测试环境,那么大量的测试时间将消耗在环境稳定性问题的解决上。Serverless 奇点已来,下一个十年将驶向何方?15 根据阿里巴巴集团的研发统计数据,1 人日的研发,通常对应 5-7 人日的测试。测试环境已经成为阿里巴巴集团研发提效的最大痛点。微服务的松耦合,也对数据库使用、状态管理、问题诊断、应用交付流水线带来了很大的挑战。关于微服务的复杂度以及解决方案,业界已经有非常多的讨论,这里不再赘述。以微服务为核心的互联网分布式架构,实施的复杂度较高,必须有很好的工具、平台
22、的支撑,这是业界的共识。除了微服务架构,企业也广泛使用反应式架构、事件驱动架构等模式,这些架构都带来了松耦合、敏捷开发等好处,但相应的落地复杂度也变高了。事实上,业界在应用的构建、编排、运行、BaaS 服务、基础设施管理等每一方面,都提供了丰富的产品和解决方案,建立了庞大的生态。但企业要整合这些软件/服务,让它们弹性、稳定、相互集成良好,加速应用开发迭代,这绝非易事。而在用好云的阶段,云的使命就是要消除这种复杂度,带来大规模复杂软件开发质的突破,助力企业打破技术鸿沟。Serverless 奇点已来,下一个十年将驶向何方?16 每一个 Serverless 服务都是厂商领域能力的输出,通过服务
23、API 透出功能,承诺可靠性、弹性、性能等能力指标,因此他们是高质量的应用构建块(building blocks)。例如阿里云对象存储(OSS)服务,承载着 EB 级的海量数据,承诺 11 个 9 的数据可靠性,99.95%的可用性,以及多样化的数据分级存储和处理能力。阿里云消息队列 RocketMQ 历经双十一万亿级消息洪峰的锤炼,承诺 10 个 9 的数据可靠性,99.95%的可用性。这些云服务和企业基于开源软件自建的系统相比,在弹性、可靠性等方面有明显的优势。Serverless 奇点已来,下一个十年将驶向何方?17 不只是云厂商,大量的开源商业产品也采用了 Serverless 模式,
24、包括 Confluent Cloud、MongoDB Atlas、Snowflake、Databricks 等。随着厂商在存储、计算、中间件、大数据等领域推出越来越多的 Serverless 服务,并且这些服务通过事件驱动等方式紧密集成,云逐渐变成了应用构建和运行的超级平台,应用的研发模式也升级为组装式研发。三、让云成为应用构建最佳平台 随着阿里云提供越来越全面的 Serverless 产品以后,很多云产品都变成模块化、API化、服务化,它可以进行组装,通过拖拉拽的方式就能够构建应用。在 Serverless 架构下,研发方式升级为组装式研发,可以做到流程编排、事件驱动,甚至可以做成可视化,这
25、就彻底颠覆了原有的软件研发方式,大幅提升研发效率,灵活应对业务挑战。根据权威机构调研统计,组装式研发相比传统模式,可为研发提效 50%以上。从新兴的互联网创业公司,到传统企业构建大型软件,都可以使用 Serverless 架构和组装式研发。Serverless 奇点已来,下一个十年将驶向何方?18 以高德为例,高德的投放业务和用户生活场景紧密相关,功能多变;推荐的下游业务品类快速增长,投放的业务策略多变;而且整个业务和用户出行紧密相关,有明显的峰谷属性。随着业务的增长,投放平台原有的架构面临一些明显的痛点:重客户端。卡片处理、导航规划、页面展示等逻辑都放在 Web 或者移动设备上,导致客户端发
26、版缓慢、代码臃肿。业务功能紧耦合,跟不上业务迭代要求。投放策略多变,每次发布影响面大。负载有明显的峰谷,常驻实例,资源利用率低。Serverless 架构能很好地解决上述痛点。首先为客户端瘦身,将端上的逻辑大量的移到 BFF 层(Backends for frontend)。由于 Serverless 计算零运维,只需要开发业务逻辑,完全由客户端人员发布,避免了团队协作问题。借助平台内置的应用平滑发布的能力,客户端的人员可以快速迭代,安心发布。Serverless 奇点已来,下一个十年将驶向何方?19 投放策略等后端服务也解耦为函数的形式,包括规则过滤函数、疲劳提醒函数、内容组装函数等等。这些
27、函数作为独立的后端服务开发迭代,每次发布影响面不大,控制了爆炸半径。通过仔细梳理热点逻辑以及上下游依赖,实现了全链路弹性以及接口级流控能力。弹性伸缩不但快速,而且安全,资源用量和负载峰谷匹配,效率高。目前基于 Serverless 架构的高德业务投放平台已经承载了 100%的生产流量,业务规模达到百万 QPS,功能交付从原来的数天降低到数小时,整体成本降低了 38%。四、Serverless 奇点已来 云计算的探索者认为,云计算的下一个十年默认的计算范式就是 Serverless。2021 年 DataDog 发布 Serverless 研究报告,数据表明,从云原生初创公司到大型企业都在关注
28、Serverless,Serverless 生态已经超越了 FaaS,包含数十种服务,可以帮助开发人员构建更快、更动态的应用程序。从 2012 年提出 Serverless 到今年 2022 年刚好十年,Serverless 已经成为今天 IT开发的主流,也是云服务器商提供能力的主流。我们相信,Serverless 奇点己来,所谓奇点,是由平稳发展转向高速发展的转折点,预示着行业落地将开始全面爆发。而我们也将成为见证这个变化的一代技术人。新兴软件研发范式崛起,云计算全面走向 Serverless 化 20 新兴软件研发范式崛起,云计算全面走向 Serverless 化 作者:不瞋 一、软件架构
29、和研发模式演变史 企业的业务发展诉求一直是推动软件架构和研发模式演变的主要力量。企业总是期望能够更敏捷的应对业务规模和复杂度的增长,更快的将产品推向市场,加快业务创新的速度,这就要求技术能实现大规模、复杂软件的快速迭代。传统的企业级应用架构,通常是单体的,所有模块都耦合在一起,同时发布。这种单体架构应用在一开始是易于管理的,但随着业务发展,会带来复杂度的大幅提升。这种强耦合的架构带来开发、测试和运维过程中大量的冲突,拖慢了整个迭代速度。例如,整个应用的开发要求所有模块采用统一的语言和框架技术栈,如果一个基础库被多个模块共享,其中一个模块想要升级到新版本,则需要说服所有人同时升级,即便其他人并不
30、需要新版本。所有模块的发布节奏被强行拉齐,一个模块的问题会影响整个应用的发布。想要快速修复某个模块的线上问题也变得非常困难,因为这需要和其他模块正在进行中的变更合并,解决冲突,重新发布整个应用,运行所有测试,才能重新发布上线。所以很快,单体应用架构已经不能满足软件研发效率的要求,被以微服务为主要特征的互联网分布式架构取而代之。采用微服务架构后,应用程序由独立的服务组成。这些服务是松耦合的,通过 API调用、事件触发或者数据流的方式交互。每个服务都完成一个特定的功能,独立开发、运行和发布。微服务解决了单体架构的研发效率瓶颈,但是对应用的基础设施要求提出了非常高的要求。例如为了确保独立开发的微服务
31、能够按预期协调配合,需要进行详尽的集成和端对端测试。测试环境中的应用部署次数通常是生产环境的10 倍。如果应用基础设施不能快速提供独立的测试环境,那么大量的测试时间将消耗在环境稳定性问题的解决上。新兴软件研发范式崛起,云计算全面走向 Serverless 化 21 根据阿里巴巴集团的研发统计数据,1 人日的研发,通常对应 5-7 人日的测试。测试环境已经成为阿里巴巴集团研发提效的最大痛点。微服务的松耦合,也对数据库使用,状态管理,问题诊断,应用交付流水线带来了很大的挑战。关于微服务的复杂度以及解决方案,业界已经有非常多的讨论,这里不再赘述。以微服务为核心的互联网分布式架构,实施的复杂度较高,必
32、须有很好的工具、平台的支撑,这是业界的共识。在软件研发流程中,所有工作可以分为以下三类:业务代码开发,实现业务逻辑。非功能性代码开发,包括实现容错、安全、可观测、可运维、三方软件集成等和业务逻辑无关,但又是企业应用必须具备的能力。应用基础设施管理。包括搭建开发、测试、生产环境,资源规划,安全管控等等。这三类工作中,只有第一类是对业务带来真正价值,和企业核心竞争力密切相关的。但随着软件复杂度的提升,2、3 类工作却消耗了大量的研发资源。尽可能降低 2、新兴软件研发范式崛起,云计算全面走向 Serverless 化 22 3 类工作的复杂度,让客户专注于业务逻辑开发,是软件架构和研发模式发展的必然
33、方向。过去十年,无论是开源社区还是云厂商,都在不同领域将非功能性代码开发和应用基础设施管理工作抽象为标准化,可复用的软件/服务。二、云计算全面走向 Serverless 化 Serverless 是一个非常广义的概念,并不局限于计算。一般而言,同时满足以下条件的服务可以称之为 Serverless 服务:全托管服务。意味着客户使用抽象的服务化接口,而不是直接面对底层资源,也就没有安装、配置、维护或者更新软硬件的负担。全托管服务通常也提供了内置的容错,安全和可观测能力,用户通常不需要再重新构建这些能力。自适应弹性。意味着服务能够根据负载大小自动弹性伸缩,大大提升了资源使用效率。按实际用量付费。意
34、味着只需根据实际的执行时间、流量或调用次数付费,降低了成本。因此 Serverless 服务核心价值在于尽可能消除客户非功能性代码开发,简化应用基础设施管理的工作,从而实现研发效率的飞跃。新兴软件研发范式崛起,云计算全面走向 Serverless 化 23 Serverless 让云计算从一种资源真正变成一种能力。过去云计算用云服务器替代了物理服务器,但客户依旧按“几核几 G 服务器”的模式来购买云资源,未来云计算将全面 Serverless 化,更加接近“电网”模式,按计算的调用次数付费。由于 Serverless 服务契合了研发模式演进的趋势,过去十年,我们可以看到,各个云厂商都在不断将产
35、品体系Serverless化,新的云服务或新功能大多数是Serverless形态。大量的开源商业产品也采用了 Serverless 模式,包括 Confluent Cloud、MongoDB Atlas、Snowflake、Databricks 等等。阿里云是国内最早提供Serverless计算服务的云厂商。函数计算是一款FaaS产品,这是一种以事件驱动的全托管计算服务,用户只需编写代码并上传,函数计算就会自动准备好计算资源,以弹性、可靠的方式运行代码,并提供完整的可观测能力,大幅简化开发运维过程。Serverless 应用引擎 SAE 是业内首款面向应用的 Serverless PaaS 平
36、台,屏蔽底层IaaS 和 Kubernetes 的复杂度,提供了零代码改造、成本更优、效率更高的应用托管方案,帮用户实现单体 Web 应用、微服务应用以及定时任务的 Serverless 化。阿里云领先业界推出 Serverless 容器服务 ASK,基于弹性容器实例 ECI(Elastic Container Instance),可以实现 1min 扩容 2000 个 Pod,降低了 Kubernetes 使用门槛,让用户更专注于应用程序,而不是管理底层基础设施。此外,在 2020 年,阿里云开源的 Serverless Devs 成为业内首个支持主流 Serverless服务/框架的云原生
37、全生命周期管理的平台,并在 2022 年 9 月正式进入 CNCF Sandbox,也成为业内首个入选的 Serverless 工具项目。三、Serverless 驱动研发模式升级 每一个 Serverless 服务都是厂商领域能力的输出,承诺可靠性,弹性,性能等能力指标,因此他们是高质量的应用构建块(building blocks)。例如阿里云对象存储(OSS)服务,承载着 EB 级的海量数据,承诺 11 个 9 的数据可靠性,99.95%的 新兴软件研发范式崛起,云计算全面走向 Serverless 化 24 可用性,以及多样化的数据分级存储和处理能力。阿里云消息队列 RocketMQ,经
38、受双十一万亿级消息洪峰的锤炼,承诺 10 个 9 的数据可靠性,99.95%的可用性。这些云服务和客户基于开源软件自建的系统相比,在弹性,可靠性等方面有明显的优势。随着厂商在存储、计算、中间件、大数据等领域推出越来越多的 Serverless服务,并且这些服务通过事件驱动等方式紧密集成,云逐渐变成了应用构建和运行的超级平台。应用的研发模式也升级为组装式研发。下图展示了传统研发模式和组装式研发的对比:四、Serverless 是云计算普惠千行百业的最佳范式 从新兴的互联网创业公司,到传统企业构建大型软件,都可以使用 Serverless 架构和组装式研发。基于 Serverless 架构,9 人
39、团队的初创企业打造了我来 wolai 这款面向团队协作的新形态文档应用。整个应用采用了函数计算、对象存储、表格存储、Redis 等云服务,系统由多个松耦合的函数组成,每个功能点的发布或者 bug fix,都只需要更新相关的函数即可。功能发布节奏缩短到数小时,短时间实现从选型到上线。年节省运维成本 70-80 万,成本缩减 50%。南瓜电影因为一场热映电影,新用户量 1 小时内增加了 100 万,流量暴涨引发网站服务一度中断,临时云上扩容也无法及时满足巨大的流量。痛定思痛,开始走向Serverless 转型,七天时间完成升级并取得质的飞跃。最终实现开发效率提升 70%,成本下降 40%,运维效率
40、提升 10 倍,从容应对突发流量。新兴软件研发范式崛起,云计算全面走向 Serverless 化 25 世纪联华是最早试水 Serverless 的新零售代表,发现大促时老架构无法满足流量爆发的问题,将会员系统、交易系统、支付系统等放在阿里云函数计算上处理,告别了靠扩展机器支撑大体量业务,促销准备时间从周级缩短到小时级,研发运维提效30%,成本下降 40%,真正的把促销活动变成常态。云催化了研发模式变化,Serverless 架构和组装式研发,让客户做得更少而收获更多,必将成为云上主流的研发范式。Serverless 的前世今生 26 Serverless 的前世今生 作者:江昱 一、从云计算
41、到 Serverless 架构 从云计算到云原生再到 Serverless 架构,技术飞速发展的轨迹都有一定规律可循,那么 Serverless 架构为何而来,因何而生呢?1.云计算的诞生 从世界第一台通用计算机 ENIAC 开始,计算机科学与技术的发展就从未停止过前进的脚步,近些年来,更是日新月异。有不断突破和创新的人工智能领域,有 5G 带来更多机会的物联网领域,还有不断走进寻常百姓家的云计算。在图中可以看到三个关键词,这是 2003 年到 2006 年间,谷歌发表了三篇重要的论文,这些文章指明了 HDFS(分布式文件系统),MapReduce(并行计算)和 Hbase(分布式数据库)的技
42、术基础以及未来机会,正式奠定了云计算的发展方向。Serverless 的前世今生 27 关于这三个文章,或者这三个技术点,也有人曾说“因为它们,云计算才正式拉开帷幕”。云计算发展是飞速的,也是有目共睹的;但是随着云计算的进程,另一个名词诞生并迅速占领了“风口大旗”,被大众更为广泛地关注,那就是云原生。通过对云计算与云原生的文字组成结构分析,可以看到云原生实际上就是在云与计算之间,加了一个 Native,所以可以认为,云计算的飞速发展,无论是从技术迭代还是从概念升级,最终产生了如今耳熟能详的:云原生计算。云计算是什么?其实早在 1961 年云计算的雏形概念就已经诞生了,在麻省理工学院百周年纪念典
43、礼上,约翰麦卡锡,也就是 1971 年图灵奖获得者,第一次提出了一个概念,这个概念后来被喻为是云计算的“最初的、超前的”遐想模型。它翻译大意为:“计算机在未来,将变成一种公共资源,会像生活中的水、电、煤气一样,被每一个人使用。”而后时间到了 1996 年,云计算这个词被正式提出;等到了 2009 年,UC Berkeley(加利福尼亚大学伯克利分校)更是在发布的论文中,对云计算进行了细致描述,它说云计算是一个即将实现的古老梦想,是计算作为基础设施这一长久以来梦想的新称谓,它在正快速变为商业现实。同时在该文章中,也明确地为云计算做了定义:云计算包含互联网上的应用服务,以及在数据中心提供这些服务的
44、软硬件设施。2.云原生的火热 时至今日,云原生技术的发展同样迅猛,那么什么是云原生呢?在文章“什么是真正的云原生”中,给出了一个非常明确的解释:因云而生的软件、硬件、架构,就是真正的云原生;因云而生的技术,就是云原生技术。确实如此,出生于云,成长在云,因云而生,就是云原生。Serverless 的前世今生 28 那么云原生都包括哪些东西呢?耳熟能详的技术,加上云原生三个词,就都是云原生相关技术了,例如:数据库,云原生数据库;网络,云原生网络等。在CNCFLandscape 中,可以看到云原生基金会对云原生产品维度的一个描述,包括了数据库、流、消息、包括容器镜像、包括 servicemesh、包
45、括网关、包括 K8S、当然,这里还包括一个非常热门的词汇:Serverless。3.Serverless 架构的出现 在很多时候 Serverless 架构被称为是一种粘合剂,它将云原生的其他很多产品和用户的业务进行了链接,同时又提供了极其诱人技术红利,为此也被很多项目,业务所选择。那么什么是 Serverless 架构?通过 Serverless 的结构,不难发现其所要传递的心智,Server 指的是服务器,Less表示的是更少的精力,所以 Serverless 架构所传递的心智是:把更专业的事情交给更专业的人,开发者能够较少地关注服务器等底层相关内容,把更多的精力放在更具价值的业务逻辑之上
46、Serverless 的前世今生 29 2009 年,UC Berkeley 发表了一篇关于云计算的文章,在文章中,UC Berkeley 为云计算做出了明确的定义;同时也提出了包括服务的可用性,数据安全性和可审计性等在内的十项云计算所面临的各种困难和挑战,并断言云计算将会引领未来的十年。2019 年,恰好时隔十年,UC Berkeley 再次发文,不仅从多角度说明了什么是Serverless 架构,例如从结构角度,肯定了 Serverless 是 FaaS 与 BaaS 的结合。从特性角度,对于被认为是 Serverless 架构的产品或者服务需要具备按量付费和弹性伸缩的特点。并非常激进地
47、表示 Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,由此也意味着服务器-客户端模式的终结。Serverless 的前世今生 30 从 IaaS,到 PaaS,再到 Serverless,云计算的发展,越来越清晰,也越来越明确,去服务器化也越来越明显。无论此时我们说云原生,还是 Serverless 架构,云的概念确实是在不断地升级,云的技术也在不断地迭代,而这一切的改变其实都是为了效能提升,为了安全提升,为了成本降低,生产力驱动。二、什么是 Serverless 架构?尽管对于 Serverless 架构的定义,并没有一个非常明确的表述,但是 Serv
48、erless 是FaaS 与 BaaS 的组合这种说法,却被很多人所接受。所谓的 FaaS 就是函数即服务,而 BaaS 则指的是后端即服务,两者搭配,共同成为Serverless 架构不可获取的部分,为开发者提供降本提效的技术红利。诚然,CNCF 云原生基金会在 Serverless 白皮书中,肯定了 Serverless 是 FaaS 与BaaS 的结合这种说法;而 UC 伯克利在论文中,肯定这种说法的同时,也从特性角度指出,对于被认为是 Serverless 架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点,但是这也都是 2019 年的“描述”了。Serverless 的前世今生
49、31 时至今日,Serverless 架构已经完成了“自我更新与迭代”。在信通院发布的Serverless 的白皮书中,明确指出 Serverless 架构计算平台包括了函数纬度和应用纬度两种形态。而随着时间的发展,阿里云领先性地推出了 Serverless 应用引擎(SAE),以应用为维度进行 Serverless 化的平台,换句话说,它其实可以是应用 Serverless 化的最佳实践。Serverless 应用引擎 SAE(Serverless App Engine)是一个全托管、免运维、高弹性的通用 PaaS 平台。至此,Serverless 架构的组成已经逐渐明确:从结构角度:Ser
50、verless 是计算平台与 BaaS 产品的结合。计算平台包括了事件触发的函数计算,也包括了应用Serverless化的最佳实践Serverless应用引擎。BaaS 层面则包括了 Api 网管,CDN,对象存储,数据库等一系列的云服务。从特性角度:就像 UC Berkeley 所说,对于被认为是 Serverless 架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点。Serverless 的前世今生 32 1.Serverless 架构和传统架构的区别 作为云时代新的计算范式,Serverless 架构本身属于一种天然的分布式架构,其工作原理较于传统架构虽没有翻天覆地的变化,但也是有






