云原生应用

什么是“无服务器”?

“无服务器”是指一种云计算模型,在该模型下,应用开发人员无需为其应用配置服务器或管理扩展。相反,这类常规任务被提供商抽象出来,使开发人员能够比传统模型更快地将代码推送至生产环境。

简而言之,无服务器化可以让开发人员专注于自己的代码,并且在很多情况下可以无视基础架构。因此,服务器规格不会影响开发人员,从而形成了“无服务器”的体验。当然,服务器还是存在——只是它们由云提供商所管理。

更具体点来说,即云提供商(如 Amazon 或 Google)运行物理服务器并代表用户(比如您自己)动态分配资源,用户则可以直接将代码部署到生产环境中。这听起来可能与公共云基础架构即服务(IaaS)产品完全相同,但无服务器的主要区别在于:提供商仅针对执行代码所需的那部分计算资源向您收取费用。

无服务器计算是如何工作的?

在标准 IaaS 模型中,用户要预先购买一定容量,这意味着您要运行自己的应用,首先得为“始终可用”的服务器组件付费。而无服务器模型则不同。和前者相反,它由事件触发应用代码的运行,然后云提供商再以动态方式为该代码分配资源,而用户只需为代码执行的计算处理付费。除了明显的成本和效率优势外,“无服务器”还将开发人员从应用扩展和服务器置备方面的日常和琐碎任务中解脱了出来。

无服务器计算主要有两种方法。第一种是通过后端即服务(BaaS),在这种情况下,您的应用是由各种第三方服务和应用构成的。第二种是通过功能即服务(FaaS),在这种方式中,开发人员仍要编写自定义服务器端逻辑,但它运行于云提供商完全管理的容器。另外值得一提的是,您可以通过这些方法构建完全无服务器化的应用,也可以打造部分无服务器、部分传统微服务组件的应用。

后端即服务(BaaS)

后端即服务(BaaS)有时也被称为移动后端即服务(MBaaS),它是一种广泛依赖于第三方应用和服务的无服务器计算方法。例如,云提供商可以提供认证服务、额外加密、云访问数据库以及高置信度使用数据。这些后端服务通常是通过调用云提供商设置的应用编程接口(API) 进行访问的;相比内部开发而言,这些功能可以更方便地整合到您的系统中。

功能即服务(FaaS)

功能即服务(FaaS)的控制程度比 BaaS 更高,因为服务器端逻辑仍由开发人员编写。不过,一旦编写完成,这些逻辑就会部署到云提供商管理的容器中,这是无服务器的主要优势。具体而言,这些容器具有以下特点:

  • 无状态 - 让数据集成变得更加简单。
  • 寿命短 - 可以只运行非常短的时间。
  • 由事件触发 - 可在需要时自动运行。
  • 完全由云提供商管理 - 您只用为所需的计算能力付费,而不必管“闲置”的应用和服务器。

无服务器化的利弊

首先,无服务器化可以提高开发人员的工作效率,降低运营成本。通过摆脱诸如服务器置备和管理等例行任务,开发人员就会有更多的时间专注于自己的应用。如果全部应用组件都是通过 BaaS 从第三方整合而来(而不是内部编写),那这种优势还会更加显著。在无服务器模型中,由于您只需为所需的云计算时间付费,而不用全程运行和管理自己的服务器,因此大大降低了运营成本。

但是,不运行自己的服务器或控制自己的服务器端逻辑也有弊端。放弃对 IT 堆栈这些方面的控制,也同时意味着您会受制于供应商技术锁定。云提供商可能对其组件的交互方式有着严格的限制,从而影响您系统的灵活性和定制能力。即便您决定要更换提供商,也可能需要升级系统以符合新供应商的规范,而这无疑会增加成本。

无服务器计算的 Kubernetes 基础

云计算

有助于加速部署云原生应用的容器和 Kubernetes 平台。

云计算

一组经过精心挑选的应用运行时和框架,尤其适合用来开发云原生应用。

无招胜有招,借力无服务器剑入佳境