acm-header
登录gydF4y2Ba

ACM通信gydF4y2Ba

贡献的文章gydF4y2Ba

无服务器计算的兴起gydF4y2Ba


云中写道:服务器死了,服务器万岁gydF4y2Ba

信贷:彼得•博林格gydF4y2Ba

一般来说,云计算,特别是基础设施即服务(IaaS),已经被广泛接受并采用了随需提供虚拟机(VM)的计算范式。到2020年,67%的企业IT基础设施和软件支出将用于基于云的产品。gydF4y2Ba16gydF4y2Ba

回到顶部gydF4y2Ba

关键的见解gydF4y2Ba

ins01.gif

企业IT越来越多地采用云的一个主要因素是其现收现付(pay-as-you-go)模式,即客户只需支付从云提供商租用的资源,并能够在没有预先成本的情况下获得所需的尽可能多的资源(弹性)。gydF4y2Ba2gydF4y2Ba不幸的是,扩展的负担留给了开发人员和系统设计人员,他们通常使用过度配置技术来处理服务请求的突然激增。对报告的数据中心云资源使用情况的研究gydF4y2Ba19gydF4y2Ba显示了云客户分配和支付的资源(租用虚拟机)与实际资源利用率(CPU、内存等)之间的巨大差距。gydF4y2Ba

无服务器计算正在成为云应用程序部署的一种新的、引人注目的范式,这在很大程度上是由于最近企业应用程序架构向容器和微服务的转移。gydF4y2Ba23gydF4y2Ba使用无服务器可以实现现收现付,无需进行启动和停止服务器的额外工作,更接近云计算被视为实用工具的最初预期。gydF4y2Ba2gydF4y2Ba使用无服务器计算的开发人员可以节省成本和可伸缩性,而不需要拥有高水平的云计算专业知识,这是耗时的。gydF4y2Ba

由于其简单和经济的优势,无服务器计算越来越受欢迎,正如谷歌Trends报道的“无服务器”搜索词的增长速度。预计到2021年,其市场规模将增长到77.2亿。gydF4y2Ba10gydF4y2Ba大多数著名的云提供商,包括Amazon、IBM、Microsoft、谷歌和其他公司,都已经发布了无服务器计算功能,并在行业和学术机构的推动下推出了一些额外的开源努力(例如,参见CNCF无服务器云原生景观)gydF4y2Ba一个gydF4y2Ba).gydF4y2Ba

从IaaS客户的角度来看,无服务器范式的转变既是机遇,也是风险。一方面,它为开发人员提供了创建云应用程序的简化编程模型,该模型抽象了大部分(如果不是全部的话)操作问题。他们不再需要担心可用性、可伸缩性、容错、VM资源的过度/不足、服务器管理和其他基础设施问题。相反,他们可以专注于应用程序的业务方面。该范例还通过对执行时间而不是资源分配收费,降低了部署云代码的成本。另一方面,在无服务器的平台中部署此类应用程序具有挑战性,需要将设计决策交给平台提供者,这些设计决策涉及服务质量(QoS)监视、伸缩和容错属性等。应用程序的需求可能会发展到与平台的功能冲突的风险。gydF4y2Ba


减缓采用无服务器的主要挑战之一是缺乏工具和框架。gydF4y2Ba


从云提供商的角度来看,无服务器计算是控制整个开发堆栈的额外机会,通过高效优化和管理云资源来降低运营成本,提供一个鼓励在其生态系统中使用附加服务的平台,并降低编写和管理云规模应用程序所需的工作量。gydF4y2Ba

回到顶部gydF4y2Ba

定义Serverless计算gydF4y2Ba

无服务器计算可以通过对服务器的无名思考(或关心)来定义。开发人员不需要担心服务器管理和扩展的底层细节,只需要在处理请求或事件时付费。我们将无服务器定义如下:gydF4y2Ba

无服务器计算是一个平台,它向开发人员隐藏了服务器的使用情况,按需运行代码,自动伸缩,只在代码运行时计费。gydF4y2Ba

这个定义抓住了无服务器计算的两个关键特征:gydF4y2Ba

  • 只对正在运行的内容收费(即收即付)。gydF4y2Ba由于服务器及其使用不是无服务器计算模型的一部分,因此只在代码正在运行时付费是很自然的,而不是为空闲的服务器付费。由于执行时间可能很短,因此应该以细粒度的时间单位(如数百毫秒)收费,开发人员不需要支付服务器创建或销毁的开销(如VM引导时间)。这种成本模型对于必须偶尔运行的工作负载非常有吸引力;无服务器本质上支持“零扩展”,并避免为空闲服务器付费。对云提供商来说,最大的挑战是需要调度和优化云资源。gydF4y2Ba
  • 弹性从零扩展到“无穷大”。gydF4y2Ba由于开发人员无法控制运行他们代码的服务器,也不知道他们的代码运行在多少台服务器上,关于扩展的决定就留给了云提供商。开发人员不需要编写自动伸缩策略,也不需要定义机器级使用(CPU、内存等)如何转换为应用程序使用。相反,当有更多的需求时,它们依赖于云提供商自动启动更多的并行执行。开发人员还可以假定云提供商将负责服务器的维护、安全更新、可用性和可靠性监控。gydF4y2Ba

