无服务器计算,尽管它的名字,需要服务器——但它确实将开发人员和IT工程师从管理服务器硬件中解放出来,并允许应用程序按需运行,使其成为某些用例的理想方法。
十年专注成都网站制作,企业网站建设,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站建设,高端网页制作,对汽车玻璃修复等多个领域,拥有多年的网站制作经验。无服务器计算是一种应用程序部署范例,它允许应用程序按需运行,仅消耗执行它们所需的资源。相比之下,在传统计算模型中,应用程序不断运行(并消耗资源),即使它们不处理用户请求也是如此。
使用无服务器计算策略部署的应用程序通常称为无服务器功能。公共云供应商提供用于执行无服务器功能的服务,例如AWSLambda和AzureFunctions。开发人员还可以使用开源无服务器计算引擎OpenFaaS和Knative等平台在基于云的或本地基础设施上自行设置无服务器环境。
术语“无服务器计算”——有时也称为事件驱动计算——有点误导,因为无服务器功能需要服务器运行。但是,服务器资源在“幕后”进行管理,每个无服务器功能都由无服务器编排引擎按需执行。因此,尽管无服务器计算环境依赖于底层物理服务器,但部署无服务器功能的开发人员或IT工程师无需管理服务器硬件或操作系统环境。
开发人员和IT工程师通常首先将无服务器功能部署到无服务器计算环境中——这同样可以是基于云的服务或他们自己配置和管理的环境。这些功能本身可以是完整的应用程序,也可以是应用程序组件,例如执行特定类型功能所需的代码,例如调整图像大小或扫描数据库。
接下来,团队设置确定功能何时执行的条件。例如,开发人员可以将无服务器功能配置为在另一个应用程序请求时执行。
从那里,无服务器计算环境在满足预配置条件时自动执行功能。除了存储函数代码所需的磁盘空间(通常是最小的)之外,这些函数除非正在运行,否则不会消耗任何资源。(无服务器环境可能会缓存一些资源以保持无服务器功能“温暖”,以防它们在短时间内被重复调用,但为此目的分配的资源不如运行传统应用程序所需的资源多。)
无服务器计算提供了两个关键优势:简化的应用程序管理和更有效的资源消耗——这反过来又转化为更低的成本。
(1) 简化的应用程序管理
由于无服务器计算将应用程序从底层服务器和操作系统中抽象出来,因此无服务器功能更易于部署和管理。开发人员和IT工程师无需担心为服务器配置操作系统、安装传统意义上的应用程序或配置运行传统操作系统环境所需的各种资源(如用户帐户、文件系统和软件库).
相反,无服务器计算使他们能够专注于他们的代码,而不是托管它的环境。
(2) 资源和成本效率
由于无服务器功能仅在主动处理请求时消耗资源,因此它们比持续运行的传统应用程序更高效,即使它们没有被使用。
这种效率意味着更多的无服务器功能可以托管在单个服务器上,假设这些功能不会同时执行。这也意味着通过无服务器功能部署应用程序(或应用程序组件)的成本通常较低,尤其是在处理计算或内存密集型应用程序时。
对于传统应用程序,组织会持续为应用程序在需求高峰时期可能需要的计算和内存资源付费,即使它不会一直使用所有这些资源。(配置资源的自动扩展策略可能会在一定程度上减少这种浪费,但不是完全。)相比之下,对于无服务器功能,企业只需为这些功能消耗的资源付费。不会在分配给应用程序但实际上未被应用程序使用的资源上浪费金钱。
尽管无服务器计算对于部署某些类型的应用程序(尤其是资源密集型应用程序)是一种有用的策略,但并非在所有情况下都是正确的方法,因为使用它存在许多缺点和限制。
(1) 平台依赖
迄今为止,围绕无服务器计算的标准化相对较少。每个无服务器云服务或平台都需要以不同的方式构建、部署和管理无服务器功能。
出于这个原因,无服务器功能往往依赖于平台,如果不对您的功能和用于管理它们的规则进行重大更改,就很难从一个无服务器计算环境转移到另一个无服务器计算环境。
(2) 能见度有限
由于无服务器计算从使用无服务器环境的团队中抽象出服务器和操作系统,因此调试功能可能会更加困难。虽然大多数无服务器平台提供某种形式的日志记录,但通常您无法检查完整的操作系统日志或跟踪整个托管堆栈的请求来解决问题。您受限于无服务器环境支持的可见性级别。
(3) 安全挑战
使用无服务器计算本质上没有任何不安全之处。但是,在某些方面,无服务器环境可能更难以保护。缺乏对主机环境的完全控制意味着您无法利用在操作系统级别运行的安全工具或监控。您还受限于无服务器环境支持的任何访问控制工具。大多数无服务器功能在共享服务器上运行,这意味着您无法将您的功能与其他团队或组织的功能隔离,以降低其他用户功能中的安全问题影响您的风险。
(4) 成本
虽然无服务器计算是在只需要定期执行的资源密集型操作上节省资金的好方法,但在无服务器环境中消耗的资源通常比通过传统应用程序托管(至少在云中)消耗的资源成本更高。换句话说,与在VM中运行相同代码相同的时间相比,按单位计算,您将为无服务器函数消耗的计算和内存支付更多费用。
无服务器计算并非适用于每个用例的正确方法,但无服务器功能已成功部署在各种常见设置中。
(1) 数据分析
解析和分析大量数据往往需要大量的计算资源。这使得数据分析成为无服务器计算的一个很好的用例,特别是当分析只需要定期执行时。
例如,如果您的应用程序需要每小时分析一次数据库,您可以在无服务器环境中运行分析功能。这样,您无需为必需的计算资源付费,除非它们被积极使用。
(2) CI/CD操作
使用CI/CD架构的软件交付管道中的某些操作也可以使用无服务器功能来执行。例如,通常需要大量计算资源且仅定期发生的应用程序构建可以使用无服务器功能执行,以提高整个CI/CD管道的资源效率。
(3) 文件转换
文件转换是无服务器函数如何在现实世界中使用的另一个很好的例子。如果应用程序需要重新格式化用户上传的文件或从一种格式(如WordDoc)转换为另一种格式(如PDF),无服务器功能是按需执行操作的好方法,而无需专门持续运行的进程到它。
(4) 日志聚合和重组
如果您有一个定期收集和/或重组大量日志文件的应用程序,无服务器功能是完成这项工作的明智方法。您将能够在必要时执行计算密集型日志聚合和重新格式化,而无需为任务分配超过所需的资源。
(5) 动态网站生成
可以在无服务器功能的帮助下托管严重依赖自定义、动态生成内容的网站。在此用例中,无服务器功能将在用户请求时运行生成动态内容所需的操作。
无服务器计算是一种强大的技术,可以在节省资金的同时简化应用程序部署。然而,由于平台锁定和有限控制等限制,重要的是通过坚持使用无服务器有意义的用例来战略性地使用无服务器功能。