1.1.4 生态发展
Serverless架构的发展,离不开云厂商的驱动,离不开开源社区的支持,在过去的几年时间,无论是高校、实验室、云厂商等对Serverless架构的研究,还是CNCF等基金会对Serverless架构的持续关注和赋能,还是其他的Serverless社区、开源项目对Serverless架构的建设,Serverless架构都在逐渐的成为更通用,更好用的技术架构,都在成为更简单、更具价值的技术选型。
学术建设
Serverless架构从诞生到今天,正在逐渐的被更多人所关注,包括学术界也逐渐有越来越多的人,将目光投向Serverless架构,助力Serverless领域快速腾飞。这一部分,将会通过部分论文对Serverless架构在学术界的建设进行初步的分析和探索。
2018年,Serverless的发展速度要比想象中的更加快速,这一年UC Berkeley发文《Serverless Computing: One Step Forward, Two Steps Back》,表达了对Serverless架构的担忧和挑战,在这篇文章中,作者认为“通过提供自动缩放功能,今天的FaaS产品在云编程方面迈出了一大步,它提供了一种实际上可管理的,看似无限的计算平台。但是,他们忽略了高效数据处理的重要性;其次,它们阻碍了分布式系统的开发”。任何一个新的技术、概念出现都会遇到一定的挑战和担忧,就如同当年云计算出现时,也被一些人(如Oracle公司总裁Larry Ellison、GNU发起人Richard Stallman)认为只是又一个商业炒作的概念,毫无新意,甚至蠢不可及。当然,事实也证明,任何一个新的事物,都只有在经历各种挑战和质疑之后,才能更茁壮的成长,Serverless也不例外。
2019年,时隔一年,UC Berkeley针对Serverless架构再次发文《Cloud Programming Simplified: A Berkeley View on Serverless Computing》,在这篇文章中,作者犀利断言Serverless 将会在接下来十年被迅速采用,获得飞速发展,并对Serverless架构进行了更为激进的断言:Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,这也意味着服务器 - 客户端模式的终结,Serverless架构将会引领云计算的下一个十年。
在学术界,不仅仅UC Berkeley 对Serverless发表过多篇论文,很多国内外高校都在Serverless领域投入了足够的精力进行科研探索。就目前来看, Serverless 已经成为学术界的研究热点,每年Serverless架构相关的论文都有比较明显的增长趋势:
(该图片来自掘金社区)
而到了2021年,Serverless架构在学术界的论文数量不仅仅再次上升,其研究内容和方向也是越发的完善和全面,其中包括不限于冷启动优化、镜像加速、调度策略、缓存机制等诸多热点问题。
以阿里云函数计算团队和美国George Mason University Leap Lab合作发表在顶会USENIX ATC (USENIX Annual Technical Conference) 的论文《FaaSNet: Scalable and Fast Provisioning of Custom Serverless Container Runtimes at Alibaba Cloud Function Compute》为例,在文章中就针对容器镜像生态与Serverless架构结合之后的问题“镜像拉取与冷启动优化”问题进行了更为深入的探索,在加速镜像的分发速度方面,常见的业界成熟的 P2P 方案没有做到 function 级别的感知,并且集群内的拓扑逻辑大多为全连接的网络模式,对机器的性能提出了一定需求,这些前置设定不适配 FC ECS 的系统实现,为此设计并提出了一个具有高伸缩性的轻量级系统中间件FaaSNet,FaaSNet利用到镜像加速格式进行容器分发,目标作用场景是 FaaS 中突发流量下的大规模容器镜像启动(函数冷启动),FaaSNet 的核心组件包含 Function Tree (FT),是一个去中心化的、自平衡的二叉树状拓扑结构,树状拓扑结构中的所有节点全部等价。FaaSNet 可以根据 workload 的动态性实现实时组网已达到 function-awareness,无须做预先的 workload分析与预处理,进而帮助Serverless平台解锁高伸缩性和快速的镜像分发速度技术瓶颈,赋能自定义容器镜像场景的更为深入和广泛的应用。
除此之外,作为云计算领域的顶级会议SoCC,在2021年接收的论文中,也可以看到诸多Serverless架构的影子,例如以Microsoft Azure Functions作为实验平台的论文《FaaT:ATransparentAuto−ScalingCacheforServerlessApplications》,针对Serverless架构中函数stateless的特点,针对FaaS平台的Cache问题,提出了一种用于Serverless应用程序的自动伸缩分布式缓存FaaT: A Transparent Auto-Scaling Cache for Serverless Applications》,针对Serverless架构中函数 stateless 的特点,针对FaaS平台的Cache问题,提出了一种用于Serverless应用程序的自动伸缩分布式缓存FaaT:ATransparentAuto−ScalingCacheforServerlessApplications》,针对Serverless架构中函数stateless的特点,针对FaaS平台的Cache问题,提出了一种用于Serverless应用程序的自动伸缩分布式缓存FaaT,可以大幅度提升 Serverless 函数的性能,与已有的通过外部存储作为 Cache 系统的方法相比,Faa$T可以降低绝大多数的开销。另一篇文章《ServerMore: Opportunistic Execution of Serverless Functions in the Cloud》针对Serverless函数短执行时间与低资源需求的特点,介绍了一种服务器级资源管理器ServerMore,可将Serverless 函数与 Serverful 的虚拟机调度在同一台物理机上执行任务,ServerMore 动态调节服务器上的 CPU、内存带宽和 LLC 资源,以确保 Serverful 和 Serverless 工作负载之间的托管不会影响应用程序tail latencies。通过选择性地使用Serverless架构并推断相对黑盒的Serverful工作负载的性能,ServerMore 与之前的模式相比,平均提高了 35.9% 到 245% 的资源利用率;同时对 Serverful 应用程序和 Serverless 架构的延迟影响最小。
Serverless架构的学术研究日渐火热,各领域的顶会也出现了诸多优秀的Serverless架构相关论文,这不仅有助于Serverless学术生态的繁荣,也非常有助于突破Serverless架构的技术瓶颈,实现云计算领域技术架构升级。
除此之外,近年来国内的Serverless图书专著也逐渐多了起来,仅仅2021年一年的时间就先后有包括《前端Serverless:面向全栈的无服务器架构实战》、《Serverless从入门到进阶:架构、原理与实践》、《Serverless工程实践:从入门到进阶》、《华为Serverless核心技术与实践》等在内的图书被出版,大大丰富了国内的Serverless培训与教育的资料生态。
随着时间的发展,Serverless架构在更多领域发挥着越来越重要的作用,在被更多人关注的同时,Serverless架构也逐渐的成为了诸多学者、实验室的研究对象,如何将学术和工业进行有机结合,如何通过工业赋能学术届的科研,通过学术届的科研赋能工业界技术架构的迭代升级,赋能整个行业的前进,这不仅仅是Serverless架构需要做的,也是如今的Serverless架构正在做的。
工具链建设
Serverless 正在改变未来软件开发的模式和流程,并被预测将引领云计算的下一个 10 年,但尽管如此,开发者在选择使用 Serverless 时仍有诸多担忧,这其中最受关注的无疑就是工具链体系的匮乏。所谓的工具链匮乏,一方面表现在市面上工具链不完善,这导致开发和部署难度大,进而增加成本;另一方面表现在,缺乏相关的工具链在体验层将 Serverless 体验进一步规范,优质工具链的匮乏导致本来就担心被厂商绑定的 Serverless 开发者变得更难与厂商解绑。2020年 10月,中国信息通信研究院发布国内首个《云原生用户调查报告》明确指出在使用 Serverless 架构之前,49% 的用户考虑部署成本,26% 的用户考虑厂商绑定情况,24% 的用户考虑相关工具集完善程度,这些数据背后透露的实际上是:开发者对于完善工具链的强烈需求。尽管,有一些开发者认为入门Serverless架构,通过白屏化的操作相对来说会更容易入门,在一定程度上通过各个云厂商的控制台进行函数的创建、更新也会更为方便。但是不可否定的是,Serverless开发者工具在一定程度上却有着更为重要的价值和作用:
通过脚手架,快速创建Serverless架构的应用;
在开发过程中,通过开发者工具进行应用的调试等;
在开发完成之后,通过开发者工具将应用(可能包括多个函数以及相对应的BaaS类产品)一键部署到线上;
项目运维阶段,通过开发者工具进行项目的可观测以及问题定位等;
若需要实现科学部署,通过某些CI/CD平台/工具发布Serverless架构的应用,通常是离不开开发者工具的;
目前Serverless领域,工具链建设分为两类:
云厂商/Serverless框架所提供的针对自身的开发者工具,例如AWS的SAM CLI,阿里云的Funcraft,OpenWhisk的Ask等;
由第三方提供的多云开发者框架(包括不限于开源社区驱动),例如Serverless Framework项目,Serverless Devs项目等;
通过Serverless开发者工具,开发者可以非常简单的学习和使用Serverless架构,也可以在生产的过程中快速的使用这些工具进行开发效能的提升。以Serverless Framework为例,作为拥有近4万Star的海外老牌Serverless工具链开源项目,目前Serverless.com的官方网站支持11个常见的Serverless平台产品:
可以通过Serverless Framework开发者工具,以AWS Lambda为例进行实践,可以通过几行命令快速体验AWS Lambda:
# 安装
npm install -g serverless
# 配置密钥
serverless config credentials --provider aws --key key--secret secret
# 创建一个项目
serverless create --template aws-python3 --path my-service
# 进入项目
cd my-service
# 部署项目
serverless deploy -v
除了对项目的部署和发布操作之外,Serverless Framework还支持项目的删除,回滚等更多的操作,以常见的部分云厂商和开源项目为例,Serverless Framework的常见能力表如下: