Serverless

Serverless | 无服务器架构

Serverless 无服务器是一种架构理念,其核心思想是将提供服务资源的基础设施抽象成各种服务,以 API 接口的方式供给用户按需调用,真正做到按需伸缩、按使用收费。消除了对传统的海量持续在线服务器组件的需求,降低了开发和运维的复杂性,降低运营成本并缩短了业务系统的交付周期,使得用户能够专注在价值密度更高的业务逻辑的开发上。

目前业界较为公认的无服务器架构主要包括两个方面,即提供计算资源的函数服务平台 FaaS,以及提供托管云服务的后端服务 BaaS。

  • 函数即服务(Function as a Service):是一项基于事件驱动的函数托管计算服务。通过函数服务,开发者只需要编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数代码运行在无状态的容器中,由事件触发且短暂易失,并完全由第三方管理,基础设施对应用开发者完全透明。函数以弹性、高可靠的方式运行,并且按实际执行资源计费,不执行不产生费用。

  • 后端即服务(Backend as a Service):BaaS 覆盖了应用可能依赖的所有第三方服务,如云数据库、身份验证、对象存储等服务,开发人员通过 API 和由 BaaS 服务商提供的 SDK,能够集成所需的所有后端功能,而无需构建后端应用,更不必管理虚拟机或容器等基础设施,就能保证应用的正常运行。

客户价值

无服务器架构是一种新的软件架构范式,它因为 AWS Lambda 服务而推广。Serverless 对客户的最大价值有两点:

  • 将资本支出(CAPEX)变成了运营成本(OPEX),且能很好地解决业务“估不准问题”。Serverless 采用更精确地根据业务量所消耗的资源去支付费用,无需在事先估计业务量而先采购好计算资源。传统的通过预估业务峰值采购计算资源的方式下,如果业务量估高了就会造成采购多余的资源而带来浪费,如果业务量估少了又会使得业务价值无法最大化而让营收变窄。Serverless 从技术层面做到了可以在毫秒级实现计算资源扩容而很好地应对业务流量的波动。

  • 省去了高昂的运维成本。Serverless 由于是免服务器运维的,所以不需要配置相应的人员去运维服务器。Serverless 的整个解决方案通过封装向开发者屏蔽了大量的技术细节,让开发者可以专注于业务逻辑而带去更高的开发效率和缩短业务上线时间。

可以预见,Serverless 是弹性、易用性和移植性的重要落地形式。有部分人对 Service Mesh 和 Serverless 存在这样的困惑:Service Mesh 是解决微服务软件架构下服务与服务之间复杂度问题的,只要采纳了微服务软件架构就应当使用 Service Mesh。Serverless 解决的是免服务器运维的问题,一个运用于微服务软件架构的 Serverless 解决方案,应当包含 Service Mesh 的内容,只不过对于终端的开发者很可能感知不到而已。