当今的无服务器计算通常倾向于小型的、自包含的计算单元,以使其更容易在云中管理和扩展。可以中断或重新启动的计算不能依赖云平台来维持其状态。这固有地影响了无服务器计算编程模型。但是,由于需要一个持久的存储层,所以在状态方面没有等效的扩展到零的概念。然而,即使有状态服务的实现需要持久存储,提供商也可以提供即用即付定价模型,使状态管理无服务器化。我们看到供应商发布的服务扩展了无服务器的定义,这个定义可能会随着时间的推移而发展。例如,Amazon Aurora是一个“无服务器”的数据库服务,它支持强大的自动伸缩功能,但需要最少的内存和CPU分配,因此不会扩展到零,并有持续的成本。gydF4y2BabgydF4y2Ba

使用无服务器计算的最自然的方法是提供一段代码(函数),由无服务器计算平台执行。这导致了功能即服务(function -as-a-service, FaaS)平台的兴起,它专注于允许表示为函数的小段代码运行有限的时间(最多几分钟),由事件或HTTP请求(或其他触发器)触发执行,并且不允许保持持久状态(因为函数可能在任何时间重新启动)。通过限制执行时间和不允许功能保持持久状态,服务提供者可以轻松维护和扩展FaaS平台。云提供商可以根据需要分配服务器来运行代码,并且可以在功能完成后停止服务器,因为它们运行的时间有限。如果函数必须保持状态,那么它们可以使用外部服务来保持其状态。gydF4y2Ba

FaaS是无服务器计算原理的体现,我们将其定义如下:gydF4y2Ba

函数即服务(function -as-a- service)是一种无服务器的计算平台,其中计算单元是响应事件或HTTP请求等触发器而执行的函数。gydF4y2Ba

我们定义无服务器的方法与工业界新出现的无服务器定义一致。例如,云原生计算基金会(CNCF)定义了无服务器计算gydF4y2Ba11gydF4y2Ba作为“构建和运行不需要服务器管理的应用程序的概念。它描述了一种更细粒度的部署模型,将应用程序捆绑为一个或多个功能,上传到一个平台,然后根据当前所需的确切需求执行、扩展和计费。”虽然我们的定义接近CNCF的定义,但我们对无服务器计算和作为计算单元提供函数进行了区分。正如我们在研究挑战部分所讨论的那样,无服务器计算可能会扩展到包括其他方面,这些方面将超越当前相对严格的无状态函数,进入更大计算单元的长时间运行和有状态执行。然而,今天无服务器和FaaS经常互换使用,因为它们的含义很接近,FaaS是最流行的无服务器计算类型。gydF4y2Ba

Paul Johnston (ServerlessDays的联合创始人)对无服务器的定义如下:gydF4y2BacgydF4y2Ba“无服务器解决方案是指如果没有人使用它(不包括数据存储),那么运行它不需要任何成本。”这个定义突出了无服务器计算的最重要的特征——即用即付。它假设无服务器计算是云计算的一个子集,因此自动伸缩包括在内,开发人员不能访问服务器。CNCF和我们的定义不仅强调现收现付或“扩展到零”方面,还强调不需要管理服务器。gydF4y2Ba

定义无服务器计算的另一种方法是通过它所支持的功能。正如Steven Faulkner (LinkedIn的高级软件工程师)所描述的那样,这种方法强调“无服务器实际上是关于被管理的服务”,FaaS可以被视为云的“粘合剂”gydF4y2BadgydF4y2Ba).它是连接由云服务组成的应用程序的“粘合剂”。这样的定义只处理使用无服务器计算的一小部分用例,而我们的定义捕获了重要的用例,我们将在附带的侧栏中重点介绍这些用例。gydF4y2Ba

所有定义都一致认为,“无服务器计算”的名称并不意味着不使用服务器,而只是意味着开发人员可以将管理服务器和其他资源的大多数操作问题(包括供应、监视、维护、可伸缩性和容错)留给云提供商。gydF4y2Ba

回到顶部gydF4y2Ba

历史及相关工作gydF4y2Ba

术语“无服务器”可以追溯到它的原始含义,即不使用服务器,通常指的是点对点(P2P)软件或客户端解决方案。gydF4y2Ba28gydF4y2Ba在云环境中,目前的无服务器环境是在2014年AWS re: invention活动中介绍的。gydF4y2Ba3.gydF4y2Ba从那时起,多个云提供商、工业和学术机构都推出了自己的无服务器平台。随着VM和容器技术的发展和采用,无服务器似乎是自然发展的趋势,在这些技术中,抽象层的每一步都导致在资源消耗、成本和开发和部署速度方面更轻量级的计算单元。此外,无服务器构建在分布式系统、发布-订阅系统和事件驱动编程模型的长期趋势和进步之上,gydF4y2Ba12gydF4y2Ba包括演员模型、gydF4y2Ba1gydF4y2Ba反应性编程,gydF4y2Ba4gydF4y2Ba和活动数据库系统。gydF4y2Ba25gydF4y2Ba

无服务器平台可以被认为是平台即服务(PaaS)的一种进化,由云计算、Heroku和谷歌应用程序引擎(GAE)等平台提供。PaaS由NIST定义gydF4y2BaegydF4y2Ba因为“提供给使用者的功能是将使用者使用提供者支持的编程语言和工具创建的或获得的应用程序部署到云基础设施上。使用者不管理或控制底层云基础设施,包括网络、服务器、操作系统或存储,但可以控制已部署的应用程序,可能还有应用程序托管环境配置。”在这个定义中,期望用户管理应用程序的部署,并控制宿主环境配置。gydF4y2Ba

与PaaS的这个定义相比,无服务器FaaS去掉了用户对托管的控制,从而提供了更简单的扩展和更有吸引力的计费模型:云提供商控制托管环境的配置,只在调用用户提供的代码时运行,只对实际使用进行计费,同时隐藏了扩展的复杂性(实际上在PaaS中实现自动扩展并不容易,很难扩展到零)。与上一代PaaS(可以被认为是第一代PaaS)相比,这是一个显著的变化,它对不需要为空闲资源付费和避免管理自动伸缩规则的PaaS用户非常有吸引力。gydF4y2Ba

无服务器平台的主要区别在于透明的自动伸缩和只在代码运行时细粒度的资源收费。这不应该与自由使用配额相混淆,在自由使用配额中,有有限的每月资源配额,但即使应用程序没有使用也要计算。例如,GAE标准以“实例小时”定价gydF4y2BafgydF4y2Ba即使应用没有被使用,实例也会一直运行。后来,GAE添加了具有更细粒度计费单元的Flexible版本,但即使不使用服务器,开发人员也将被计费。这可能会导致意想不到的结果,当账单到达月底,忘记的测试服务。gydF4y2BaggydF4y2Ba

移动后端即服务(MBaaS)或更广义的后端即服务(BaaS)与无服务器计算非常相似。其中一些服务甚至提供“云功能”(例如,Facebook现已停止的Parse cloud Code)。然而,这样的代码通常仅限于移动用例。gydF4y2Ba

软件即服务(SaaS)可能支持用户提供的功能的服务器端执行,但它们是在应用程序上下文中执行的,因此受限于应用程序域。一些SaaS供应商允许集成驻留在其他地方并通过API调用调用的任意代码。例如,谷歌工作应用程序中的谷歌应用程序市场就使用了这种方法。gydF4y2Ba

定义无服务器计算功能的边界与PaaS和SaaS重叠。对无服务器进行分类的一种方法是考虑开发人员对基础设施控制的不同级别。在IaaS模型中,开发人员对资源有更多的控制,但是要负责管理应用程序代码和操作基础设施。这为开发人员提供了极大的灵活性和自定义应用程序和基础设施的各个方面的能力,例如管理vm、管理容量和利用率、调整工作负载、实现容错和高可用性。PaaS抽象出vm并负责管理底层操作系统和容量,但是开发人员要负责由平台部署和运行的代码的整个生命周期,这并不会缩小到零。SaaS代表了另一种情况,在这种情况下,开发人员无法控制基础设施,只能访问预先打包的组件。开发人员可以在那里存放代码,尽管这些代码可能与平台紧密耦合。BaaS类似于SaaS,其功能针对特定的用例和组件,例如,MBaaS提供移动开发所需的后端功能,如管理推送通知,当它允许开发人员运行代码时,它是在后端功能(参见gydF4y2Ba表1gydF4y2Ba).gydF4y2Ba

t1.jpg
表1。对云即服务的不同选择的比较。gydF4y2Ba

回到顶部gydF4y2Ba

体系结构gydF4y2Ba

FaaS框架的核心功能就是事件处理系统的功能,如所示gydF4y2Ba图1gydF4y2Ba。该服务管理一组用户定义的函数(又称操作)。一旦通过HTTP从事件数据源(也就是触发器)接收到请求,系统将确定哪个操作应该处理事件,创建一个新的容器实例,将事件发送到函数实例,等待响应,收集执行日志,使响应对用户可用,并在不再需要时停止函数。gydF4y2Ba

f1.jpg
图1。高级无服务器FaaS平台架构。gydF4y2Ba

FaaS提供的抽象级别是独一无二的:一个短期运行的无状态函数。事实证明,这既足够表达,可以构建有用的应用程序,又足够简单,允许平台以应用程序不可知的方式自动伸缩。gydF4y2Ba

虽然体系结构相对简单,但挑战在于在实现这些功能的同时考虑成本、可伸缩性、延迟和容错性等指标。为了在多租户环境中隔离不同用户的功能执行,容器技术gydF4y2Ba9gydF4y2Ba例如Docker,经常被使用。gydF4y2Ba

在事件到达时,平台继续验证事件,确保它具有适当的身份验证和执行授权。它还检查该特定事件的资源限制。一旦事件通过验证,事件的平台将排队等待处理。worker获取请求,分配适当的容器,将函数代码从存储使用复制到容器中,并执行事件。该平台还为空闲的函数实例管理停止和释放资源。gydF4y2Ba

