新兴软件研发范式兴起,云计算全面走向Serverless发生了新的变化,Serverless是最重要的趋势之一。阿里云将坚定推进核心产品的全面Serverless化,帮助客户更好地实现敏捷创新。本文想和大家探讨一下云计算全面走向Serverless的必然性。软件架构与研发模式演进史企业的业务发展需求一直是推动软件架构与研发模式演进的主要力量。企业总是希望能够更敏捷地应对业务规模和复杂性的增长,更快地将产品推向市场,加快业务创新。这就需要技术来实现大型复杂软件的快速迭代。传统的企业级应用架构通常是单体式的,所有模块耦合在一起,同时发布。这种单体架构的应用,一开始是容易管理的,但是随着业务的发展,会带来复杂度的显着增加。这种强耦合的架构在开发、测试、运维的过程中带来了很多冲突,拖慢了整个迭代速度。例如,整个应用的开发要求所有模块都采用统一的语言和框架技术栈。如果一个基础库被多个模块共享,其中一个模块想要升级到新版本,就需要说服所有人同时升级,即使其他人没有。不需要新版本。所有模块的发布节奏是强制对齐的,一个模块出现问题会影响整个应用的发布。快速修复一个模块的实时问题也变得非常困难,因为它需要与其他模块正在进行的更改合并,解决冲突,重新发布整个应用程序,并在重新发布之前运行所有测试。于是很快,单体应用架构已经不能满足软件开发效率的要求,取而代之的是以微服务为特征的互联网分布式架构。在微服务架构中,应用程序由独立的服务组成。这些服务松耦合,并通过API调用、事件触发器或数据流进行交互。每个服务完成特定的功能,独立开发、运行和发布。微服务解决了单体架构的研发效率瓶颈,但对应用基础设施提出了非常高的要求。例如,为确保独立开发的微服务按预期协同工作,需要进行详尽的集成和端到端测试。测试环境的应用部署数量通常是生产环境的10倍。如果应用基础设施不能快速提供独立的测试环境,大量的测试时间将耗费在解决环境稳定性问题上。根据阿里巴巴集团的研发统计,1人日的研发通常对应5-7人日的测试。测试环境成为阿里巴巴集团提升研发效率的最大痛点。微服务的松耦合也给数据库使用、状态管理、问题诊断、应用交付流水线带来了巨大的挑战。关于微服务的复杂性和解决方案,业界已经有很多讨论,这里不再赘述。以微服务为核心的互联网分布式架构实现起来非常复杂,必须有好的工具和平台来支持。这是业界的共识。在软件开发过程中,所有的工作可以分为以下三类:业务代码开发、业务逻辑实现。非功能代码开发,包括容错、安全、可观察、运维、三方软件集成的实现,与业务逻辑无关,是企业应用必备的能力。应用基础设施管理。包括搭建开发、测试、生产环境、资源规划、安全管控等。在这三类工作中,只有第一类工作为业务带来真正的价值,与企业的核心竞争力息息相关。然而,随着软件复杂度的增加,Type2和Type3任务消耗了大量的研发资源。尽可能降低2、3类工作的复杂度,让客户专注于业务逻辑开发,是软件架构和研发模型发展的必然方向。在过去的十年中,无论是开源社区还是云厂商都将非功能性代码开发和应用程序基础设施管理抽象为不同领域的标准化和可重用的软件/服务。云计算正在全面走向Serverless。Serverless是一个非常广泛的概念,并不局限于计算。一般来说,同时满足以下条件的服务可以称为无服务器服务:全托管服务。意味着客户使用抽象的面向服务的接口,而不是直接面对底层资源,没有安装、配置、维护或更新软硬件的负担。完全托管的服务通常还提供内置的容错、安全和可观察性能力,用户通常不需要重建这些能力。自适应弹性。意味着服务可以根据负载大小自动弹性伸缩,大大提高了资源使用效率。为您使用的东西付费。意味着您只需按实际执行时间、流量或调用次数付费,降低了成本。因此,Serverless服务的核心价值在于尽可能杜绝客户非功能代码开发,简化应用基础设施管理工作,实现研发效率的飞跃。阿里云智能总裁张剑锋表示,Serverless让云计算从一种资源变成了一种能力。过去,云计算使用云服务器代替物理服务器,但客户仍然按照“几核几G服务器”的模式购买云资源。未来云计算将完全无服务器,更接近“网格”模型,按计算调用次数付费。由于Serverless服务顺应了研发模式的演进趋势,在过去的十年里,我们可以看到各个云厂商都在不断将自己的产品系统进行Serverless化,大部分新的云服务或者新功能都是以Serverless的形式出现的。大量开源商业产品也采用了Serverless模式,包括ConfluentCloud、MongoDBAtlas、Snowflake、Databricks等。在2022云栖大会上,阿里云智能总裁张剑锋宣布核心云产品将是完全无服务器。阿里云是中国第一家提供无服务器计算服务的云厂商。函数计算是一种FaaS产品,是一种事件驱动的全托管计算服务。用户只需编写代码并上传,函数计算将自动准备计算资源以弹性可靠的方式运行代码,并提供完整的可观察性,大大简化了开发运维过程。Serverless应用引擎SAE是业界首个面向应用的ServerlessPaaS平台,屏蔽了底层IaaS和Kubernetes的复杂性,提供零代码改造、成本更低、效率更高的应用托管解决方案,帮助用户实现单体Web应用、Serverless用于微服务应用程序和计划任务。阿里云率先推出Serverless容器服务ASK。基于弹性容器实例(ECI),1分钟可扩容2000个Pod,降低Kubernetes的使用门槛,让用户更专注于应用而非管理底层基础设施。此外,2020年阿里云开源的ServerlessDevs将成为业界首个支持主流Serverless服务/框架云原生全生命周期管理的平台,并于2022年9月正式进入CNCFSandbox,成为业界首个入选无服务器工具项目。Serverless驱动的研发模式升级每一个Serverless服务都是厂商现场能力的输出,有前途的可靠性、弹性、性能等能力指标,是优质的应用积木(buildingblocks)。例如承载EB级海量数据的阿里云对象存储(OSS)服务,承诺9分11的数据可靠性,99.95%的可用性,以及多样化的数据分层存储和处理能力。阿里云的消息队列RocketMQ经受住了双十一万亿级的消息洪峰,并承诺了10个9的数据可靠性和99.95%的可用性。与客户基于开源软件构建的系统相比,这些云服务在弹性和可靠性方面具有明显优势。随着厂商在存储、计算、中间件、大数据等领域推出越来越多的Serverless服务,并通过事件驱动的方式将这些服务紧密集成,云逐渐成为应用构建和运行的超级平台。应用研发模式也升级为组装研发。下图是传统研发模式与拼装研发模式的对比:Serverless是云计算惠及各行各业的最佳范式。从新兴的互联网创业公司到构建大型软件的传统企业,都可以使用无服务器架构和组装式研发。基于Serverless架构,一个9人团队的初创公司创建了我来,一种用于团队协作的新型文档应用程序。整个应用使用了函数计算、对象存储、表存储、Redis等云服务。该系统由多个松散耦合的功能组成。每个功能点的发布或bug修复只需要更新相关功能即可。功能发布节奏缩短至数小时,短时间内实现从选型到上线的全过程。每年可节省运维成本70万元至80万元,成本可降低50%。南瓜电影因为一部火爆的电影,一小时内新增用户100万。流量激增导致网站服务一度中断,临时扩容无法及时应对庞大的流量。痛定思痛,开始向Serverless转型,7天完成升级,有了质的飞跃。最终开发效率提升70%,成本降低40%,运维效率提升10倍,从容应对突发流量。世纪联华是第一个试水Serverless的新零售代表。发现老架构无法应对大促时的流量爆发问题。将会员系统、交易系统、支付系统等放在阿里云函数计算上进行处理,告别依赖扩容机器支持大规模业务,推广准备时间从数周缩短至数小时,效率研发运维提升30%,成本降低40%。研发,让客户做的更少,收获更多,必将成为云上的主流研发范式。
