什么是无服务器计算? 无服务器计算是云计算的一种执行模型,云计算提供商在其中动态分配,然后仅为执行特定代码片段所需的计算资源和存储向用户收费。当然,仍然涉及服务器,但它们的供应和维护完全由提供商负责。亚马逊的无服务器倡导者Chris Munns在2017年的一次会议上表示,“从团队编写和部署代码的角度来看,根本没有服务器可以管理或配置。这包括任何可能是裸机的东西,任何虚拟的东西,任何容器,任何涉及到管理主机、修补主机或在操作系统级别处理任何事情的东西,在无服务器的世界中都不是必须要做的事情。” 正如开发人员Mike Roberts所解释的那样,该术语曾被用于所谓的“后端即服务”场景,其中移动应用程序将连接到完全托管在云中的后端服务器。但是目前,当人们谈论无服务器计算或无服务器架构时,它们意味着是“功能即服务”产品,其中客户编写的代码只解决业务逻辑并将其上传到提供商。该提供程序负责所有硬件配置、虚拟机和容器管理,甚至是多线程等通常内置于应用程序代码中的任务。
无服务器功能是事件驱动的,这意味着只有在请求触发时才会调用代码。提供商仅对该执行所使用的计算时间收费,而不是维护物理服务器或虚拟服务器收取的每月固定费用。这些功能可以连接在一起以创建处理管道,或者它们可以作为更大应用程序的组件,与在容器中或在传统服务器上运行的其他代码交互。
无服务器计算的优点和缺点 从这个描述中,无服务器计算的两个最大好处应该是明确的:开发人员可以关注他们编写的代码的业务目标,而不是基础设施问题;组织只为他们实际使用的计算资源支付非常具体的费用,而不是购买物理硬件或租用大部分闲置的云计算实例。
正如行业专家Bernard Golden指出的那样,这一点对事件驱动的应用程序特别有益。例如,企业可能有一个大部分时间处于空闲状态的应用程序,但在某些条件下必须同时处理许多事件请求。或者,企业可能拥有一个应用程序来处理从有限性或间歇性全球互联网连接的物联网设备发送的数据。在这两种情况下,传统方法都需要配置一个能够处理峰值工作能力的强大服务器,但是大多数时候服务器都未得到充分利用。使用无服务器架构,企业只需为实际使用的服务器资源付费。无服务器计算也适用于特定类型的批处理。无服务器架构用例的规范示例之一是上载和处理一系列单个图像文件,并将它们发送到应用程序的另一部分的服务。
也许无服务器功能最明显的缺点是,它们是短暂的,并不适合长期任务。大多数无服务器提供商不会让企业的代码执行超过几分钟,当企业启动一个功能,它不会保留以前运行的实例中的任何状态数据。一个相关的问题是,无服务器代码可能需要几秒钟才能启动,这对于许多用例而言不是问题,但是如果企业的应用程序需要低延迟,则需要发出警告。
正如Rohit Akiwatkar和Gary Arora所指出的,许多其他缺点都与供应商锁定有关。尽管有可用的开源选项,但无服务器市场由大型商业云计算提供商主导,这将在稍后讨论。这意味着开发人员通常最终会使用其供应商提供的工具,这使得如果他们变得不满意就很难切换。而且,由于很多无服务器计算都是在供应商的基础设施上进行的,因此很难将无服务器代码集成到内部开发和测试管道中。