而为每个函数调用创建、实例化和销毁新容器的代价可能很高,并且会引入总体延迟,这称为gydF4y2Ba冷启动问题。gydF4y2Ba相反,热容器是已经实例化并执行了函数的容器。冷启动问题可以通过一些技术来缓解,例如维护未实例化的干细胞容器池(这些容器以前已经实例化过,但没有分配给特定用户),或者重用以前为相同用户调用过的热容器。gydF4y2Ba7gydF4y2Ba另一个可能影响延迟的因素是用户函数对特定库(例如numpy)的依赖,这些库必须在函数调用之前下载和安装。为了减少云功能的启动时间,可以适当地跨节点worker缓存最重要的包,从而减少启动时间。gydF4y2Ba24gydF4y2Ba

在典型的无服务器云产品中,唯一允许客户配置的资源配置是分配给功能的主内存的大小。系统将按照主存大小的比例分配其他计算资源(例如CPU)。大小越大,CPU分配越高。资源使用是按小增量(例如,100ms)进行测量和计费的,用户仅为功能运行时所使用的时间和资源付费。gydF4y2Ba

工业界和学术界都有一些开源的无服务器计算框架(例如,Kubeless、OpenLambda、OpenWhisk、OpenFaaS)。此外,主要的云供应商(如Amazon、IBM、谷歌和Microsoft)都为其消费者提供了公开的商业无服务器计算框架。虽然这些平台的一般属性(例如,内存、并发调用、请求的最大执行持续时间)是相对相同的,但每个云提供商设置的限制是不同的。注意,这些属性的限制是一个移动的目标,并且随着云提供商采用新特性和优化而不断变化。评估不同的无服务器平台的性能以确定两者之间的取舍是最近的一个研究主题,gydF4y2Ba17gydF4y2Ba,gydF4y2Ba20.gydF4y2Ba,gydF4y2Ba26gydF4y2Ba最近还开发了一些基准来比较不同云提供商提供的无服务器服务。gydF4y2BahgydF4y2Ba

回到顶部gydF4y2Ba

编程模型gydF4y2Ba

典型的FaaS编程模型由两个主要原语组成:gydF4y2Ba行动gydF4y2Ba和gydF4y2Ba触发器。gydF4y2BaAction是执行任意代码的无状态函数。可以在调用方请求者不期望响应的情况下异步调用操作,也可以在调用方期望作为操作执行结果的响应的情况下同步调用操作。触发器是来自各种源的一类事件。操作可以直接通过REST API调用,也可以基于触发器执行。一个事件还可以触发多个函数(并行调用),或者一个动作的结果也可以是另一个函数的触发器(顺序调用)。一些无服务器框架为开发人员提供了更高层次的编程抽象,例如函数打包、排序和组合,这可能使构造更复杂的无服务器应用程序更容易。gydF4y2Ba

目前,无服务器框架只执行一个主函数,该函数接受一个字典(比如JSON对象)作为输入,并生成一个字典作为输出。它们的表现力有限,因为它们是按比例建造的。为了最大化可伸缩性,无服务器函数在执行之间不维护状态。相反,开发人员可以在函数中编写代码来检索和更新任何所需的状态。该函数还能够访问表示函数运行环境的上下文对象(例如安全上下文)。所示gydF4y2Ba图2gydF4y2Ba,用JavaScript编写的函数可以将JSON对象作为第一个参数,上下文作为第二个参数作为输入。gydF4y2Ba

f2.jpg
图2。用JavaScript编写的函数。gydF4y2Ba

当前的云提供商无服务器产品支持多种编程语言,包括Java、Python、Swift、c#和Node.js。一些平台还支持用任何语言编写的代码的可扩展性机制,只要它被打包在支持定义良好的API的Docker映像中。gydF4y2Ba

由于无服务器功能的有限性和无状态性,以及它对api组合的适用性,云提供商正在提供一个增值服务的生态系统,支持开发人员可能需要的不同功能,并且对于准备生产的应用程序是必不可少的。例如,一个函数可能需要从永久存储(如文件服务器或数据库)中检索状态,另一个函数可能使用机器学习服务来执行一些文本分析或图像识别。虽然由于无服务器保证,功能本身可能会扩展,但底层存储系统本身必须提供可靠性和QoS保证,以确保平稳运行。gydF4y2Ba

回到顶部gydF4y2Ba

工具和框架gydF4y2Ba

减缓采用无服务器的主要挑战之一是缺乏工具和框架。目前可用的工具和框架可以分为以下几类:开发、测试、调试和部署。针对这些类别提出了几种解决办法。gydF4y2Ba

几乎所有的云提供商都提供基于云的IDE,或者流行IDE的扩展/插件,允许开发人员编写和部署无服务器功能。它们还提供了一个带有SDK的本地容器环境,允许开发人员在将其部署到云设置中之前开发和测试本地无服务器功能。为了启用调试,开发人员可以使用函数执行日志和AWS X-Ray等最新工具gydF4y2Ba我gydF4y2Ba允许开发人员检测问题的潜在原因。gydF4y2Ba22gydF4y2Ba最后,还有开源框架gydF4y2BajgydF4y2Ba允许开发人员定义无服务器函数、触发器和函数所需的服务。这些框架将处理将这些功能部署到云提供商的问题。gydF4y2Ba

回到顶部gydF4y2Ba

用例gydF4y2Ba

无服务器计算已被用于支持广泛的应用程序。从基础设施的角度来看,无服务器和更传统的体系结构可以互换或组合使用。何时使用无服务器可能会受到其他非功能需求的影响,例如对所需操作的控制量、成本以及应用程序工作负载特征。gydF4y2Ba

从成本的角度来看,无服务器体系结构的好处对于bursty最为明显gydF4y2Ba5gydF4y2Ba,gydF4y2Ba27gydF4y2Ba工作负载。突发工作负载表现良好,因为开发人员将功能的弹性转移到平台,而且同样重要的是,功能可以扩展到零,因此当系统空闲时,消费者没有任何成本。gydF4y2Ba

目前有许多领域都在使用无服务器计算。gydF4y2Ba表2gydF4y2Ba提供在不同领域中使用的不同类型应用程序的代表性列表以及简短的描述。我们强调,这份清单并非详尽无遗;我们提供它来识别和讨论正在出现的模式。感兴趣的读者可以通过浏览云提供商公开提供的其他用例来找到示例。gydF4y2Ba

t2.jpg
表2。使用无服务器计算的实际应用程序。gydF4y2Ba

从编程模型的角度来看,无服务器函数的无状态特性使其应用程序结构类似于函数式响应式编程。这包括展示事件驱动和类流处理模式的应用程序(参见gydF4y2Ba缩略图创建的用例1侧边栏gydF4y2Ba).gydF4y2Ba

作为比较,考虑作为在一组已发放的vm上运行的应用程序实现的等效解决方案。应用程序中生成缩略图的逻辑相对简单,但是用户必须管理vm,包括监视流量负载、自动扩展应用程序和管理故障。在响应突发工作负载时,添加vm的速度也有限制,这迫使用户预测工作负载模式并为预先分配的资源付费。结果是总是会有空闲的资源,并且不可能缩减到零vm。此外,必须有一个组件监视对S3文件夹的更改,并将这些更改事件分派给其中一个应用程序实例。这个调度程序本身必须具有容错和自动扩展功能。gydF4y2Ba

另一类示例使用无服务器的应用程序是许多API的组合,控制两个服务之间的数据流,或通过聚合API调用简化交互的客户端代码(参见gydF4y2Ba用例2侧栏gydF4y2Ba).gydF4y2Ba

无服务器计算也可能对科学计算有用。有能力运行函数,不用担心缩放,只为使用的东西付费,这对计算实验来说是非常好的。计算密集型应用程序是一类开始获得发展势头的应用程序。gydF4y2Ba13gydF4y2Ba早期结果显示(见gydF4y2Ba用例3侧栏gydF4y2Ba)所实现的性能接近于专门的优化解决方案,并且可以在科学家喜欢的环境中完成,例如Python。gydF4y2Ba

如果工作负载不能轻松地划分为更小的单元(如Python函数),那么面向批处理的系统,如高性能计算(HPC)或MapReduce集群是更好的选择。如果对此类集群的需求可以持续,例如,通过在作业队列中提交作业并根据可用资源调度作业,那么工作负载可以更廉价地执行,尽管可能需要更长的时间来完成。成本比使用FaaS低,因为服务提供商可以通过购买实际服务器、使用供应商平台(如Databricks或BigQuery)或获得具有较长合同的预留vm来获得更便宜的vm。如果批处理工作负载可以容忍偶尔的重新启动,那么使用按需虚拟机(如AWS现货实例)运行此类工作负载可能更好。gydF4y2Ba

许多“诞生于云”的公司建立他们的服务来充分利用云服务。只要有可能,他们就会使用现有的云服务,并使用无服务器计算构建自己的功能。在无服务器计算之前,他们需要使用虚拟机并创建自动伸缩策略。无服务器计算具有可扩展到零和几乎无限的按需可伸缩性的能力,这使他们能够专注于将业务功能放在无服务器功能中,而不是成为底层云基础设施和服务器管理的专家gydF4y2Ba用例4侧边栏了解更多细节gydF4y2Ba).gydF4y2Ba

回到顶部gydF4y2Ba

挑战和局限性gydF4y2Ba

无服务器计算是向前迈出的一大步,得到了工业界的大量关注,并开始在学术界获得牵引。变化正在迅速发生,我们希望看到无服务器和FaaS的不同发展。虽然对无服务器有许多迫切的创新需求,gydF4y2Ba6gydF4y2Ba,gydF4y2Ba14gydF4y2Ba,gydF4y2Ba15gydF4y2Ba要实现无服务器计算的全部潜力,还需要解决一些重大挑战。基于作者组织的一系列无服务器研讨会的讨论(gydF4y2Bahttps://www.serverlesscomputing.org/workshops/gydF4y2Ba),以及几位学者gydF4y2Ba21gydF4y2Ba及工业调查(gydF4y2Bahttps://www.digitalocean.com/currents/june-2018/gydF4y2Ba),我们概述了以下挑战:gydF4y2Ba

编程模型和工具:由于无服务器函数的运行时间较短,因此组成应用程序的函数将多出多个数量级(例如,SparqTV;gydF4y2Bahttp://bit.ly/2xFktSbgydF4y2Ba),一个视频流媒体服务运行超过150个无服务器功能)。然而,这将使调试和识别瓶颈变得更加困难。假定对服务器的访问(例如,根特权)来监视和调试应用程序的传统工具不适用于无服务器应用程序,因此需要新的方法。虽然其中一些工具已经开始可用,但高级开发ide以及用于编排和组合应用程序的工具将非常关键。此外,平台可能需要扩展不同的恢复语义,比如至少一次或最多一次,或者更复杂的并发语义,比如序列化函数执行的原子性。同样,重构函数(例如,拆分和合并它们)以及恢复到较旧的版本,都必须得到无服务器平台的完全支持。虽然这些问题已经得到了工业界和学术界的广泛关注,gydF4y2Ba22gydF4y2Ba仍有很多进展要做。gydF4y2Ba

缺乏标准和厂商锁定:无服务器计算和FaaS是新事物,变化很快,目前没有标准。随着该领域的成熟,标准有望出现。同时,开发人员可以使用允许交换使用不同的无服务器计算提供者的工具和框架。gydF4y2Ba

回到顶部gydF4y2Ba

研究的机会gydF4y2Ba

由于无服务器是一个新的领域,研究社区有很多机会来解决。我们强调了一些选项:gydF4y2Ba

系统级的研究机会:gydF4y2Ba无服务器的一个关键区别是可以扩展到零,并且不向客户收取空闲时间费用。但是,扩展到零会导致冷启动的问题,特别是对于具有定制库需求的函数。gydF4y2Ba17gydF4y2Ba最小化冷启动问题同时仍可扩展到零的技术是至关重要的。目前正在研究的一个更基本的问题是,容器是否是运行无服务器应用程序的正确抽象,以及占用空间更小的抽象(如单内核)是否更合适。gydF4y2Ba

无服务器遗留代码:gydF4y2Ba无服务器应用程序设计从根本上不同于典型的遗留应用程序。现有代码的经济价值代表着开发人员在编码和调试软件上的无数小时的巨大投资。最重要的问题之一可能是,现有的遗留代码在多大程度上可以自动或半自动地分解为更小粒度的片段,以利用这些新经济。gydF4y2Ba

有状态serverless:gydF4y2Ba目前的无服务器平台大多是无状态的,未来是否会出现具有不同程度QoS的无状态服务器应用程序,而不牺牲可伸缩性和容错属性,这是一个有待解决的问题。gydF4y2Ba

服务水平协议(SLA):gydF4y2Ba无服务器计算将使开发服务变得更容易,但提供QoS保证仍然很困难。gydF4y2Ba17gydF4y2Ba,gydF4y2Ba27gydF4y2Ba虽然无服务器平台需要提供一些可伸缩性、性能和可用性方面的保证,但如果应用程序依赖于服务生态系统(如身份提供程序、消息传递队列和数据持久性),这些都不在无服务器平台的控制范围内,那么这就没什么用了。为了提供一定的QoS保证,无服务器平台必须将所需的QoS需求传递给依赖组件。此外,可能需要跨函数和api执行,通过对此类服务的仔细度量,或者通过第三方评估系统,或者通过自我报告,来识别瓶颈。gydF4y2Ba

边缘无服务器:gydF4y2Ba无服务器功能和边缘计算之间存在着天然的联系,因为随着物联网和其他移动设备的日益普及,事件通常在边缘产生。Barga将iRobot使用AWS Lambda和step函数进行图像识别描述为一个固有的分布式无服务器应用程序的例子。gydF4y2Ba8gydF4y2Ba最近,亚马逊通过发布AWS Greengrass,将其无服务器功能扩展到基于边缘的云环境。因此,运行在边缘和云中的代码可能不仅仅是嵌入的,而是虚拟化的,以允许设备和云之间的移动。这可能会导致重新定义成本的具体要求。例如,能源的使用可能比速度更重要。gydF4y2Ba

新的无服务器应用程序:无服务器编程模型本质上是不同的,但这应该是考虑构建或重建利用其所能提供的新的和创新的解决方案的动力。Pywren,gydF4y2Ba18gydF4y2BaExCamera,gydF4y2Ba13gydF4y2Ba高性能计算、数值分析和AI聊天机器人只是开发人员如何使用无服务器来提出新的解决方案和应用程序的一些例子。gydF4y2Ba

回到顶部gydF4y2Ba

结论gydF4y2Ba

无服务器计算是云应用程序开发的一种发展,例如功能即服务(Function-as-a-Service)模型,其中用户编写小函数,然后由云平台管理这些函数。该模型已被证明在许多应用程序场景中非常有用,从具有突发调用模式的事件处理程序到计算密集型的大数据分析。无服务器计算将监视和扩展大型应用程序的大量操作复杂性委托给平台提供者,从而降低了开发人员的门槛。然而,开发人员现在需要解决对其功能的无状态特性的限制,并理解如何将其应用程序的sla映射到无服务器平台和其他相关服务的sla。尽管仍然存在许多挑战,但是业界、学术界和开源项目提供的工具和编程模型已经取得了快速的进展。gydF4y2Ba

uf1.jpg
数字观看作者在独家报道中讨论这项工作gydF4y2Ba通信gydF4y2Ba视频。gydF4y2Ba//www.eqigeno.com/videos/the-rise-of-serverless-computinggydF4y2Ba

回到顶部gydF4y2Ba

参考文献gydF4y2Ba

1.角色语言概述。在gydF4y2Ba1986年SIGPLAN面向对象编程研讨会论文集gydF4y2Ba, 5867年。ACM,纽约,纽约。gydF4y2Ba

2.阿姆布鲁斯特等人。云计算的视图。gydF4y2BaCommun。ACM 53gydF4y2Ba, 4 (2010), 5058;gydF4y2Bahttps://m.www.eqigeno.com/magazines/2010/4/81493-a-view-of-cloud-computing/fulltextgydF4y2Ba

3.AWS re: invention 2014(mbl202)新发布:开始使用AWS lambda;gydF4y2Bahttps://www.youtube.com/watch?v=UFj27laTWQAgydF4y2Ba。gydF4y2Ba

4.E.巴诺姆吉沙,南卡罗来纳州卡莱顿,。莫斯廷克斯和缪特。反应式规划研究。gydF4y2BaACM第一版。测量员45gydF4y2Ba, 4(2013年8月),52:152:34。gydF4y2Ba

5.Baldini, I., Castro, P., Cheng, P., Fink, S., Ishakian, V., Mitchell, N., Muthusamy, V., Rabbah, R., Suter, P.为移动应用程序进行基于事件的云原生编程。在gydF4y2Ba《实习生会议录》移动软件工程与系统研讨会gydF4y2Ba, 2016, 287288。ACM,纽约,纽约。gydF4y2Ba

6.巴尔迪尼,我,等人。无服务器计算:当前趋势和开放问题。gydF4y2Ba云计算研究进展gydF4y2Ba,施普林格,2017,120。gydF4y2Ba

7.Baldini, Cheng, P, Fink, S.J, Mitchell, N, Muthusamy, V, Rabbah, R, Suter, P.和Tardieu, O.无服务器三难困境:无服务器计算的函数组合。在gydF4y2Ba2017 ACM SIGPLAN实习生论文集。计算机协会。关于编程和软件的新思想、新范式和反思。gydF4y2Ba

8.无服务器计算:重新定义云[互联网]。在gydF4y2Ba第一届实习生会议记录。无服务器计算研讨会gydF4y2Ba(2017年6月5日,美国佐治亚州亚特兰大);gydF4y2Bahttp://www.serverlesscomputing.org/wosc17/#keynotegydF4y2Ba

9.容器与云:从LXC到Docker再到Kubernetes。gydF4y2BaIEEE云计算1gydF4y2Ba(2014年9月),8184。gydF4y2Ba

10.Businesswire。2017年至2021年的全球预测:越来越多的人从Dev0ps转向无服务器计算,以推动整个功能即服务市场;gydF4y2Bahttps://bwnews.pr/2G3ZzQYgydF4y2Ba。gydF4y2Ba

11.CNCF无服务器白皮书;gydF4y2Bahttps://github.com/cncf/wg-serverless#whitepapergydF4y2Ba

12.埃齐奥尼和尼布利特。gydF4y2Ba活动中的事件处理。gydF4y2Ba曼宁出版公司,格林威治,康涅狄格州,2010年。gydF4y2Ba

13.弗拉迪,S.,瓦比,r.s.,沙克尔特,B., Balasubramaniam, K.,曾,W., Bhalerao, R., Sivaraman, A.,波特,G.和温斯坦,K.编码,快与慢:使用数千个小线程的低延迟视频处理。gydF4y2BaNSDIgydF4y2Ba(2017), 363376gydF4y2Ba

14.Fox, G.C, Ishakian, V., Muthusamy, V.和Slominski, A.工业和研究中无服务器计算和功能即服务(FaaS)的现状。技术报告;arXiv: 1708.08028, 2017gydF4y2Ba

15.亨德里克森、斯特德凡特、哈特;T., Venkataramani, V., Arpaci-Dusseau, a.c., Arpaci-Dusseau, R.H.使用openlambda的无服务器计算。在gydF4y2Ba八项诉讼程序gydF4y2BathgydF4y2BaUSENIX云计算热点专题研讨会gydF4y2Ba(美国科罗拉多州丹佛,2021年6月,2016年)。gydF4y2Ba

16.国际数据公司(IDC)。IDC FutureScape: 2017年全球IT产业预测。IDC # US41883016, 2016。gydF4y2Ba

17.Ishakian, V., Muthusamy, V.和Slominski, a .在无服务器平台上提供深度学习模型。在gydF4y2BaIEEE实习生论文集。云工程会议gydF4y2Ba, 2018年gydF4y2Ba

18.Jonas, E., Pu, Q., Venkataraman, S., Stoica, I.和Recht, B.占领云:99%的分布式计算。在gydF4y2Ba2017年赛普会录。在云计算。gydF4y2Ba

19.Kilcioglu, C. Rao, J.M. Kannan, A.和McAfee, R.P.公共云的使用模式和经济。在gydF4y2Ba二十六届会议的议事录gydF4y2BathgydF4y2Ba实习生。万维网gydF4y2Ba, 2017年gydF4y2Ba

20.Lee, H., Satyam, K.和Fox, G.C.生产无服务器计算环境的评估。在gydF4y2BaIEEE云会议论文集。无服务器计算研讨会gydF4y2Ba(旧金山,加州,2018)。gydF4y2Ba

21.Leitner, P., Wittern, E., Spillner, J.和Hummer, W.工业实践中功能即服务软件开发的混合方法实证研究;gydF4y2Bahttps://peerj.com/preprints/27005gydF4y2Ba

22.Lin W-T, Krintz, C, Wolski, R, Zhang M, Cai X, Li t, Xu W.跟踪AWS lambda应用中的因果顺序。在gydF4y2BaIEEE实习生论文集。云工程会议gydF4y2Ba, 2018年。gydF4y2Ba

23.NGINX。NGINX公布2016年未来应用程序开发和交付调查结果;gydF4y2Bahttp://bit.ly/2YM27e2/gydF4y2Ba。gydF4y2Ba

24.奥克斯,E.,杨,L.,胡克,K.,哈特,T., Arpaci-Dusseau, A.C.和Arpaci-Dusseau, R.H. Pipsqueak:拥有大型库的精益Lambdas。在gydF4y2Ba2017 IEEE论文集37gydF4y2BathgydF4y2Ba实习生。分布式计算系统研讨会gydF4y2Ba, 395400年。gydF4y2Ba

25.佩顿,N.W.和Díaz, o活跃的数据库系统。gydF4y2BaACM第一版。测量员31gydF4y2Ba, 1(1999), 63103。gydF4y2Ba

26.王亮、李敏、张颖、Ristenpart、T.和Swift M.在无服务器平台的窗帘后面偷看。在gydF4y2BaUSENIX年度技术会议论文集。gydF4y2Ba, 2018, 133146。USENIX协会。gydF4y2Ba

27.阎,M, Castro, P, Cheng, P, Ishakian, V.建立一个无服务器计算的聊天机器人。在gydF4y2Ba会议记录1gydF4y2Ba圣gydF4y2Ba实习生。事物混搭研讨会gydF4y2Ba, 2016年。gydF4y2Ba

28.叶,W.,可汗,人工智能和肯德尔,e.a。用于无服务器(P2P)网络的分布式网络文件存储。在gydF4y2Ba十一届会议记录gydF4y2BathgydF4y2BaIEEE实习生。Conf.网络gydF4y2Ba, 2003, 343347。gydF4y2Ba

回到顶部gydF4y2Ba

作者gydF4y2Ba

保罗•卡斯特罗gydF4y2Ba(gydF4y2Bacastrop@us.ibm.comgydF4y2Ba)是美国纽约州约克敦海茨IBM T.J.沃森研究中心的研究人员。gydF4y2Ba

Vatche IshakiangydF4y2Ba(gydF4y2Bavishakian@bentley.edugydF4y2Ba)是美国马萨诸塞州沃尔瑟姆本特利大学的助理教授。gydF4y2Ba

Vinod MuthusamygydF4y2Ba(gydF4y2Bavmuthus@us.ibm.comgydF4y2Ba)是美国德克萨斯州奥斯汀IBM人工智能研究中心的研究科学家。gydF4y2Ba

亚历山大SlominskigydF4y2Ba(gydF4y2Bahttps://aslom.netgydF4y2Ba)是位于美国纽约州约克敦高地的IBM T.J.沃森研究中心认知系统和服务部云平台无服务器组的研究人员。gydF4y2Ba

回到顶部gydF4y2Ba

脚注gydF4y2Ba

一个。gydF4y2Bahttps://s.cncf.io/gydF4y2Ba

b。gydF4y2Bahttps://aws.amazon.com/rds/aurora/serverless/gydF4y2Ba

c。gydF4y2Bahttp://bit.ly/2G3Hp1RgydF4y2Ba

d。gydF4y2Bahttp://bit.ly/2xzNEWBgydF4y2Ba

e。gydF4y2Bahttp://bit.ly/2lXCgkIgydF4y2Ba

f。gydF4y2Bahttp://bit.ly/2kuqZbhgydF4y2Ba

g。gydF4y2Bahttps://stackoverflow.com/questions/47125661/gydF4y2Ba

h。gydF4y2Bahttp://faasmark.com/gydF4y2Ba

我。gydF4y2Bahttps://aws.amazon.com/xray/gydF4y2Ba

j。gydF4y2Bahttps://serverless.com/gydF4y2Ba

回到顶部gydF4y2Ba

回到顶部gydF4y2Ba

回到顶部gydF4y2Ba

回到顶部gydF4y2Ba


©2019 0001 - 0782/19/12 ACMgydF4y2Ba

允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限gydF4y2Bapermissions@acm.orggydF4y2Ba传真(212)869-0481。gydF4y2Ba

数字图书馆是由计算机协会出版的。版权所有©2019 ACM, Inc.gydF4y2Ba


没有发现记录gydF4y2Ba

Baidu
map