博客

无服务器并不关乎服务器,而是关乎应用程序

Lori MacVittie 缩略图
洛里·麦克维蒂
2017 年 6 月 12 日发布

围绕“无服务器计算”的概念存在很多困惑。 这可能是因为它的命名相当错误。 这与服务器或计算无关。 至少与大多数 IT 专业人士使用的传统意义不同。

无服务器最好被称为函数即服务(FaaS),因为这就是它所提供的。 正如 FaaS 是无服务器的一样,SaaS 也是如此,而且,人们可能正确地得出这样的结论:PaaS 也是无服务器的。 这是因为从消费者(通常是开发人员)的角度来看,服务器(计算)已被排除在外。 计算(服务器、网络)资源隐藏在幕后,通过最终由服务提供商管理的自动化和编排网络自动配置、管理和扩展。 你付了钱,但你永远看不到它。

总体而言,无服务器FaaS 不能替代 SaaS、PaaS 或云。 它是现有模型之上的另一种选项,为开发人员提供了按需调用函数的令人兴奋的能力。 它是事件驱动的,这意味着该功能由事件触发。 该事件通常是 API 调用的调用,它采用具有非常具体的 URI 的 HTTP 请求的形式。是的,API 调用。

FaaS 最常被引用的用例是图像或视频处理。 这是因为所需的资源通常无法预测,但在频率和容量上却无法预测。 FaaS 提供了一种经济高效的方法,可以根据每次通话处理上述媒体。 另一个例子可能与物联网领域相关,其中操作是由通过控制器应用程序或事物本身发生的事件触发的。 而且总是有API 后端用例,这对大多数人来说通常比任何其他用例更有意义,因为 API 通常被描述为调用函数的 URI。  无论该函数正在做什么,它只有在特定事件触发时才会执行,并且应该是一个单独的、独立的函数。

应用程序分解

这不是我们习惯看到或讨论的云。 这是因为云(IaaS)涉及基础设施和运营,而 FaaS(以及 PaaS 和 SaaS)涉及应用。 它们旨在作为一种开发环境,开发人员能够在其中编写代码来执行某些任务,作为更大的应用计划的一部分。 您可以使用多个 FaaS 实现构建一个应用程序吗? 绝对地。 确实从这个方面来看,FaaS 与 SaaS 的关系就如同微服务与整体系统的关系一样。

但这正是关键所在。 FaaS 与应用有关,而不是服务器。 你无法用FaaS实现云,但你可以开发应用。 您无法将应用程序转移到“无服务器”环境中。 必须对其进行解构,然后重建,不,重新架构为 FaaS 的集合。

组合(或者排列?)非常广泛。 人们可以将部署在 IaaS 中的应用程序的 FaaS 与 PaaS 结合起来。 IaaS 和 PaaS 可能在内部部署,而 FaaS 是公共的。

使用 SaaS、PaaS 和 FaaS 时,您永远看不到“服务器”。 在 IaaS 中情况并非如此,我们将服务器称为“实例”,并且需要对其进行管理和维护。 这是因为 IaaS(无论是内部部署还是公共)都是关于基础设施和运营的交付,而不是应用。 这一直都是事实,但在过去的十年里我们一直能够忽略它,因为“服务器==应用”长期以来一直是常态。

但随着微服务和 API 以及现在的 FaaS 的兴起,我们不能再以“服务器 ==应用”的模式运行,因为它不再是正确的。

从根本上来说,FaaS 与服务器无关,甚至与云无关(就我们所理解的意义而言)。 但这对于我们设计和开发应用的方式来说是一个重大的转变。