1.6.3 无服务器架构
在从虚拟机移到容器之后,云提供的抽象可以进一步提高:这就是无服务器模式。用这个计算模型,您只需构建应用程序。云服务商负责设置应用程序使用的基础架构和服务,包括服务器、数据库和其他支持服务。
这个名字有一定误导性:肯定有服务器,只不过不是您在管理它或在其上部署应用程序。
像 AWS Lambda 和 Azure Functions 这样的 FaaS 平台就是无服务器模式的例子。在使用这些平台时,您只需要提供业务逻辑函数。平台将设置运行该函数所需的整个基础设施。函数是按使用次数计算成本的。
如果您正在为事件驱动应用程序使用函数,则它们将仅在发生事件时运行。事件可以是外部的,也可以由另一个函数生成。例如,当有消息添加到队列中时,函数可能被触发,然后执行函数,最后退出执行。当无需处理时,平台会关闭所有相关资源。所以您可以只为实际使用付费。而在其他云拓扑,如 CaaS 或 PaaS,始终有一台服务器在全天候运行。与传统的系统相比,您可以利用动态伸缩性来减少资源数量,只在特定时间提供服务。无服务器模型仅在必要时才提供资源,如果没有要进行处理的,一切都将关闭。
无服务器模式不仅包括 FaaS,还包括其他技术。例如 Knative 是一种在 Kubernetes 之上构建无服务器平台的工具,可以将应用程序作为容器和函数运行。
除了成本优化之外,无服务器技术还将一些额外的责任从应用转到平台。这可能是一个优势,因为它允许开发人员集中精力,只需关心业务逻辑。您也要认识到,这种情况下必须处理好供应商锁定的问题。每个 FaaS,以及通常的无服务器平台,都有自己的功能和特性 API。一旦开始为特定平台编写函数,就无法轻松地将其移植另一个平台。使用 FaaS 比使用任何其他方法,都更能体现为便利而放弃责任和控制。