CN113661480A - 用于确定无服务器应用的云计算部署修改的技术 - Google Patents
用于确定无服务器应用的云计算部署修改的技术 Download PDFInfo
- Publication number
- CN113661480A CN113661480A CN201980095210.4A CN201980095210A CN113661480A CN 113661480 A CN113661480 A CN 113661480A CN 201980095210 A CN201980095210 A CN 201980095210A CN 113661480 A CN113661480 A CN 113661480A
- Authority
- CN
- China
- Prior art keywords
- application
- ccd
- deployment
- modified
- serverless
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
描述了一种用于动态确定具有多个应用功能的无服务器应用的初始云计算部署(CCD)的修改的技术。初始CCD中的多个应用功能被分组到一个或多个部署工件中,每个部署工件包括至少一个应用功能,其中,每个部署工件与从FaaS和CaaS中选择的专用云计算平台类型相关联。本公开的装置被配置为获得针对无服务器应用或其部署的至少一个要求,以及获得无服务器应用的应用模型。该装置还被配置为:基于应用模型和至少一个要求来确定无服务器应用的经修改的CCD,其中,经修改的CCD包括被分组到一个或多个部署工件的多个应用功能的经修改的分组和特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,专用云计算平台类型是从至少FaaS和CaaS中选择的。
Description
技术领域
本公开涉及云计算。更详细地,本公开涉及确定无服务器应用的云计算部署的修改。本公开可以以装置、云计算系统、方法和计算机程序产品的形式来实现。
背景技术
云计算已成为针对大量计算需求的广泛解决方案。存在许多云计算的方法,并且下面将更详细地讨论一些示例。
平台即服务(PaaS)提供了一个云计算平台,其允许用户开发、运行和管理应用,而没有构建和维护基础设施的复杂性。亚马逊网络服务(AWS)Beanstalk是PaaS解决方案的一个示例。
容器即服务(CaaS)(例如,AWS ECS)是一种虚拟化形式,其中应用及其所有相关项(dependency)都被打包在易于跨系统移植的容器中。CaaS解决方案提供高度的控制和灵活性,而与供应商无关。使用单独的容器将单体应用拆分为单独的“微服务”并不少见。
功能即服务(FaaS)提供了一个平台,其允许用户开发、运行和管理不同的应用功能性或功能,而没有构建和维护底层基础设施的复杂性。可以以基于事件的方式触发这些功能。因此,整个软件逻辑可以轻松地被实现为功能和事件。FaaS平台在不持续调整运行容器的场景中是高效的。由于其简单性,FaaS平台有时也被称为“无服务器”平台。FaaS平台是可自动计量的,这意味着资源计费可以基于实际资源消耗,而不是先前声明的资源需求。FaaS解决方案的示例包括亚马逊网络服务(AWS)Lambda。
CaaS和FaaS解决方案具有其各自的优缺点。作为示例,如果需要灵活地安装和使用具有不同版本要求的软件(例如,不同的软件堆栈),容器是有帮助的。然而,配置CaaS架构(orchestration)平台以自动处理工作负载波动并不是容易的任务。在这方面,检测工作负载改变和实例化新(或移除旧)容器的过程不能立即执行,因此将总是存在运行时成本。另一方面,FaaS解决方案在涉及到即时检测和处理工作负载波动时提供了更高程度的灵活性。另一方面,对于具有许多相互关功能的复杂应用,FaaS解决方案并不容易实现。
发明内容
需要改进无服务器应用的部署。
根据一个方面,提供了一种用于动态确定具有多个应用功能的无服务器应用的初始云计算部署(CCD)的修改的装置,其中,初始CCD中的多个应用功能被分组到一个或多个部署工件(artifact)中,每个部署工件包括至少一个应用功能,其中,每个部署工件与从FaaS和CaaS中选择的专用云计算平台类型相关联。该装置被配置为获得针对无服务器应用或其部署的至少一个要求,以及获得无服务器应用的应用模型。该装置还被配置为:基于应用模型和至少一个要求来确定无服务器应用的经修改的CCD,其中,经修改的CCD包括被分组到一个或多个部署工件的多个应用功能的经修改的分组和特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,专用云计算平台类型是从至少FaaS和CaaS中选择的。
在一些变体中,初始CCD和经修改的CCD中的至少一个包括与平台类型FaaS相关联的第一部署工件和与平台类型CaaS相关联的第二部署工件。在这样的变体中,无服务器的CCD可以跨FaaS和CaaS平台类型进行优化。平台类型CaaS可以包括包含平台即服务(PaaS)工件的容器。
该装置被配置为:通过分析无服务器应用的代码和分析在无服务器应用的运行时期间进行的一个或多个测量中的至少一项来获得应用模型。该装置可以经由用户输入获得应用模型的至少一些方面。
应用模型可以定义无服务器应用的执行工作流。备选地或附加地,应用模型可以定义各个应用功能对外部化数据的各个项目的访问。作为示例,应用模型可以列出针对每个应用功能的外部化数据的项目。应用模型还可以指示相同的外部化数据的项目是否被两个或更多个应用功能访问。外部化数据的项目可以在特定部署工件的内部或在特定部署工件的外部。经修改的CCD可以导致部署工件与外部化数据的关联,该关联与初始CCD的对应关联不同。
该装置可以被配置为将应用模型和至少一个要求中的一个或多个表示为一组方程。在这样的实施方式中,可以使用方程解算器算法来确定经修改的CCD。此外,或在备选方案中,该装置可以被配置为基于应用功能的真子集导出中间CCD作为满足至少一个要求的部分解决方案。在这样的实现中,可以通过将至少一个应用功能添加到真子集以使得仍然满足至少一个要求来确定经修改的CCD。在上述实现中,该要求因此可以表示为必须由经修改的CCD(以及,可选地,由无服务器应用的任何CCD,包括初始CCS)满足的约束。
该装置可以被配置为在无服务器应用的运行时期间在其初始CCD中获得针对无服务器应用进行的至少一个测量。在这种情况下,可以基于或响应于至少一个测量来确定经修改的CCD。在第一种情况下,要求和应用模型中的至少一个可以是基于对至少一个测量的处理来获得的。在第二种情况下,至少一个测量可以触发对经修改的CCD的确定(例如,因为至少一个测量指示违反了性能条件)。
至少一个测量可以涉及各个应用功能的执行。备选地或附加地,至少一个测量可以涉及由各个应用功能或部署工件进行的外部化数据访问。在第一种情况下,各个应用功能的执行可以是按功能或按功能类型关于功能持续时间、功能调用率和功能入站带宽(inboundbandwidth)中的一个或多个进行测量的。在第二种情况下,外部化数据访问可以是按功能、按功能类型或按部署工件关于数据访问速率、数据访问带宽和数据访问持续时间中的一个或多个进行测量的。
经修改的CCD可以是对自创建初始CCD以来云计算硬件的变化和数据输入特性的变化中的至少一项的反应。这种变化可以由装置检测,例如基于至少一个测量,然后触发对经修改的CCD的确定。
至少一个要求可以以多种方式表示,例如表示为约束或目标。在一些变体中,至少一个要求与无服务器应用的性能相关。例如,性能以及要求可以用关键路径时延、功能恢复参数和所需的总硬件资源中的一个或多个来表示(例如,作为应用性能目标)。在这些变体中,至少一个要求可以由无服务器应用的用户或创建者设置。在其他变体中,至少一个要求可以由将与部署工件相关联的云计算平台类型产生(例如,作为应用特性约束)。在后一种变体中,至少一个要求可以由目标平台类型(例如,FaaS或CaaS)的平台运营商设置。在一些情况下,由云计算平台类型产生的一个要求可以是基于成本的。每个云计算平台类型都可以具有专用成本模型,并且要求可以定义无服务器应用的部署成本将被优化(例如,最小化)。
该装置可以被配置为触发安装经修改的云计算部署。在安装期间,部署工件(即,该组应用功能)可以部署在相关联的平台类型上。作为示例,要在FaaS平台类型上作为部署工件一起部署的应用功能可以被收集到具有组合和可选地压缩多个文件的格式的文件中(例如,在.zip或.tar文件中)。作为进一步的示例,要在CaaS平台类型上作为部署工件一起部署(即,要部署在容器中)的应用功能可以被编译为映像(例如,作为Docker映像)。
该装置可以被配置为将一个或多个应用功能构成的组打包到经修改的CCD的部署工件中。该装置还可以被配置为更新与该部署工件中的应用功能相关联的一个或多个应用编程接口(API)调用。此外,该装置可以被配置为将打包所得的部署工件与一个或多个库链接,该一个或多个库提供组内部或组外部功能调用和组内部或组外部数据访问中的至少一个。
此外,该装置可以被配置为基于应用模型和经修改的CCD来生成生命周期管理工作流。示例性工作流包括初始化工作流、安装工作流、卸载工作流、启动工作流和停止工作流。
还提供了一种云计算系统,其包括本文提出的装置和云计算资源,该云计算资源被配置用于根据初始CCD和经修改的CCD中的至少一个部署无服务器应用。
本公开的另一方面涉及一种动态确定具有多个应用功能的无服务器应用的初始CC的修改的方法,初始CCD中的多个应用功能被分组到一个或多个部署工件中,每个部署工件包括至少一个应用功能,其中,每个部署工件与从至少FaaS和CaaS中选择的专用云计算平台类型相关联。该方法包括获得无服务器应用或其部署的至少一个要求,以及获得无服务器应用的应用模型。该方法还包括该:基于应用模型和至少一个要求来确定无服务器应用的经修改的CCD,其中,经修改的CCD包括被分组到一个或多个部署工件的多个应用功能的经修改的分组和特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,专用云计算平台类型是从至少FaaS和CaaS中选择的。
该方法可以由如本文提出的装置来执行。因此,该方法可以包括如本文一般描述的其他步骤。
还提供了一种包括程序代码部分在内的计算机程序产品,当由一个或多个处理器执行程序代码部分时,该程序代码部分用于执行本文提出的方法方面中的任一个的步骤。该计算机程序产品可以存储在计算机可读记录介质上。
此外,提供了一种被配置为执行如本文提出的方法方面的云计算系统。
附图说明
根据以下示例性实施例的详细描述和附图,本公开的其他方面、细节和优点将变得显而易见,在附图中:
图1是示出了本公开的云计算系统实施例的示意图;
图2A、图2B是示出了本公开的两个动态修改装置实施例的示意框图;
图3是示出了本公开的动态修改方法实施例的流程图;
图4是示出了本公开的另一云计算系统实施例的示意图;
图5是示出了本公开的另一动态修改方法实施例的流程图;
图6是示出了基本生命周期管理工作流的生成的流程图;以及
图7是示出了启动工作流的生成的流程图。
具体实施方式
在下面的描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开的全面理解。然而,对本领域技术人员将显而易见的是:本公开可在脱离这些具体细节的其它实施例中实行。
例如,虽然下面的描述聚焦于示例性云计算系统配置,但本公开不限于这方面。此外,虽然将参考无服务器应用的示例性云计算部署来解释跨FaaS和CaaS平台的优化,但也可以实现其他类型的云计算部署将是很明显的。
本领域技术人员还将意识到,可使用单独的硬件电路、使用与编程的微处理器或通用计算机相结合的软件功能、使用一个或多个专用集成电路(ASIC)和/或使用一个或多个数字信号处理器(DSP)来实现在本文中解释的步骤、服务和功能。还将了解:当按照方法来描述本公开时,本公开也可以以一个或多个处理器和耦接到该一个或多个处理器的一个或多个存储器来体现,其中,该一个或多个存储器存储一个或多个计算机程序,该一个或多个计算机程序在由一个或多个处理器执行时执行本文公开的步骤、服务和功能。
在下面的示例性实施例的描述中,相同的附图标记表示相同或者相似的组件。
图1示出了可以实现本公开的云计算系统100的实施例。如图1所示,云计算系统100包括动态修改装置102,以下也称为动态修改器。云计算系统100还包括被配置用于在不同云计算部署(CCD)120、130中实现无服务器应用的云计算资源。更详细地,图1示出了无服务器应用的初始CCD 120和经修改的CCD 130。修改装置110被配置为基于输入信息的各个项目来确定无服务器应用的经修改的CCD 130作为输出。与无服务器应用的初始CCD 120相比,经修改的CCD 130在某些方面将被改进或优化。修改装置110可以以迭代方式操作,这意味着经修改的CCD 130可以在修改过程的进一步迭代中形成输入(“初始”)CCD。
初始CCD 120和经修改的CCD 130底层的无服务器应用被写入以在所谓的无服务器架构上执行。这尤其意味着无服务器应用包括多个应用功能,在图1的实施例中示例性地表示为f1至f6。应用功能f1至f6可以独立地并且以基于事件的方式被触发或调用。FaaS提供了一种平台类型,其允许开发人员响应于事件而执行代码,而没有构建和维护平台基础设施的复杂性。出于该原因,无服务器应用传统上运行在FaaS平台上。然而,已经发现跨FaaS和CaaS平台类型动态分布应用功能通常是有益的,现在将更详细地解释。
在CCD 120、CCD 130中,应用功能f1至f6被分组到多个部署工件或部署单元中。每个部署工件都与至少从FaaS和CaaS中选择的专用云计算平台类型相关联。
在图1的实施例中并参考初始CCD 120,无服务器应用的应用功能f1至f4被分组到与FaaS平台类型相关联的第一部署工件,而应用功能f5和f6被分组到与CaaS平台类型相关联的第二部署工件。更详细地,应用功能f5和f6被包括在容器中并在PaaS工件之上。该容器还包括本地状态存储。因此,无服务器应用的应用功能f1至f6跨FaaS和CaaS平台类型分布,并且这样的分布由经修改的CCD130维护。然而,如图1所示,在经修改的CCD 130中,仅无服务器应用的应用功能f1保留在与FaaS平台类型相关联的第一部署工件中,而应用功能f2至f4已被分组到第一容器中与CaaS平台类型相关联的新的第二部署工件,并且应用功能f5和f6仍然被分组到第二容器中也与CaaS平台类型相关联的第三部署工件。两个CCD 120、130中的每一个都包括可从FaaS和CaaS平台类型访问的分布式状态存储。分布式状态存储可以存储需要被不同应用功能f1至f6访问的外化数据。
如图1所示,动态修改器110基于以各种方式获得的输入信息的集合来确定经修改的CCD 130。输入信息的一个项目是可以由无服务器应用的用户或程序员以及由FaaS和CaaS平台的运营商指定的要求。输入信息的另一个项目涉及无服务器应用的应用模型。该应用模型可以指示无服务器应用的执行工作流和由应用功能f1至f6对外部化数据的访问中的一个或两个。
图2A和图2B示出了图1的动态修改器110的两个实施例。
在图2A所示的实施例中,动态修改器110包括处理器202和耦接到处理器202的存储器204。动态修改器110还包括可选的输入接口206和可选的输出接口208。存储器204存储控制处理器202的操作的程序代码。
处理器202被配置为获得针对无服务器应用或其部署的至少一个要求(例如,经由输入接口206),并且获得无服务器应用的应用模型(例如,也经由输入接口206)。处理器202还被配置为基于应用模型和至少一个要求来确定无服务器应用的经修改的CCD130。在图1所示的实施例中,经修改的CCD 130包括-相对于初始CCD 120-多个应用功能f1至f6到不同部署工件的经修改的分组。在其他实现中,经修改的CCD 130可以包括初始CCD 120的特定部署工件与从至少FaaS和CaaS中选择的专用云计算平台类型的经修改的关联。例如,具有初始CCD 120的应用功能f1至f4的基于FaaS的部署工件可以已经被部署在经修改的CCD 130中的CaaS平台上。当然,这些方面可以组合在一起,因为应用功能f1至f6中的一个或多个不仅受到重新分组的影响,还将被托管在经修改的CCD 130中的不同平台类型上,如图1中应用功能f2至f4所示。
图2B示出了以模块化配置实现动态修改器110的实施例。如图2B所示,动态修改器110包括:第一获得模块210,其被配置为获得针对无服务器应用或其部署的至少一个要求;以及第二获得模块212,其被配置为获得无服务器应用的应用模型。动态修改器110还包括确定模块214,其被配置为基于应用模型和至少一个要求来确定无服务器应用的经修改的CCD,其中,经修改的CCD包括被分组到一个或多个部署工件的多个应用功能的经修改的分组以及特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,该专用云计算平台类型是从至少FaaS和CaaS中选择的。
图3在流程图300中示出了用于动态确定具有多个应用功能的无服务器应用的初始CCD的修改的方法实施例,其中,初始CCD中的多个应用功能被分组到一个或多个部署工件中,每个部署工件包括至少一个应用功能,其中,每个部署工件与从FaaS和CaaS中选择的专用云计算平台类型相关联。图3的方法实施例可以由上面在图1、图2A和图2B的上下文中讨论的动态修改器110来执行。
在步骤S302中,动态修改器110获得针对无服务器应用或其部署的至少一个要求。如图1所示,可以经由用户输入获得要求。在一些变体中,至少一个要求与无服务器应用的性能相关。在这些变体中,至少一个要求可以由无服务器应用的用户或创建者设置。在其他变体中,至少一个要求可以由将与部署工件相关联的云计算平台类型产生。在后一种变体中,至少一个要求可以由目标平台类型(例如,FaaS或CaaS)的平台运营商设置。当然,所有这些变体都可以根据多个要求进行组合。
在步骤S304中,动态修改器110获得无服务器应用的应用模型。可以相对于步骤S302以任何顺序执行步骤S304。在步骤304中获得的应用模型指示无服务器应用的执行工作流(例如,关于应用功能f1至f6的调用)和应用功能f1至f6对外部化数据的访问。可以经由用户对动态修改器110的输入来获得关于应用模型的信息。备选地或附加地,动态修改器110自身可以导出应用模型(例如,通过分析无服务器应用的程序代码或通过分析在初始CCD 120中的无服务器应用的运行时期间进行的测量)。
在步骤S306中,动态修改器110基于应用模型和至少一个要求,并且可选地基于关于初始CCD 120的信息(例如,运行时测量)来确定无服务器应用的经修改的CCD 130。可以以各种方式执行步骤S306。例如,应用模型和至少一个要求可以表示为一组方程,并且可以使用方程解算器算法来确定经修改的CCD 130。在另一个变体中,动态修改器110基于应用功能的真子集导出中间CCD作为满足至少一个要求的部分解决方案。然后将通过向真子集添加至少一个应用功能以使得仍然满足至少一个要求来确定经修改的CCD 130。
图4示出了图1的云计算系统100的附加细节。关键组件仍然是动态修改器110。可以在其中部署无服务器应用的示例性运行时环境402(作为初始CCD 120或经修改的CCD130,参见图1)包括例如FaaS平台、(例如,作为容器操作的)基于库的PaaS(具有PaaS库的CaaS)或通过使用复合FaaS功能(具有PaaS库的FaaS)内的库组件被一起分组到复合FaaS平台功能的应用功能。对于这些平台类型中的每一个(例如,对于给定CCD 120、CCD 130的每个关联部署工件),都存储了性能统计。性能统计基于在运行时期间执行的测量。
仍然参考图4,来自运行时环境402的关于初始CCD 120的信息,特别是所测量的性能统计,被提供给动态修改器110。此外,动态修改器110还获得无服务器应用的应用模型和无服务器应用的性能目标的形式的要求。基于该输入,动态修改器110确定经修改的CCD130,如上所述。
关于经修改的CCD 130的信息然后由动态修改器110输出到平台适配器404。平台适配器404的主要任务包括将应用功能打包到各个部署工件中以及将来自存储设备406的库添加到所得包中。这些库提供工件内部和工件外部功能调用以及工件内部和工件外部读取和写入访问。由平台适配器404创建的应用功能包(即,部署工件)准备好上传到相关联的平台类型(即,FaaS和FaaS)。平台适配器404或其功能也可以集成到动态修改器110中。
基于部署工件、应用模型和经修改的CCD 130,应用生命周期管理器408生成所需的工作流(例如,启动、停止、安装和卸载工作流)。应用生命周期管理器408或其功能也可以集成到动态修改器110中。
部署工件、工作流等最终被传送到运行时环境402,使得经修改的CCD 130可以在那里执行。图4所示的过程可以以动态方式迭代重复。每次循环可以通过用户输入或响应于运行时环境402中针对初始CCD 120的测量来周期性地触发,该测量指示违反性能目标(例如,被定义为性能阈值),现在将参考图5的流程图500更详细地描述。
图5示出了在针对当前部署在运行时环境402中的无服务器应用迭代地确定经修改的CCD 130的上下文中动态修改器110、平台适配器404和应用生命周期管理器408(如图4所示)的联合操作。在图5的上下文中,通过跨FaaS和CaaS平台类型动态分布无服务器应用的应用功能,执行CCD修改以优化运行时环境402中无服务器应用的执行。图5所示的方法建立在上面参考图3讨论的方法的基础上。
由无服务器应用的用户/开发人员或云提供商,在测量表明超出性能阈值的情况下自动地,在步骤S502中周期性地触发用于CCD修改的新优化循环。在一些变体中,优化循环可以通过部署和测量无服务器应用的一系列生成的CCD版本来迭代运行,直到满足一个或多个要求(例如,性能阈值)或在预定义数量的循环之后。术语“版本”指的是当前部署在运行时环境402中并在优化循环期间评估的CCD。
在每次循环结束时,最终的“迁移到新部署版本”步骤S516可以由动态修改器110的用户手动调用或由应用管理器组件自动调用,该应用管理器组件由用户启用以便一旦新版本上线时触发迁移步骤。
优化循环在步骤S504开始,即获得各种输入参数。下面列出了示例性输入参数,其中一些已经在上面图3的步骤S302和S304的上下文中讨论:
1)包含无服务器应用的执行工作流的应用模型,列出针对每个功能的外部化数据项,并指示特定数据项是否被若干应用功能(例如,图1的实施例中的应用功能f1至f6)访问。应用模型可以由用户输入给出,从动态修改器110的程序代码分析导出,或(至少部分地)从针对当前部署的CCD在运行时环境402中的测量导出。
2)应用性能目标形式的要求。这样的目标可以经由用户输入获得。它们包括以下示例:
-关键路径上的时延(例如,作为优化约束或优化目标以用于后续优化过程,如在步骤S506中设置的)
-总云计算资源或成本(作为优化约束或优化目标,如在步骤S506中设置的)
-功能恢复要求(作为优化约束,如在步骤506中设置的)
3)由部署工件将在其上部署的目标平台类型(即,FaaS和CaaS)的平台运营商设置的目标或约束形式的要求。这样的目标的示例是部署工件的成本函数模板的集合。
4)对功能执行和数据访问统计的运行时测量(按功能和/或按平台)。测量的范围包括当前CCD/部署版本以及在先前的优化循环期间部署和测试的任何CCD/部署版本。例如,这种测量可以包含:
-按功能或功能类型:平均功能持续时间、功能调用率和功能入站带宽、平均下游调用率/比率和带宽
-按外部化数据访问(可选地按功能或功能类型):平均数据访问率和读/写访问的带宽
-每平台的平台特性:每功能类型的功能调用(例如,功能调用的平均持续时间)、每功能类型的每外部化数据项的数据访问(例如,读/写数据访问的平均持续时间)
5)运行时环境402中的硬件资源特性,例如处理器核的数量、可用存储器等。
6)运行时环境中的软件能力,例如对状态性库的支持
在进一步的步骤S508中,执行实际优化过程以确定经修改的CCD 130。在针对经修改的CCD 130的布局优化期间,动态修改器110构建无服务器应用的部署布局,预期该部署布局满足优化目标同时不违反任何优化约束(参见步骤506)。经修改的CCD 130的所得布局包括:
·应用功能的类同性规则(affinity rule)的集合,其定义了这些功能如何被分组到部署工件中;
·对于每个部署工件,对应运行工件的目标平台类型的引用。还针对功能调用添加了平台配置;
·应在特定部署工件的外部实现的外部化数据项的列表。从特定工件的角度来看,未被包括在列表中的外部化数据项可以在外部或内部实现。还包括所选择的外部化的配置。
为了在步骤S508中确定CCD布局,先前的优化函数(即,在步骤S506中)已经基于所获得的输入参数导出了一系列优化约束。作为组合由应用开发人员(或所有者)和平台提供商提供的各种优化目标的结果,它还创建了目标函数。这些约束和目标函数用于评估在优化过程期间找到的中间解决方案。
优化函数的示例性实现将应用模型和约束公式化为一系列方程并应用已知的方程解算器算法来找到满足描述约束的方程同时最小化目标函数的关联值的解决方案。一旦找到这样的解决方案,就输出所得的CCD布局。
在另一个示例性实现中,优化函数生成满足给定要求(例如,优化约束和目标)的部分解决方案。部分解决方案仅考虑给定无服务器应用的应用功能的真子集)。然后,优化函数使用尚未添加的功能扩展该部分解决方案,直到实际部分解决方案违反任何约束或成为完全解决方案(full solution)。在第一种情况下,优化函数减少该解决方案并尝试其他尚未添加的功能。在第二种情况下,它存储找到的解决方案并再次减少该解决方案以找到另一个可能更好的解决方案。当满足特定条件(扩展/减少的数量或找到的解决方案的数量)时,优化函数从考虑的候选中选择最佳解决方案作为经修改/优化的CCD布局的输出。
在下一步骤S510中,平台适配器404将相同类同性组中(即,与相同部署工件相关联)的应用功能打包在一起。此外,平台适配器404向部署工件添加库,这些库提供工件内部或工件外部功能调用以及工件内部或工件外部对包的读/写数据访问。平台适配器404还将关于用户功能中的调用和数据访问的API调用绑定到由经修改/优化的CCD布局定义的工件内部或外部后端(例如,通过在编译它们之前修改用户功能中的API调用和将它们链接到所选择的库)。作为步骤S510的结果,平台特定的部署工件准备好在运行时环境402中上传。例如,要部署在FaaS平台类型上的应用功能可能已被收集到tarball(或允许组合和可选地压缩多个文件的类似数据结构,例如.zip文件)。另一方面,要在CaaS平台类型上部署为容器的应用功能可能已被编译为Docker(或类似)镜像。
在进一步的步骤S514中,在步骤S516中实际迁移发生之前,生命周期管理器408基于无服务器应用的应用模型和在步骤S508中确定的经优化的CCD布局来生成基本生命周期管理工作流。因此,步骤S514针对每个FaaS平台生成初始化功能以及安装/卸载工作流和启动/停止工作流。
图6在流程图600中示出了工作流生成的方法实施例。图6所示的方法开始于步骤S602,即读取输入参数,输入参数包括各个数据项的初始值(如应用模型中定义的)和经优化的CCD布局。然后,基于经优化的CCD布局,在步骤S604中生成FaaS平台初始化功能。该功能负责初始化数据存储(如图1中针对初始CCD 120和经修改/优化的CCD 130示例性所示)中的变量并配置功能触发器(即,启动图1中的特定应用功能f1至f6的事件)。步骤S640包括以下子步骤:
1)基于应用模型针对在FaaS上实现的所有应用功能配置触发器(针对图1中的经修改/优化的CCD 130,将仅触发针对应用功能f1的触发器)。备选地,FaaS功能配置可以由用户代码实现,在这种情况下,相关的初始化功能部分为空。
2)基于应用模型中定义的初始值来初始化分布式数据存储中的外部化数据项。需要在分布式数据存储中实现的外部化数据项从经优化的CCD布局中导出。
在进一步的步骤S606中,生成安装和卸载工作流。下面列出了生成安装工作流所需的子步骤,而生成卸载工作流很简单。安装工作流生成步骤包括:
1)添加命令以将已经在步骤S510中被打包到针对FaaS平台类型的部署工件中的所有功能上传到实际FaaS平台。
2)添加命令以上传FaaS平台初始化功能(如步骤S604生成的)。
3)针对无服务器应用的当前部署版本创建并存储上下文ID。上下文ID定义了在FaaS平台上部署的应用功能的FaaS平台域名。
4)添加命令以将已经在步骤S510中构建的容器镜像加载到容器镜像储存库(例如,本地docker储存库)
然后,在步骤S608中,生成启动和停止工作流。图7的流程图700示出了生成启动工作流所需的步骤。启动工作流通常由生命周期管理器系统(参见图4中的附图标记408)或由独立程序(例如,shell脚本)执行。停止工作流很简单。术语应用容器是指部署选项,其中由当前优化循环的经优化的CCD布局选择的应用功能在本地库上的容器中运行。启动工作流按照以下顺序作为一系列命令被放在一起:
1)步骤S702:添加命令以读取上下文ID,该上下文ID标识FaaS平台上的应用上下文
2)步骤S704:添加命令以执行FaaS平台的初始化功能。一旦完成该步骤,无服务器应用的经修改/优化的CCD的FaaS平台部分准备好被执行。
3)步骤S706:添加命令以运行在管理状态下(即,在特定应用功能的管理状态下,其中可以调用和执行该功能)的在FaaS上实现的所有应用功能。
4)步骤S708:添加命令以运行启动具有初始值的基于CaaS的容器。这些值取自应用模型,并过滤存储在容器内的外部变量。
5)步骤S710:添加命令以启用针对应用功能的外部(例如,基于事件的)触发器。
在完成这些步骤之后,实际迁移发生在步骤S516中。在最简单的实现中,分别使用对应的停止和启动工作流,停止无服务器应用的初始CCD 120并启动经修改的CCD 130。
从上述实施例的描述中已经显而易见,可以提供针对无服务器应用的经优化的CCD布局,其通过跨FaaS和CaaS平台类型进行优化来改进应用性能和/或降低超出现有优化工具的能力的操作成本。运行时期间的优化和调整为无服务器应用开发人员提供了一种通过动态提供应用性能目标来控制运行时特性的手段。在没有优化的情况下,应用性能控制是复杂的任务,因为它依赖于底层计算、网络和存储软硬件的复杂特性,这些特性很大程度上是从开发人员提取出来的。
应用性能还取决于需要跨刀片(blade)移动以运行应用功能的实际数据量,这也可以根据本公开进行考虑。动态优化确保无服务器应用可以动态地适应不断变化的硬件(例如,在分布式计算DC系统的不同边缘中实例化时)或不断变化的输入特性,而无需重写程序代码。此外,在优化无服务器应用的整体部署成本的要求中,可以考虑FaaS和CaaS实现的专用成本模型。
应当理解,已经参考可以在许多方面变化的示例性实施例描述了本公开。因此,本发明仅由所附权利要求来限定。
Claims (29)
1.一种用于动态确定具有多个应用功能的无服务器应用的初始云计算部署CCD(120)的修改的装置(110),所述初始CCD中的所述多个应用功能被分组到一个或多个部署工件中,每个部署工件包括至少一个应用功能,其中,每个部署工件与专用云计算平台类型相关联,所述专用云计算平台类型是从至少功能即服务FaaS和容器即服务CaaS中选择的,所述装置被配置为:
获得(210)针对所述无服务器应用或所述无服务器应用的部署的至少一个要求;
获得(212)所述无服务器应用的应用模型;以及
基于所述应用模型和所述至少一个要求来确定(214)所述无服务器应用的经修改的CCD(130),其中,所述经修改的CCD包括被分组到一个或多个部署工件的所述多个应用功能的经修改的分组和特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,所述专用云计算平台类型是从至少FaaS和CaaS中选择的。
2.根据权利要求1所述的装置,其中,
所述初始CCD和所述经修改的CCD中的至少一个包括与平台类型FaaS相关联的第一部署工件和与平台类型CaaS相关联的第二部署工件。
3.根据前述权利要求中任一项所述的装置,其中,
所述平台类型CaaS包括容器,所述容器包括平台即服务PaaS工件。
4.根据前述权利要求中任一项所述的装置,其中,
所述装置被配置为通过下述中的至少一个来获得所述应用模型:分析所述无服务器应用的代码,和分析在所述无服务器应用的运行时期间进行的一个或多个测量。
5.根据前述权利要求中任一项所述的装置,其中,
所述应用模型定义所述无服务器应用的执行工作流。
6.根据前述权利要求中任一项所述的装置,其中,
所述应用模型定义各个应用功能对外部化数据的各个项目的访问。
7.根据权利要求6所述的装置,其中,
外部化数据的项目在特定部署工件的内部或在特定部署工件的外部。
8.根据权利要求6或7所述的装置,其中,
所述经修改的CCD导致部署工件与外部化数据的关联,所述关联与所述初始CCD的关联不同。
9.根据前述权利要求中任一项所述的装置,被配置为
将所述应用模型和所述至少一个要求中的一个或多个表示为一组方程,并使用方程解算器算法来确定所述经修改的CCD。
10.根据前述权利要求中任一项所述的装置,被配置为
在所述应用功能的真子集的基础上,导出中间CCD作为满足所述至少一个要求的部分解决方案,并通过将至少一个应用功能添加到所述真子集以使得仍然满足所述至少一个要求来确定所述经修改的CCD。
11.根据前述权利要求中任一项所述的装置,被配置为
获得在所述无服务器应用的运行时期间在所述无服务器应用的初始CCD中针对所述无服务器应用进行的至少一个测量,其中,所述经修改的CCD是基于或响应于所述至少一个测量而确定的。
12.根据权利要求11所述的装置,被配置为
所述要求和所述应用模型中的至少一个是基于对所述至少一个测量的处理来获得的。
13.根据权利要求11或12所述的装置,其中,
所述至少一个测量涉及以下中的一项或多项:
-各个应用功能的执行;以及
-各个应用功能或部署工件进行的外部化数据访问。
14.根据权利要求13所述的装置,其中,
所述各个应用功能的执行是按功能或按功能类型关于功能持续时间、功能调用率和功能入站带宽中的一个或多个进行测量的。
15.根据权利要求13或14所述的装置,其中,
所述外部化数据访问是按功能、按功能类型或按部署工件关于数据访问速率、数据访问带宽和数据访问持续时间中的一个或多个进行测量的。
16.根据前述权利要求中任一项所述的装置,其中,
所述经修改的CCD是对自创建所述初始CCD以来云计算硬件的变化和数据输入特性的变化中的至少一项的反应。
17.根据前述权利要求中任一项所述的装置,其中,
所述至少一个要求与所述无服务器应用的性能相关。
18.根据权利要求17所述的装置,其中,
所述性能用关键路径时延、功能恢复参数和所需的总硬件资源中的一个或多个来表示。
19.根据前述权利要求中任一项所述的装置,其中,
所述至少一个要求由将与部署工件相关联的云计算平台类型产生。
20.根据前述权利要求中任一项所述的装置,被配置为
触发对所述经修改的云计算部署的安装。
21.根据前述权利要求中任一项所述的装置,被配置为
将一个或多个应用功能构成的组打包到所述经修改的CCD的部署工件中;以及
更新与该部署工件中的应用功能相关联的一个或多个应用编程接口API调用。
22.根据权利要求21所述的装置,被配置为
将打包得到的部署工件与一个或多个库链接,所述一个或多个库提供以下至少一项:
-工件内部或工件外部的功能调用;以及
-工件内部或工件外部的数据访问。
23.根据前述权利要求中任一项所述的装置,被配置为
基于所述应用模型和所述经修改的CCD来生成生命周期管理工作流。
24.一种云计算系统(100),包括:
根据权利要求1至23中任一项所述的装置(110);以及
云计算资源(402),被配置用于根据初始CCD和经修改的CCD中的至少一个来部署无服务器应用。
25.一种动态确定具有多个应用功能的无服务器应用的初始云计算部署CCD(120)的修改的方法(300),所述初始CCD中的所述多个应用功能被分组到一个或多个部署工件中,每个部署工件包括至少一个应用功能,其中,每个部署工件与专用云计算平台类型相关联,所述专用云计算平台类型是从至少功能即服务FaaS和容器即服务CaaS中选择的,所述方法包括:获得(S302)针对所述无服务器应用或所述无服务器应用的部署的至少一个要求;
获得(S304)所述无服务器应用的应用模型;以及
基于所述应用模型和所述至少一个要求来确定(S304)所述无服务器应用的经修改的CCD(130),其中,所述经修改的CCD包括被分组到一个或多个部署工件的所述多个应用功能的经修改的分组和特定部署工件与专用云计算平台类型的经修改的关联中的至少一个,所述专用云计算平台类型是从至少FaaS和CaaS中选择的。
26.根据权利要求25所述的方法,由根据权利要求1至23中任一项所述的装置执行。
27.一种计算机程序产品,包括程序代码部分,所述程序代码部分用于在由一个或多个处理器执行时执行根据权利要求25和26中任一项所述的步骤。
28.根据权利要求27所述的计算机程序产品,存储在计算机可读记录介质上。
29.一种云计算系统(100),被配置为执行根据权利要求25或26所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2019/059375 WO2020207595A1 (en) | 2019-04-12 | 2019-04-12 | Technique for determining cloud computing deployment modifications for serverless applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113661480A true CN113661480A (zh) | 2021-11-16 |
Family
ID=66218091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980095210.4A Pending CN113661480A (zh) | 2019-04-12 | 2019-04-12 | 用于确定无服务器应用的云计算部署修改的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11907763B2 (zh) |
EP (1) | EP3953812A1 (zh) |
CN (1) | CN113661480A (zh) |
WO (1) | WO2020207595A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209084B (zh) * | 2020-01-12 | 2022-11-15 | 苏州浪潮智能科技有限公司 | 一种faas分布式计算方法和装置 |
US20210240459A1 (en) * | 2020-01-31 | 2021-08-05 | Hewlett Packard Enterprise Development Lp | Selection of deployment environments for applications |
KR102426381B1 (ko) * | 2020-11-03 | 2022-07-29 | 스트라토 주식회사 | Api 요청 처리 시스템 |
US11979456B2 (en) * | 2022-01-14 | 2024-05-07 | Dell Products, L.P. | Cloud provisioning readiness verification |
US11868769B1 (en) * | 2022-07-27 | 2024-01-09 | Pangea Cyber Corporation, Inc. | Automatically determining and modifying environments for running microservices in a performant and cost-effective manner |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150199197A1 (en) | 2012-06-08 | 2015-07-16 | Stephane H. Maes | Version management for applications |
US10884807B2 (en) * | 2017-04-12 | 2021-01-05 | Cisco Technology, Inc. | Serverless computing and task scheduling |
US10255052B2 (en) | 2017-05-30 | 2019-04-09 | International Business Machines Corporation | Dynamic deployment of an application based on micro-services |
US10747568B2 (en) | 2017-05-30 | 2020-08-18 | Magalix Corporation | Systems and methods for managing a cloud computing environment |
US10671360B1 (en) * | 2017-11-03 | 2020-06-02 | EMC IP Holding Company LLC | Resource-aware compiler for multi-cloud function-as-a-service environment |
US10686678B2 (en) * | 2018-05-25 | 2020-06-16 | Hewlett Packard Enterprise Development Lp | Device for orchestrating distributed application deployment with end-to-end performance guarantee |
WO2019231364A1 (en) * | 2018-05-29 | 2019-12-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Improved performance of function as a service |
US10833933B2 (en) | 2018-09-28 | 2020-11-10 | Intel Corporation | Systems and methods for optimizing a cloud deployed service based on performance metrics of the cloud service |
US11385940B2 (en) * | 2018-10-26 | 2022-07-12 | EMC IP Holding Company LLC | Multi-cloud framework for microservice-based applications |
US11922220B2 (en) * | 2018-11-08 | 2024-03-05 | Intel Corporation | Function as a service (FaaS) system enhancements |
EP3891605A1 (en) | 2018-12-05 | 2021-10-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus of providing a function as a service (faas) deployment of an application |
US10983767B2 (en) * | 2019-01-04 | 2021-04-20 | T-Mobile Usa, Inc. | Microservice-based software development |
US11042405B2 (en) * | 2019-01-10 | 2021-06-22 | Vmware, Inc. | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
-
2019
- 2019-04-12 WO PCT/EP2019/059375 patent/WO2020207595A1/en unknown
- 2019-04-12 EP EP19718133.2A patent/EP3953812A1/en active Pending
- 2019-04-12 US US17/436,772 patent/US11907763B2/en active Active
- 2019-04-12 CN CN201980095210.4A patent/CN113661480A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11907763B2 (en) | 2024-02-20 |
EP3953812A1 (en) | 2022-02-16 |
US20220188164A1 (en) | 2022-06-16 |
WO2020207595A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113661480A (zh) | 用于确定无服务器应用的云计算部署修改的技术 | |
US10282171B2 (en) | Application analyzer for cloud computing | |
Albert et al. | Formal modeling and analysis of resource management for cloud architectures: an industrial case study using real-time ABS | |
US8397227B2 (en) | Automatic deployment of Java classes using byte code instrumentation | |
US8327341B2 (en) | Integrating aspect oriented programming into the application server | |
US7886035B2 (en) | Profile service based deployment configuration | |
Kounev et al. | The descartes modeling language | |
US10514898B2 (en) | Method and system to develop, deploy, test, and manage platform-independent software | |
US20090125886A1 (en) | Internal test and manipulation of an application | |
US8276125B2 (en) | Automatic discovery of the java classloader delegation hierarchy | |
KR101751515B1 (ko) | 테스트 실행 장치, 방법 및 컴퓨터 프로그램 | |
US11442765B1 (en) | Identifying dependencies for processes for automated containerization | |
US10409567B2 (en) | Trimming unused dependencies using package graph and module graph | |
Spinner et al. | Online model learning for self-aware computing infrastructures | |
US11151020B1 (en) | Method and system for managing deployment of software application components in a continuous development pipeline | |
Spinner et al. | A reference architecture for online performance model extraction in virtualized environments | |
US11750451B2 (en) | Batch manager for complex workflows | |
Walter et al. | Online learning of run-time models for performance and resource management in data centers | |
Ferry et al. | Towards meta-adaptation of dynamic adaptive systems with models@ runtime | |
Yeboah-Antwi et al. | Online Genetic Improvement on the java virtual machine with ECSELR | |
Danciu et al. | Performance awareness in Java EE development environments | |
Almeida et al. | Dynamic Adaptation of Cloud Computing Applications. | |
Kehrer et al. | Model-based generation of self-adaptive cloud services | |
Horn et al. | MELODIC: selection and integration of open source to build an autonomic cross-cloud deployment platform | |
Straesser et al. | Kubernetes-in-the-Loop: Enriching Microservice Simulation Through Authentic Container Orchestration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |