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