无服务器计算

2022-03-03 17:38车悦远
计算机与网络 2022年1期
关键词:开发人员日志消耗

车悦远

无服务器计算,它确实将开发人员和IT工程师从管理服务器硬件中解放出来,并允许应用程序按需运行,使其成为某些用例的理想方法。

无服务器计算是一种应用程序部署范例,允许应用程序按需运行,仅消耗执行它们所需的资源。相比之下,在传统计算模型中,应用程序不断运行(并消耗资源),即使它们不处理用户请求也是如此。

使用无服务器计算策略部署的应用程序通常称为无服务器功能。公共云供应商提供用于执行无服务器功能的服务,例如AWSLambda和AzureFunctions。开发人员还可以使用开源无服务器计算引擎OpenFaaS和Knative等平台在基于云或本地基础设施上自行设置无服务器环境。

无服务器计算———有时也称为事件驱动计算,因为无服务器功能需要服务器运行。但是,服务器资源在“幕后”进行管理,每个无服务器功能都由無服务器编排引擎按需执行。因此,尽管无服务器计算环境依赖于底层物理服务器,但部署无服务器功能的开发人员或IT工程师无需管理服务器硬件或操作系统环境。

无服务器计算如何工作

开发人员和IT工程师通常先将无服务器功能部署到无服务器计算环境中———这同样可以是基于云的服务或他们自己配置和管理的环境。这些功能本身可以是完整的应用程序,也可以是应用程序组件,如调整图像大小或扫描数据库。

接下来,团队设置确定功能何时执行的条件。例如,开发人员可以将无服务器功能配置为在另一个应用程序请求时执行,无服务器计算环境在满足预配置条件时自动执行功能。除了存储函数代码所需的磁盘空间(通常是最小的)之外,这些函数除非正在运行,否则不会消耗任何资源(无服务器环境可能会缓存一些资源以保持无服务器功能,以防它们在短时间内被重复调用,但为此目的分配的资源不如运行传统应用程序所需的资源多)。

无服务器计算的优势

无服务器计算提供了2个关键优势:简化的应用程序管理和更有效的资源消耗———这反过来转化为更低的成本。

简化的应用程序管理

由于无服务器计算将应用程序从底层服务器和操作系统中抽象出来,因此无服务器功能更易于部署和管理。开发人员和IT工程师无需担心为服务器配置操作系统、安装传统意义上的应用程序或配置运行传统操作系统环境所需的各种资源(如用户帐户、文件系统和软件库),使他们能够专注于代码,而不是托管它的环境。

资源和成本效率

由于无服务器功能仅在主动处理请求时消耗资源,因此比持续运行的传统应用程序更高效,即使它们没有被使用。

这种效率意味着更多的无服务器功能可以托管在单个服务器上,假设这些功能不会同时执行,意味着通过无服务器功能部署应用程序(或应用程序组件)的成本较低,尤是在处理计算或内存密集型应用程序时。

对于传统应用程序,组织会持续为应用程序在需求高峰时期可能需要的计算和内存资源付费,即使它不会一直使用所有的这些资源(配置资源的自动扩展策略可能会在一定程度上减少这种浪费,但不完全)相比之下,使用无服务器功能企业只需为这些功能消耗的资源付费,不会在已经分配但实际上未被应用程序使用的资源上浪费金钱。

无服务器计算的缺点

尽管无服务器计算对于部署某些类型的应用程序(尤其是资源密集型应用程序)是一种有用的策略,但并非在所有情况下都是正确的方法,因为使用它存在许多缺点和限制。

平台依赖

迄今为止,围绕无服务器计算的标准相对较少。每个无服务器云服务或平台都需要以不同的方式构建、部署和管理无服务器功能。

出于这个原因,无服务器功能往往依赖于平台,如果不对功能和用于管理它们的规则进行重大更改,就很难从一个无服务器计算环境转移到另一个无服务器计算环境。

能见度有限

由于无服务器计算从使用无服务器环境的团队中抽象出服务器和操作系统,因此调试功能可能会更加困难。虽然大多数无服务器平台提供某种形式的日志记录,但通常受限于无服务器环境支持的可见性级别,无法检查完整的操作系统日志或跟踪整个托管堆栈的请求来解决问题。

安全挑战

使用无服务器计算本质上没有任何不安全之处。但是,在某些方面,无服务器环境可能更难以保护。缺乏对主机环境的完全控制意味着无法利用在操作系统级别运行的安全工具或监控。受限于无服务器环境支持的访问控制工具,大多数无服务器功能在共享服务器上运行,意味着您无法将您的功能与其他团队或组织的功能隔离,以降低其他用户功能中的安全风险。

成本

虽然无服务器计算是在只需要定期执行的资源密集型操作方面节省资金的好方法,但在无服务器环境中消耗的资源通常比通过传统应用程序托管(至少在云中)消耗的资源成本更高。换句话说,与在VM中运行相同代码相同的时间比,按单位计算,您将为无服务器函数消耗的计算和内存支付更多的费用。

无服务器计算示例

无服务器计算并非适用于每个用例,但无服务器功能已成功部署在各种常见设置中。

数据分析

解析和分析数据往往需要大量的计算资源,使得数据分析成为无服务器计算的一个很好用例,特别是当分析只需要定期执行时。

例如,如果应用程序需要每小时分析一次数据库,就可以在无服务器环境中运行分析功能。这样,无需为不必要的计算资源付费。

CI/CD操作

使用CI/CD架构的软件交付管道中的某些操作也可以使用无服务器功能来执行。例如,通常需要大量计算资源且仅定期发生的应用程序构建可以使用无服务器功能执行,以提高整个CI/CD管道的资源效率。

文件转换

文件转换是无服务器函数在现实使用中的另一个很好例子。如果应用程序需要重新格式化用户上传的文件或从一种格式(如WordDoc)转换为另一种格式(如PDF),无服务器功能是按需执行操作的好方法。

日志聚合和重组

如果有一个定期收集和/或重组大量日志文件的应用程序,无服务器功能是完成这项工作的明智方法,将能够在必要时执行计算密集型日志和重新格式化,而无需为任务分配超过所需的资源。

动态网站生成

可以在无服务器功能的帮助下托管严重依赖自定义、动态生成内容的网站。在此用例中,无服务器功能将在用户请求时运行生成动态内容所需的操作。无服务器计算是一种强大的技术,可以在节省资金的同时简化应用程序部署。

猜你喜欢
开发人员日志消耗
高效管理日志文件用命令行就可以
读扶贫日志
学会爱自己
Semtech发布LoRa Basics 以加速物联网应用
雅皮的心情日志
雅皮的心情日志
Clear Your Mental Space
If We Burne d All the Fossil Fuel in the World
后悔了?教你隐藏开发人员选项
三星SMI扩展Java论坛 开发人员可用母语