作者|阿里云开发者社区,InfoQ从2012年Serverless被提出到今年2022年,已经整整十年了。过去十年,云迁移已是确定性趋势。在这个阶段,企业最初关注的焦点是如何实现平滑的云迁移。随着越来越多的企业上云,甚至很多企业系统第一天就搭建在云上,企业的核心关注点已经转变为如何更好地利用云能力。新阶段,云服务的作用也从单纯的提供资源,转变为企业构建应用的新平台,帮助企业最大限度减少机器运维等低价值重复性工作,专注于业务创新。云厂商的核心能力已经转变为为企业提供Serverless云服务,消除云使用的复杂性,以更简单的方式提高资源利用率,帮助企业降低成本。近年来,不仅是云厂商,大量的开源商业产品都采用了Serverless模式,包括ConfluentCloud、MongoDBAtlas、Snowflake、Databricks等。随着云厂商在存储上推出越来越多的Serverless服务,计算、中间件、大数据等领域,云产品体系逐渐走向Serverless,这也推动了Serverless架构从概念到大规模生产和落地。2021年,DataDog发布了Serverless研究报告。数据显示,从云原生初创公司到大型企业都在关注Serverless。Serverless生态系统已经超越了FaaS,包括数十种服务,可以帮助开发人员构建更快、更动态的应用程序。.无服务器奇点已经到来。所谓奇点,就是从稳定发展到快速发展的转折点,也意味着Serverless在整个行业的落地将会全面爆发。但与此同时,我们也看到,一方面,企业关注度不断提升,产业开始落地。另一方面,企业和开发者对Serverless也有一些困惑和顾虑。阿里云联合InfoQ收集了部分企业和开发者对Serverless现阶段的反馈,于12月16日举办云原生Serverless开发者测评局线下沙龙,邀请阿里研究员、阿里云智能云原生应用平台丁宇、负责人、阿里云Serverless研发团队、上海汇友文化、德基网络科技有限公司、南瓜影业、宝马等企业技术负责人,共同探讨AllonServerless过程中的挑战和经验,以期给更多实现Serverless的公司提供借鉴和参考。本文截取沙龙精彩演讲。完整视频请看阿里云云原生视频号↓什么是Serverless?在说Serverless之前,我们先来了解一下什么是Serverless?云原生,赞172012年,Serverless的概念正式登场。2016年,首届ServerlessConF将这项技术的讨论推向了顶峰。2017年,阿里云推出了国内首款重磅的Serverless产品服务——函数计算FC(FunctionCompute),让开发者可以专注于业务逻辑开发,而不用花费大量精力在服务器等基础设施管理上。这样可以快速实现业务价值。2018年到2019年,伯克利连续发表两篇定义Serverless的论文,预测Serverless将成为云时代最重要的计算范式,Serverless受到越来越多的关注。Serverless是一个非常宽泛的概念,并不局限于计算。通常,同时满足以下条件的服务可以称为无服务器服务。第一,全托管服务。意味着企业使用抽象的面向服务的接口,而不是直接面向底层资源,没有安装、配置、维护或更新软硬件的负担。完全托管的服务通常还提供内置的容错、安全和可观察性能力,用户通常不需要重建这些能力。第二,适应性弹性。意味着服务可以根据负载大小自动弹性伸缩,不仅可以使系统支持快速增长的业务,还可以大大提高资源使用效率。三是按实际使用量付费。意味着您只需按实际执行时间、流量或调用次数付费,降低了成本。因此,Serverless服务的核心价值在于尽可能杜绝客户非功能代码开发,简化应用基础设施管理工作,实现研发效率的飞跃。上海汇友文化CEO宋杰亲身体验首届ServerlessConf。在他看来:Serverless是一个非常具有颠覆性的技术和解决方案。它与以往所有的技术创新有着根本的区别,因为它涉及的核心问题是商业模式的改变。“类似于从机器语言到高级语言的飞跃,一下子简化了做企业级应用的程序员的顾虑,复杂度大大降低。”Serverless引领下一代应用架构。Serverless服务符合研发模式的演进趋势。近十年来,各大云厂商不断将产品系统做成Serverless。由于阿里云最早在国内推动了Serverless的落地,Serverless的演进也是云计算的发展。阿里巴巴研究员、阿里云智能云原生应用平台负责人丁宇在分享中提到,阿里云是中国最早做云计算的企业。自2009年成立以来,第一阶段从资源和IaaS开始。这一阶段,很多技术开源并大规模流行起来,包括大数据、AI、中间件等微服务和应用层技术。从云的角度来看,此时云厂商和开源有着非常好的协同关系,所以在云上出现了很多全托管的云产品。从企业客户的角度来看,要保证应用在云上的可靠高效运行,上云的复杂度非常高。这时候,企业已经进入了想要更好地使用云的阶段。对于云的演进,也开始向面向服务的方式演进,也就是说云开始逐渐从提供资源向提供服务转变。在此背景下,阿里云逐渐向Serverless服务迈进,包括计算、存储、数据、数据库、大数据,甚至音视频等Serverless产品的诞生。阿里云Serverless演进与实践2017年,阿里云推出了FaaS产品FunctionComputeFC,这是一个事件驱动的全托管计算服务。用户只需编写代码并上传,函数计算会自动准备计算资源,以弹性可靠的方式运行代码,并提供完整的可观察性,极大地简化了开发和运维过程。第二年,阿里云推出Serverless应用引擎SAE。SAE是业界第一个面向应用的ServerlessPaaS平台。屏蔽了底层IaaS和Kubernetes的复杂性,提供零代码修改、成本更低、效率更高的应用托管。帮助用户实现单体Web应用、微服务应用、定时任务的Serverless解决方案。同年推出业界领先的Serverless容器服务ASK。基于弹性容器实例ECI(ElasticContainerInstance),1分钟可扩容2000个Pod,降低Kubernetes的使用门槛,让用户更专注于应用而非管理底层基础设施。2020年,阿里云将ServerlessDevs开源,成为业界首个支持主流Serverless服务/框架的云原生全生命周期管理平台。2022年9月,项目正式进入CNCFSandbox,成为业界首个入选的Serverless工具项目。Serverless使得云计算的粒度非常细。企业是否选择采用Serverless产品,并不是一个简单的软件问题。Serverless的背后,必须有足够大的计算机集群和产品系统能力,才能保证其灵活性满足企业复杂的业务需求。阿里云提供从容器到应用的全层级Serverless产品组合,坚定推进产品体系的全面Serverless。目前,阿里云已有20多个核心产品实现了Serverless。阿里云函数计算FC日调用量超过200亿次,有效支撑历年双1100万QPS峰值,业务增速超过300%。整体规模位居国内第一,体验超复杂场景的锤炼。Serverless计算产品凝聚了阿里云在云原生领域的技术积累和最佳实践经验。除了产品形态的变化,Serverless还带来了软件开发范式的变化。Serverless云产品具有模块化、可组合、高可用等特点,是构建应用的要素。通过无服务器计算组合多个云产品,可以快速构建应用程序。基于Serverless,研发方式升级为组装式研发。装配式研发彻底颠覆了原有的软件研发方式,大大提高了研发效率,灵活应对业务挑战。据权威机构研究统计,与传统模式相比,集装式研发可提升研发效率50%以上。德基网络科技有限公司前端技术负责人刘小伟肯定了Serverless在降本增效方面的作用。他说:“过去一年,我们一直在做前端的Serverless升级,从支出成本上来说,已经大大降低了;从服务上来说,需要分成几个方面,单体应用的Serverless改造成本适当增加,但一旦改造完成,后续开发效率会高很多。“这就是Serverless带来的价值:它真正让开发者回归到业务本身,让企业做得更少,收获更多。Serverless在推广过程中的困难和破局,对于现在的Serverless来说是不言而喻的。”当然,在规模上Serverless在实施的道路上也会遇到一些阻力,企业开发者对于是否采用这个问题仍然存在犹豫和顾虑,一致认为技术趋势与实际应用实施之间存在无形的差距。丁宇认为:这是技术发展过程中的普遍现象,符合技术发展规律,Serverless的大规模落地需要一个契机,而这个契机已经到来,目前企业和开发者都比较积极拥抱云计算,云成为创新平台,同时更多产品具备云特性s,比如自适应弹性、免费运维等。从Serverless本身来看,因为它足够先进,所以它不是互联网分布式架构的简单替代,而是互联网分布式架构的升级。从而形成了自己的体系,可以给企业带来很多明显的变化。由于时期不同,企业会有自己不同的选择。随着Serverless技术发展的越来越成熟,相信会有更多的企业愿意拥抱Serverless,可能需要5-10年的时间才能像互联网的分布式架构一样成为主流架构,但先行者往往会抢先一步红利,这将使企业更具竞争力。目前Java语言在国内后端开发中仍占据主导地位,Java语言的冷启动特性对函数计算并不友好。冷启动时间长,导致用户难以享受到FC毫秒级计费、秒级扩容等特性带来的技术红利。很快AWS此前发布了消除冷启动的产品SnapStart,让冷启动再次成为热门话题。冷启动包括两部分:系统冷启动和应用冷启动。对于系统冷启动,阿里云提供了硬件、MicroVM、操作系统的全面解决方案,对语言运行时进行了全栈优化。阿里云函数计算FC在系统冷启动阶段的性能指标业界领先。应用冷启动与用户选择的语言和程序逻辑本身有关。比如Java应用,启动时间通常比Node.js、Python、Go等语言高很多,阿里云内部一直在打磨这种技术,但实际应用会更加谨慎。因为SnapStart等技术需要客户的应用适配SnapStart,否则会有Programcorrectness。今天AWS支持这项技术,并且对基础库和第三方库做了很多适配。虽然简化了客户的复杂性,但最终还是需要客户保证正确性。因此,阿里云提供了一些保证兼容性的解决方案,希望通过不断的优化,尽可能的减轻用户的适配负担。目前阿里云主要通过预留和闲置来处理冷启动问题。此外,今年的云栖大会FunctionComputeFC发布了vCPU和内存解绑策略。优化后,成本会进一步降低。此外,供应商锁定也是阻碍Serverless规模化的一大问题。阿里云对此也有解决方案。首先,阿里云开源了ServerlessDevs。ServerlessDevs是一个开源开放的serverless开发者平台,致力于为开发者提供强大的工具链体系。得益于函数的可插拔特性,ServerlessDevs可以轻松支持不同云厂商的项目部署,或者一键部署到不同的云平台。其次,Serverless架构的理念本身就是要重塑应用研发模式。云平台提供了完整的Serverless产品体系,云平台提供了一套完整的ServerlessBaaS和更加规范化、流程化的桥梁。FaaS更细粒度的业务处理拆分,可以让业务代码开发更简单,进而让企业多云建设更容易。最后,企业采用多云的方式,并不意味着所有的业务都一定是多云的,均匀分布在各个云上。很多时候,最好的云是根据差异化的能力来选择的。只有用上了云,才能真正发挥云厂商的优势,获得更好的云资源。综上所述,如何做到无锁定,厂商开放规范,无限制,海纳百川,在一定程度上,无厂商锁定。Serverless未来的想象和规划,不仅需要技术过关,思维的转变更是摆在开发者面前的一道鸿沟。Serverless经历了从技术创新到应用再到普及的过程。对开发者最大的挑战是系统设计模式和编码习惯的改变。很多开发者对学习serverless架构心存疑虑。他们应该使用原有的开发范式还是需要学习新的范式?对于这种担忧,慧友文化CEO宋杰认为:“Serverless会颠覆传统的开发模式和逻辑,对于成熟的开发者来说挑战可能更大。在学习成本上,对于有经验的程序员来说,进入云端——本土世界,最大的障碍不是‘学’,而是‘忘’。”云原生技术打破了原有的限制,CPU、硬盘、内存没有大小限制。对于越有经验的程序员来说,思维的转换就越困难。“程序员需要不断学习Serverless,克服固有的思维模式,希望阿里云能提供更多的培训,帮助大家实现思维模式的转变。”宋杰表示,这也是他对阿里云的期待。除了提供更全面、更丰富的Serverless产品和解决方案,作为中国Serverless的先行者,阿里云将继续拥抱开源,为Serverless用户提供多样化、可选、更灵活的方式,提升开发者的幸福感。“未来,阿里云整个产品体系将实现Serverless,产品之间的融合将更加细腻,从点到面,全链路串联起来,让更多的企业和开发者受益。”丁宇说道。
