对于外行来说,无服务器计算的想法似乎令人难以置信,因为在软件开发的历史上,服务器是不可或缺的。 好吧,他们仍然是。 无服务器计算不需要从字面上理解,因为它不会使服务器过时。 在无服务器计算方案中,服务器继续发挥重要作用,但存在一定差异。
软件开发人员不再需要考虑服务器或根据服务器调整编码。 他们可以完全专注于编码,而托管在云中的服务器则负责代码处理。 无需规划服务器的容量,因为在云中,它们能够根据需要进行扩展和缩减。 整个服务器不会一直保持活动状态。 根据要求,它的一部分会变得活跃,完成他们的工作,然后进入休眠状态。
许多人认为无服务器计算可以提高计算效率并降低运营成本; 他们将其视为一种革命性的计算方式。 但并非所有人都同意。 另一方面,有人反驳说无服务器计算会增加复杂性,而管理复杂性的方法并不多。
什么是无服务器计算?
如前所述,无服务器计算并不意味着计算或软件开发可以在没有服务器的情况下进行。 事实上,服务器只是由第三方供应商托管在云端。 因此,软件开发人员只需要专注于他们的代码,而不需要考虑服务器、容量、部署等等。 服务器内部有不同的部分,称为函数,用于处理代码。 与传统计算不同,整个服务器不会一直保持活动状态。 这些功能执行特定任务——例如验证和搜索——并且仅在需要时激活。 这些功能可以根据需要放大或缩小。 就像软件即服务 (SaaS) 或平台即服务 (PaaS) 等其他云服务一样,这些功能也是在订阅的基础上提供的。 客户只需为功能保持激活的时间付费。
历史
无服务器计算在软件开发中是一个相当新的概念,其根源可以追溯到 2006 年。2006 年,一项名为 Zimki 的服务提供了一种解决方案,允许软件开发人员编写代码并将其上传到 Zimki 的服务器。 代码执行由以应用程序编程接口 (API) 形式提供的函数执行。
下一个重大发展发生在 2014 年,当时亚马逊以 AWS Lambda 的形式为代码执行平台引入了按需付费系统。 然而,有趣的是,这样一个新颖的概念花了很长时间才引起人们的关注(2006 年至 2014 年)。 出于某种原因,无服务器计算的发展并没有像云计算或物联网 (IoT) 等其他想法那样引起轰动。 尽管如此,AWS Lambda 是大型企业的第一个无服务器产品,随后还有许多其他产品,包括谷歌的产品,称为 Google Cloud Functions。 2016 年,IBM 和微软分别推出了 OpenWhisk 和 Azure Functions,加入了无服务器计算的潮流。
潜水更深
开始更深入地了解无服务器计算的一个好点是无服务器计算和 PaaS 之间的比较。 尽管它们在概念上有所不同,但 PaaS 实际上是迈向无服务器产品的第一步。 虽然 PaaS 提供了一个允许开发人员通过 Internet 构建软件应用程序的平台和环境,但仍然需要规划云中软件所需的容量。 但是,当您使用无服务器计算时,没有必要以任何方式考虑服务器。 软件开发人员只需编写代码并将代码上传到云端,然后由服务器接管。
无服务器计算也称为功能即服务 (FaaS),因为小功能是在按需付费的业务模式下提供的。 这些功能执行小任务——例如,验证用户凭证。 这些功能以 API 的形式提供。 一个软件应用程序可能需要多个功能,但并非所有功能都同时激活; 它们仅在需要时才处于活动状态。 例如,如果一个功能一直在接收大量流量并且工作过度,则可以扩展它并增加其容量。 因此,您不需要扩展整个应用程序。
为什么无服务器计算很重要?
无服务器计算的重要性在于它与传统计算的区别。 传统计算一直很好地为企业服务,但也带来了一些挑战:费用高、耗时、编码不集中以及难以按比例放大或缩小。 企业一直在寻找解决这些问题的方法。 无服务器计算的独特优势包括:
专注于编码
在传统计算中,开发人员必须考虑服务器并相应地调整编码。 在无服务器计算中,他们只需要专注于编码,其余的由托管在云端的服务器来处理。 这种增加的关注会导致更好的代码质量。
编码可能更容易
如果你的代码是面向无服务器计算的,那么你要做的就是编写更小的代码片段,由特定的、各自的函数处理,并确保代码与其他代码片段很好地集成。
更容易放大或缩小
由于整个无服务器计算基础设施都是关于小功能的,因此无需扩展或缩小整个基础设施——只需扩展所需的功能即可。 这样,处理和缩放也会更快地发生。
不会那么贵
通常,使用无服务器计算服务的企业先为订阅付费,然后再为功能使用付费。 但是,它只为功能处于活动状态和投入使用的时间付费。 换句话说,企业只为他们消费的东西付费。
无服务器计算的一个例子
AWS Lambda 是无服务器产品最突出的例子之一。 它允许企业编写代码并将其上传到 Lambda。 在需要时,Lambda 可以通过运行代码来响应触发器来自动扩展应用程序。 当函数或 API 上的工作负载增加时,函数会扩展。 客户端按照亚秒级计费,即代码每执行100ms,代码被触发的次数向客户端收费。 这样,当没有执行代码时就不需要支付。
结论
尽管其独特性,无服务器产品并非没有局限性。 几个小功能可能会构成一个极其复杂的系统,如果软件应用程序很大,则更是如此。 管理这种复杂性的工具的可用性有限也使情况更加复杂。 尽管如此,无服务器计算仍将被视为企业必须处理的单一系统的解决方案。 它仍处于起步阶段,随着它在企业中获得越来越多的认可,组织仍在寻找使其为他们工作的方法。