US20210286648A1 - Scheduling and executing functions across different functions-as-a-service (faas) infrastructures - Google Patents
Scheduling and executing functions across different functions-as-a-service (faas) infrastructures Download PDFInfo
- Publication number
- US20210286648A1 US20210286648A1 US17/331,407 US202117331407A US2021286648A1 US 20210286648 A1 US20210286648 A1 US 20210286648A1 US 202117331407 A US202117331407 A US 202117331407A US 2021286648 A1 US2021286648 A1 US 2021286648A1
- Authority
- US
- United States
- Prior art keywords
- faas
- function
- infrastructure
- infrastructures
- computer system
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Definitions
- FaaS Functions-as-a-service
- functions-as-a-service is a computing model in which application developers upload modular chunks of application functionality, referred to as functions, to a cloud-based FaaS infrastructure. Once uploaded, a service layer of the FaaS infrastructure schedules and executes the functions on-demand (e.g., at the time of function invocation) on servers (i.e., hosts) of the infrastructure in an independent and scalable manner.
- FaaS can be implemented using private clouds or public clouds.
- a private cloud-based FaaS infrastructure is owned and operated by a single organization (using, e.g., the organization's on-premise server resources) for sole use by that organization.
- a public cloud-based FaaS infrastructure is owned and operated by a third-party FaaS provider and is made available for use by various customers (e.g., organizations, application developers, etc.). Since the customers are not responsible for operating/managing the server hardware of a public cloud-based infrastructure, this is sometimes refers to as a “serverless” solution.
- Most third-party FaaS providers charge customers for their use of the public cloud infrastructure via a consumption-based billing model (i.e., a model that charges per function invocation, per unit of function execution time, or based on some other resource consumption metric).
- FaaS infrastructure may have requirements regarding availability, performance, and scalability. These requirements can be difficult to meet on a strictly consistent basis if the public or private cloud backing the FaaS infrastructure experiences transient problems such as network congestion, excessive server load, hardware failures, power outages, and so on. These problems can be particularly acute for private clouds, since scalability is often limited due to pre-allocation of hardware resources and server availability/disaster recovery is often limited due to the use of a single or a few on-premise data centers.
- a computer system can determine that a function has been invoked, where the computer system implements a spanning FaaS service platform that is communicatively coupled with the plurality of different FaaS infrastructures.
- the computer system can retrieve metadata associated with the function, where the metadata includes criteria or policies indicating how the function should be scheduled for execution, and can retrieve information associated with each of the plurality of different FaaS infrastructures, where the information includes capabilities or characteristics of each FaaS infrastructure.
- the computer system can then select a FaaS infrastructure in the plurality of different FaaS infrastructures based on the retrieved metadata and the retrieved information and can schedule the function for execution on the selected FaaS infrastructure.
- FIG. 1 depicts a conventional FaaS infrastructure.
- FIG. 2 depicts a spanning FaaS service platform according to an embodiment.
- FIG. 3 depicts a workflow for uploading functions to the spanning FaaS service platform according to an embodiment
- FIG. 4 depicts a workflow for scheduling functions via the spanning FaaS service platform according to an embodiment.
- Embodiments of the present disclosure are directed to a FaaS service platform (referred to herein as “spanning FaaS”) that can schedule and execute functions across a plurality of different private cloud or public cloud-based FaaS infrastructures which are registered with the platform. For example, at a time a particular function is invoked, the spanning FaaS service platform can evaluate characteristics of the registered FaaS infrastructures and can select a particular infrastructure that is best suited for executing the function. In various embodiments, the spanning FaaS service platform can make this selection based on criteria/policies that are associated with the function itself and/or are defined at a higher level (e.g., application-level, deployment-level, etc.). The spanning FaaS service platform can then schedule execution of the function on the selected FaaS infrastructure.
- spanning FaaS a FaaS service platform
- the spanning FaaS service platform can offload the execution of functions from the private cloud-based FaaS infrastructure to one or more public cloud-based FaaS infrastructures in response to resource capacity/availability constraints that appear in the private cloud, and this offloading can continue until the on-premise constraints are lifted or resolved.
- the spanning FaaS service platform can enable new types of FaaS use cases with concomitant new benefits that were not possible before using conventional silo-ed FaaS implementations, such as dynamically scheduling function execution across different FaaS infrastructures in a manner that results in lowest monetary cost, highest performance, and so on.
- FIG. 1 is a simplified block diagram of a single conventional FaaS infrastructure 100 .
- FaaS infrastructure 100 includes a plurality of FaaS hosts 102 ( 1 )-(N) that are communicatively coupled with a FaaS service layer 104 and a FaaS image repository 106 .
- FaaS infrastructure 100 may be a private cloud-based infrastructure and thus the hardware resources (e.g., compute, storage, etc.) underlying components 102 ( 1 )-(N), 104 , and 106 may be part of an on-premise resource pool (i.e., private cloud) operated and managed by a particular organization for the sole use of that organization.
- an on-premise resource pool i.e., private cloud
- FaaS infrastructure 100 may be a public cloud-based infrastructure and thus the hardware resources underlying components 102 ( 1 )-(N), 104 , and 106 may be part of a publically-accessible resource pool (i.e., public cloud) operated and managed by a third-party FaaS provider for use by various customers.
- public cloud-based FaaS infrastructures include Amazon AWS Lambda, Microsoft Azure Functions, and Google Cloud Functions.
- FaaS infrastructure 100 In practice, application developers that wish to leverage FaaS infrastructure 100 can create and upload functions to infrastructure 100 that correspond to modular portions of functionality in their applications. For example, one such function may encapsulate program code for extracting data from a file, another such function may encapsulate program code for processing the extracted data in a certain way, and so on.
- These functions are maintained by FaaS infrastructure 100 in the form of function runtime images (which may be, e.g., executable files, container images, virtual machine images, etc.) in FaaS image repository 106 .
- function runtime images which may be, e.g., executable files, container images, virtual machine images, etc.
- a scheduling component of FaaS service layer 104 can receive an invocation request for that function and can select one of FaaS hosts 102 ( 1 )-(N) for executing the function. The selected FaaS host can then retrieve the image for the invoked function from FaaS image repository 106 , load/initialize the function image in its primary memory (thereby creating an instance of the function in the primary memory), and execute the function instance.
- FaaS service layer 104 cannot schedule the invoked function for execution on a host of another FaaS infrastructure that is different from infrastructure 100 .
- FaaS infrastructure 100 is a private cloud-based infrastructure
- FaaS service layer 104 cannot schedule the invoked function for execution on a public cloud-based FaaS infrastructure.
- FaaS infrastructure 100 corresponds to one type of public cloud-based infrastructure (e.g., Amazon AWS Lambda)
- FaaS service layer 104 cannot schedule the invoked function for execution of a different type of public cloud-based FaaS infrastructure (e.g., Microsoft Azure Functions). This is because the various components of FaaS infrastructure 100 are part of a self-contained system and are solely designed to interoperate with each other.
- FIG. 2 depicts a novel architecture 200 that supports the scheduling and execution of functions across multiple different FaaS infrastructures according to an embodiment.
- architecture 200 includes a spanning FaaS service platform 202 that is communicatively coupled with a plurality of disparate FaaS infrastructures 204 ( 1 )-(M) which have been registered with platform 202 .
- Each FaaS infrastructure 204 may be implemented in accordance with infrastructure 100 of FIG. 1 and may correspond to a private cloud or public cloud-based infrastructure.
- FaaS infrastructure 204 ( 1 ) may be a private cloud-based infrastructure
- FaaS infrastructure 204 ( 2 ) may be Amazon AWS Lambda
- FaaS infrastructure 204 ( 3 ) may be Microsoft Azure Functions
- FaaS infrastructure 204 ( 4 ) may be Google Cloud Functions, and so on.
- Spanning FaaS service platform 202 comprises an upload component 206 , a plurality of FaaS drivers 208 ( 1 )-(M), a spanning FaaS scheduler 210 , and a function artifact store 212 .
- Each FaaS driver 208 maps to a registered FaaS infrastructure 204 and includes information that spanning FaaS service platform 202 can use to communicate with FaaS infrastructure 204 , as well as information that specifies capabilities, characteristics, and/or other metadata regarding the infrastructure.
- each FaaS driver 208 can include login/connection information for connecting to the corresponding FaaS infrastructure via one or more accounts, a listing of application programming interfaces (APIs) exposed by the service layer of the FaaS infrastructure for creating and executing functions, hardware capabilities and/or specific types of hardware devices supported by the hosts of the FaaS infrastructure, details of the infrastructure's billing model, etc.
- APIs application programming interfaces
- the developer can submit the function (in the form of a package of files referred to as a function artifact) via upload component 206 to spanning FaaS service platform 202 , rather than directly to FaaS infrastructures 204 ( 1 )-(M).
- the function artifact can include the code for the function, software dependencies that the function relies on, and metadata that defines criteria, constraints, policies, tags, and/or other information for governing the scheduling and execution of the function. The specific format and content of this metadata can be specified by the administrators of spanning FaaS service platform 202 .
- upload component 206 can store the function artifact (or a portion thereof) in function artifact store 212 and can invoke an appropriate API of each registered FaaS infrastructure 204 (as determined from the corresponding FaaS driver 208 ) to “create” the function in that infrastructure. This step results in the generation of a function runtime image for the function in the FaaS image repository of each FaaS infrastructure 204 .
- spanning FaaS scheduler 210 can receive the invocation request (or detect an event that triggers the invocation) and can select, based on the information included in the function metadata and the information included in FaaS drivers 208 ( 1 )-(M), one of FaaS infrastructures 204 ( 1 )-(M) as being the “best” infrastructure for executing the function at that point in time. For example, if the function metadata includes a tag that indicates the function runs best on hosts that incorporate a dedicated graphics processing unit (GPU), spanning FaaS scheduler 210 may select a FaaS infrastructure 204 whose hosts include this type of hardware (per the metadata in FaaS drivers 208 ( 1 )-(M)).
- GPU dedicated graphics processing unit
- spanning FaaS scheduler 210 can perform its selection in accordance with this policy.
- spanning FaaS scheduler 210 can schedule the function for execution on the selected FaaS infrastructure by, e.g., calling an appropriate “execute function” API of the infrastructure as defined in its FaaS driver.
- FaaS With the spanning FaaS architecture of FIG. 2 , a number of advantages can be achieved over existing FaaS implementations, which are essentially “silo-ed” in nature (i.e., each FaaS infrastructure is isolated from and independent of each other). For instance, in cases where an organization deploys a private cloud-based FaaS infrastructure for its applications/functions, the organization can use architecture 200 to dynamically offload function execution as-needed to one or more public cloud-based FaaS infrastructures and thereby overcome the scalability and availability issues that are common in private clouds.
- architecture 200 allows application developers to leverage the strengths of different FaaS infrastructures to optimize the developers' applications along various dimensions on a per-function execution basis, which simply was not possible before. For instance, an application developer may define a criterion or policy that ensures a given function is always executed on a FaaS infrastructure that has the lowest monetary cost, provides the fastest performance, has the best data locality, has the least latency, etc. at the time of the function is called.
- architecture 200 can achieve the foregoing advantages without requiring application developers to create and upload multiple function artifacts for a given function to multiple different FaaS infrastructures. Instead, an application developer can upload a single function artifact with the appropriate metadata to spanning FaaS service platform 202 , and platform 202 can take the steps needed to create and execute the function on each of registered FaaS infrastructures 204 ( 1 )-(M).
- FIG. 2 is illustrative and not intended to limit embodiments of the present disclosure.
- FIG. 2 depicts a particular arrangement of entities/components in architecture 200 , other arrangements or configurations are possible depending on the specific deployment. Further, the various entities/components shown may have subcomponents or functions that are not specifically described.
- One of ordinary skill in the art will recognize other variations, modifications, and alternatives
- FIG. 3 depicts a workflow 300 that can be executed by upload component 206 of FIG. 2 for enabling the upload of a function F to spanning FaaS service platform 202 according to an embodiment.
- Upload component 206 can be implemented in a number of ways, such as in the form of a self-service graphical user interface (GUI) (e.g., a web-based or mobile application), a command-line interface (CLI), or a programmatic API.
- GUI self-service graphical user interface
- CLI command-line interface
- upload component 206 can receive from a user (e.g., application developer) a function artifact that includes, among other things, the code for function F and metadata defining criteria, constraints, policies, tags, and/or other information for governing the scheduling and execution of F.
- a function artifact that includes, among other things, the code for function F and metadata defining criteria, constraints, policies, tags, and/or other information for governing the scheduling and execution of F.
- the metadata can include:
- this metadata can be specified by the administrators of spanning FaaS service platform 202 .
- upload component 206 can verify the contents of the function artifact to ensure that it is complete and is formatted correctly. If any errors are detected at this step (block 306 ), upload component 206 can request that the user resubmit that function artifact with appropriate corrections (block 308 ) and can return to block 302 .
- upload component 206 can store the artifact (or a specific portion thereof, such as the function metadata), in function artifact store 212 (block 310 ). This stored data will later be used by spanning FaaS scheduler 210 to select an appropriate FaaS infrastructure for executing the function.
- upload component 206 can create the function in each of registered FaaS infrastructures 204 ( 1 )-(M) by calling a “create function” API exposed by the service layer of the infrastructure. Upload component 206 can determine the specifics of this API (e.g., API name, expected parameters, etc.) by referencing the FaaS driver mapped to the infrastructure. In various embodiments, the end result of this step is the creation of a function runtime image for function F in the FaaS image repository of each FaaS infrastructure 204 .
- FIG. 4 depicts a workflow 400 that can be executed by spanning FaaS scheduler 210 of FIG. 2 for scheduling the execution of a function F on one of FaaS infrastructures 204 ( 1 )-(M) according to an embodiment.
- Workflow 400 assumes that the function artifact for F has been uploaded to spanning FaaS service platform 202 and runtime images for F have been created in each FaaS infrastructure 204 per workflow 300 of FIG. 3 .
- spanning FaaS scheduler 210 can determine that function F has been invoked. Scheduler 210 can make this determination by, e.g., receiving an explicit invocation request or by detecting the occurrence of an event that is known to trigger the invocation of F.
- spanning FaaS scheduler 210 can retrieve the function metadata for F from function artifact store 212 and can determine, from the retrieved metadata, the various criteria, constraints, and/or policies that govern the scheduling of F.
- spanning FaaS scheduler 210 can retrieve the information associated with each registered FaaS infrastructure 204 that defines various capabilities/characteristics of the infrastructure (e.g., infrastructure type (private or public), hardware capabilities, billing model, geographic locations of server resources/data centers, capacity constraints, etc.) (block 408 ). Spanning FaaS scheduler 210 can retrieve this infrastructure information from respective FaaS drivers 208 ( 1 )-(M).
- spanning FaaS scheduler 210 can compare the criteria/constraints/policies determined at block 406 and the infrastructure information retrieved at block 408 and, based on these comparisons, can select a FaaS infrastructure (from among the registered infrastructures) that scheduler 210 deems is best suited for executing the function.
- the exact nature of the selection logic applied at this step may differ depending on the entity deploying spanning FaaS service platform 202 , since different organizations may have different views regarding how to prioritize certain criteria in order to arrive at a final decision.
- spanning FaaS scheduler 210 can be built in a modular fashion so that its selection logic can be easily changed for different deployments. However, the general idea is that scheduler 210 will select a FaaS infrastructure that satisfies or conforms to the majority of the criteria/constraints/policies specified for the function.
- scheduler 210 The following is a sample list of criteria/constraints/policies that may be taken into account by scheduler 210 . This list is non-exhaustive and one of ordinary skill in the art will recognize that other types of criteria/constraints/policies are possible.
- spanning FaaS scheduler 210 can schedule execution of function F on the selected FaaS infrastructure.
- Scheduler 210 can perform this step by calling an appropriate “execute function” API of the selected FaaS infrastructure, as determined from the infrastructure's FaaS driver. It should be noted that spanning FaaS scheduler 210 typically will not have control over which particular host of the selected FaaS infrastructure will execute the function; this host-level selection will be performed by the internal service layer of the infrastructure.
- Certain embodiments described herein involve a hardware abstraction layer on top of a host computer.
- the hardware abstraction layer allows multiple containers to share the hardware resource. These containers, isolated from each other, have at least a user application running therein.
- the hardware abstraction layer thus provides benefits of resource isolation and allocation among the containers.
- virtual machines are used as an example for the containers and hypervisors as an example for the hardware abstraction layer. As described above, each virtual machine includes a guest operating system in which at least one application runs. It should be noted that these embodiments may also apply to other examples of containers, such as containers not including a guest operating system, referred to herein as “OS-less containers” (see, e.g., www.docker.com).
- OS-less containers implement operating system-level virtualization, wherein an abstraction layer is provided on top of the kernel of an operating system on a host computer.
- the abstraction layer supports multiple OS-less containers each including an application and its dependencies.
- Each OS-less container runs as an isolated process in userspace on the host operating system and shares the kernel with other containers.
- the OS-less container relies on the kernel's functionality to make use of resource isolation (CPU, memory, block I/O, network, etc.) and separate namespaces and to completely isolate the application's view of the operating environments.
- resource isolation CPU, memory, block I/O, network, etc.
- By using OS-less containers resources can be isolated, services restricted, and processes provisioned to have a private view of the operating system with their own process ID space, file system structure, and network interfaces.
- Multiple containers can share the same kernel, but each container can be constrained to only use a defined amount of resources such as CPU, memory and I/O.
- FIG. 1 For example, these operations can require physical manipulation of physical quantities—usually, though not necessarily, these quantities take the form of electrical or magnetic signals, where they (or representations of them) are capable of being stored, transferred, combined, compared, or otherwise manipulated. Such manipulations are often referred to in terms such as producing, identifying, determining, comparing, etc. Any operations described herein that form part of one or more embodiments can be useful machine operations.
- one or more embodiments can relate to a device or an apparatus for performing the foregoing operations.
- the apparatus can be specially constructed for specific required purposes, or it can be a general purpose computer system selectively activated or configured by program code stored in the computer system.
- various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
- the various embodiments described herein can be practiced with other computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
- one or more embodiments can be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media.
- the term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system.
- the non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer system.
- non-transitory computer readable media examples include a hard drive, network attached storage (NAS), read-only memory, random-access memory, flash-based nonvolatile memory (e.g., a flash memory card or a solid state disk), a CD (Compact Disc) (e.g., CD-ROM, CD-R, CD-RW, etc.), a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices.
- the non-transitory computer readable media can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
- the virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions.
- Plural instances can be provided for components, operations, or structures described herein as a single instance.
- boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s).
- structures and functionality presented as separate components in exemplary configurations can be implemented as a combined structure or component.
- structures and functionality presented as a single component can be implemented as separate components.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
Description
- The present application is a continuation of U.S. patent application Ser. No. 16/245,055, filed Jan. 10, 2019, entitled “Scheduling and Executing Functions Across Different Functions-as-a-Service (FaaS) Infrastructures.”
- Functions-as-a-service (FaaS) is a computing model in which application developers upload modular chunks of application functionality, referred to as functions, to a cloud-based FaaS infrastructure. Once uploaded, a service layer of the FaaS infrastructure schedules and executes the functions on-demand (e.g., at the time of function invocation) on servers (i.e., hosts) of the infrastructure in an independent and scalable manner.
- FaaS can be implemented using private clouds or public clouds. Generally speaking, a private cloud-based FaaS infrastructure is owned and operated by a single organization (using, e.g., the organization's on-premise server resources) for sole use by that organization. In contrast, a public cloud-based FaaS infrastructure is owned and operated by a third-party FaaS provider and is made available for use by various customers (e.g., organizations, application developers, etc.). Since the customers are not responsible for operating/managing the server hardware of a public cloud-based infrastructure, this is sometimes refers to as a “serverless” solution. Most third-party FaaS providers charge customers for their use of the public cloud infrastructure via a consumption-based billing model (i.e., a model that charges per function invocation, per unit of function execution time, or based on some other resource consumption metric).
- Like any production application, applications that are built using functions running on a FaaS infrastructure may have requirements regarding availability, performance, and scalability. These requirements can be difficult to meet on a strictly consistent basis if the public or private cloud backing the FaaS infrastructure experiences transient problems such as network congestion, excessive server load, hardware failures, power outages, and so on. These problems can be particularly acute for private clouds, since scalability is often limited due to pre-allocation of hardware resources and server availability/disaster recovery is often limited due to the use of a single or a few on-premise data centers.
- Techniques for scheduling and executing functions across a plurality of different Functions-as-a-Service (FaaS) infrastructures are provided. In one set of embodiments, a computer system can determine that a function has been invoked, where the computer system implements a spanning FaaS service platform that is communicatively coupled with the plurality of different FaaS infrastructures. In response, the computer system can retrieve metadata associated with the function, where the metadata includes criteria or policies indicating how the function should be scheduled for execution, and can retrieve information associated with each of the plurality of different FaaS infrastructures, where the information includes capabilities or characteristics of each FaaS infrastructure. The computer system can then select a FaaS infrastructure in the plurality of different FaaS infrastructures based on the retrieved metadata and the retrieved information and can schedule the function for execution on the selected FaaS infrastructure.
- The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of particular embodiments.
-
FIG. 1 depicts a conventional FaaS infrastructure. -
FIG. 2 depicts a spanning FaaS service platform according to an embodiment. -
FIG. 3 depicts a workflow for uploading functions to the spanning FaaS service platform according to an embodiment -
FIG. 4 depicts a workflow for scheduling functions via the spanning FaaS service platform according to an embodiment. - In the following description, for purposes of explanation, numerous examples and details are set forth in order to provide an understanding of various embodiments. It will be evident, however, to one skilled in the art that certain embodiments can be practiced without some of these details, or can be practiced with modifications or equivalents thereof.
- Embodiments of the present disclosure are directed to a FaaS service platform (referred to herein as “spanning FaaS”) that can schedule and execute functions across a plurality of different private cloud or public cloud-based FaaS infrastructures which are registered with the platform. For example, at a time a particular function is invoked, the spanning FaaS service platform can evaluate characteristics of the registered FaaS infrastructures and can select a particular infrastructure that is best suited for executing the function. In various embodiments, the spanning FaaS service platform can make this selection based on criteria/policies that are associated with the function itself and/or are defined at a higher level (e.g., application-level, deployment-level, etc.). The spanning FaaS service platform can then schedule execution of the function on the selected FaaS infrastructure.
- With this general approach, the scalability and availability issues that often arise when relying on a single private cloud-based FaaS infrastructure for function execution can be mitigated or avoided. For instance, the spanning FaaS service platform can offload the execution of functions from the private cloud-based FaaS infrastructure to one or more public cloud-based FaaS infrastructures in response to resource capacity/availability constraints that appear in the private cloud, and this offloading can continue until the on-premise constraints are lifted or resolved.
- In addition, the spanning FaaS service platform can enable new types of FaaS use cases with concomitant new benefits that were not possible before using conventional silo-ed FaaS implementations, such as dynamically scheduling function execution across different FaaS infrastructures in a manner that results in lowest monetary cost, highest performance, and so on. These and other aspects of the present disclosure are described in further detail below.
- To provide context for the embodiments described herein,
FIG. 1 is a simplified block diagram of a single conventional FaaSinfrastructure 100. As shownFaaS infrastructure 100 includes a plurality of FaaS hosts 102(1)-(N) that are communicatively coupled with aFaaS service layer 104 and aFaaS image repository 106. In one set of embodiments, FaaSinfrastructure 100 may be a private cloud-based infrastructure and thus the hardware resources (e.g., compute, storage, etc.) underlying components 102(1)-(N), 104, and 106 may be part of an on-premise resource pool (i.e., private cloud) operated and managed by a particular organization for the sole use of that organization. In other embodiments, FaaSinfrastructure 100 may be a public cloud-based infrastructure and thus the hardware resources underlying components 102(1)-(N), 104, and 106 may be part of a publically-accessible resource pool (i.e., public cloud) operated and managed by a third-party FaaS provider for use by various customers. Examples of well-known public cloud-based FaaS infrastructures include Amazon AWS Lambda, Microsoft Azure Functions, and Google Cloud Functions. - In practice, application developers that wish to leverage FaaS
infrastructure 100 can create and upload functions toinfrastructure 100 that correspond to modular portions of functionality in their applications. For example, one such function may encapsulate program code for extracting data from a file, another such function may encapsulate program code for processing the extracted data in a certain way, and so on. These functions are maintained by FaaSinfrastructure 100 in the form of function runtime images (which may be, e.g., executable files, container images, virtual machine images, etc.) in FaaSimage repository 106. - When an application that makes use of an uploaded function is run, a scheduling component of FaaS service layer 104 (not shown) can receive an invocation request for that function and can select one of FaaS hosts 102(1)-(N) for executing the function. The selected FaaS host can then retrieve the image for the invoked function from
FaaS image repository 106, load/initialize the function image in its primary memory (thereby creating an instance of the function in the primary memory), and execute the function instance. - Significantly, FaaS
service layer 104 cannot schedule the invoked function for execution on a host of another FaaS infrastructure that is different frominfrastructure 100. For example, if FaaSinfrastructure 100 is a private cloud-based infrastructure, FaaSservice layer 104 cannot schedule the invoked function for execution on a public cloud-based FaaS infrastructure. Similarly, if FaaSinfrastructure 100 corresponds to one type of public cloud-based infrastructure (e.g., Amazon AWS Lambda), FaaSservice layer 104 cannot schedule the invoked function for execution of a different type of public cloud-based FaaS infrastructure (e.g., Microsoft Azure Functions). This is because the various components of FaaSinfrastructure 100 are part of a self-contained system and are solely designed to interoperate with each other. - To address this limitation,
FIG. 2 depicts anovel architecture 200 that supports the scheduling and execution of functions across multiple different FaaS infrastructures according to an embodiment. As shown inFIG. 2 ,architecture 200 includes a spanning FaaSservice platform 202 that is communicatively coupled with a plurality of disparate FaaS infrastructures 204(1)-(M) which have been registered withplatform 202. Each FaaSinfrastructure 204 may be implemented in accordance withinfrastructure 100 ofFIG. 1 and may correspond to a private cloud or public cloud-based infrastructure. For instance, FaaS infrastructure 204(1) may be a private cloud-based infrastructure, FaaS infrastructure 204(2) may be Amazon AWS Lambda, FaaS infrastructure 204(3) may be Microsoft Azure Functions, FaaS infrastructure 204(4) may be Google Cloud Functions, and so on. - Spanning FaaS
service platform 202 comprises anupload component 206, a plurality of FaaS drivers 208(1)-(M), a spanningFaaS scheduler 210, and afunction artifact store 212. Each FaaS driver 208 maps to a registered FaaSinfrastructure 204 and includes information that spanning FaaSservice platform 202 can use to communicate with FaaSinfrastructure 204, as well as information that specifies capabilities, characteristics, and/or other metadata regarding the infrastructure. For example, each FaaSdriver 208 can include login/connection information for connecting to the corresponding FaaS infrastructure via one or more accounts, a listing of application programming interfaces (APIs) exposed by the service layer of the FaaS infrastructure for creating and executing functions, hardware capabilities and/or specific types of hardware devices supported by the hosts of the FaaS infrastructure, details of the infrastructure's billing model, etc. - As described in further detail below, at a time an application developer wishes to upload a new function to one or more of FaaS infrastructures 204(1)-(M), the developer can submit the function (in the form of a package of files referred to as a function artifact) via
upload component 206 to spanning FaaSservice platform 202, rather than directly to FaaS infrastructures 204(1)-(M). In various embodiments, the function artifact can include the code for the function, software dependencies that the function relies on, and metadata that defines criteria, constraints, policies, tags, and/or other information for governing the scheduling and execution of the function. The specific format and content of this metadata can be specified by the administrators of spanning FaaSservice platform 202. - In response to receiving the function artifact,
upload component 206 can store the function artifact (or a portion thereof) infunction artifact store 212 and can invoke an appropriate API of each registered FaaS infrastructure 204 (as determined from the corresponding FaaS driver 208) to “create” the function in that infrastructure. This step results in the generation of a function runtime image for the function in the FaaS image repository of eachFaaS infrastructure 204. - Then, when the function is subsequently invoked, spanning
FaaS scheduler 210 can receive the invocation request (or detect an event that triggers the invocation) and can select, based on the information included in the function metadata and the information included in FaaS drivers 208(1)-(M), one of FaaS infrastructures 204(1)-(M) as being the “best” infrastructure for executing the function at that point in time. For example, if the function metadata includes a tag that indicates the function runs best on hosts that incorporate a dedicated graphics processing unit (GPU), spanningFaaS scheduler 210 may select aFaaS infrastructure 204 whose hosts include this type of hardware (per the metadata in FaaS drivers 208(1)-(M)). As another example, if the function metadata specifies a policy that states all instances of the function should be scheduled/executed on a private cloud-based FaaS infrastructure up to a certain capacity limit and then offloaded to a public cloud-based FaaS infrastructure, spanningFaaS scheduler 210 can perform its selection in accordance with this policy. - Finally, spanning
FaaS scheduler 210 can schedule the function for execution on the selected FaaS infrastructure by, e.g., calling an appropriate “execute function” API of the infrastructure as defined in its FaaS driver. - With the spanning FaaS architecture of
FIG. 2 , a number of advantages can be achieved over existing FaaS implementations, which are essentially “silo-ed” in nature (i.e., each FaaS infrastructure is isolated from and independent of each other). For instance, in cases where an organization deploys a private cloud-based FaaS infrastructure for its applications/functions, the organization can usearchitecture 200 to dynamically offload function execution as-needed to one or more public cloud-based FaaS infrastructures and thereby overcome the scalability and availability issues that are common in private clouds. - Further,
architecture 200 allows application developers to leverage the strengths of different FaaS infrastructures to optimize the developers' applications along various dimensions on a per-function execution basis, which simply was not possible before. For instance, an application developer may define a criterion or policy that ensures a given function is always executed on a FaaS infrastructure that has the lowest monetary cost, provides the fastest performance, has the best data locality, has the least latency, etc. at the time of the function is called. - Yet further,
architecture 200 can achieve the foregoing advantages without requiring application developers to create and upload multiple function artifacts for a given function to multiple different FaaS infrastructures. Instead, an application developer can upload a single function artifact with the appropriate metadata to spanningFaaS service platform 202, andplatform 202 can take the steps needed to create and execute the function on each of registered FaaS infrastructures 204(1)-(M). - Workflows for implementing the various processes described above are presented in the sections that follow. It should be appreciated that
architecture 200 ofFIG. 2 is illustrative and not intended to limit embodiments of the present disclosure. For example, althoughFIG. 2 depicts a particular arrangement of entities/components inarchitecture 200, other arrangements or configurations are possible depending on the specific deployment. Further, the various entities/components shown may have subcomponents or functions that are not specifically described. One of ordinary skill in the art will recognize other variations, modifications, and alternatives -
FIG. 3 depicts aworkflow 300 that can be executed by uploadcomponent 206 ofFIG. 2 for enabling the upload of a function F to spanningFaaS service platform 202 according to an embodiment. Uploadcomponent 206 can be implemented in a number of ways, such as in the form of a self-service graphical user interface (GUI) (e.g., a web-based or mobile application), a command-line interface (CLI), or a programmatic API. - Starting with
block 302, uploadcomponent 206 can receive from a user (e.g., application developer) a function artifact that includes, among other things, the code for function F and metadata defining criteria, constraints, policies, tags, and/or other information for governing the scheduling and execution of F. Merely by way of example, the metadata can include: -
- a whitelist of FaaS infrastructures on which function F may be run
- a blacklist of FaaS infrastructures on which function F may not be run
- a preference or requirement that F be run on a host with a particular type of hardware device or support for a particular hardware feature
- a preference or requirement pertaining to function execution time
- a preference or requirement pertaining to function execution cost
- a preference or requirement pertaining to data locality of data accessed by F
- a preference or requirement pertaining to infrastructure capacity (e.g., only run on infrastructures that are currently below a capacity usage threshold)
- a preference or requirement that F be run on a certain type of FaaS infrastructure (e.g., private cloud or public cloud)
- As mentioned previously, the specific format and content of this metadata can be specified by the administrators of spanning
FaaS service platform 202. - At
block 304, uploadcomponent 206 can verify the contents of the function artifact to ensure that it is complete and is formatted correctly. If any errors are detected at this step (block 306), uploadcomponent 206 can request that the user resubmit that function artifact with appropriate corrections (block 308) and can return to block 302. - Upon verifying the function artifact and determining that it is valid, upload
component 206 can store the artifact (or a specific portion thereof, such as the function metadata), in function artifact store 212 (block 310). This stored data will later be used by spanningFaaS scheduler 210 to select an appropriate FaaS infrastructure for executing the function. - Finally, at
block 312, uploadcomponent 206 can create the function in each of registered FaaS infrastructures 204(1)-(M) by calling a “create function” API exposed by the service layer of the infrastructure. Uploadcomponent 206 can determine the specifics of this API (e.g., API name, expected parameters, etc.) by referencing the FaaS driver mapped to the infrastructure. In various embodiments, the end result of this step is the creation of a function runtime image for function F in the FaaS image repository of eachFaaS infrastructure 204. -
FIG. 4 depicts aworkflow 400 that can be executed by spanningFaaS scheduler 210 ofFIG. 2 for scheduling the execution of a function F on one of FaaS infrastructures 204(1)-(M) according to an embodiment.Workflow 400 assumes that the function artifact for F has been uploaded to spanningFaaS service platform 202 and runtime images for F have been created in eachFaaS infrastructure 204 perworkflow 300 ofFIG. 3 . - Starting with
block 402, spanningFaaS scheduler 210 can determine that function F has been invoked.Scheduler 210 can make this determination by, e.g., receiving an explicit invocation request or by detecting the occurrence of an event that is known to trigger the invocation of F. - At
404 and 406, spanningblocks FaaS scheduler 210 can retrieve the function metadata for F fromfunction artifact store 212 and can determine, from the retrieved metadata, the various criteria, constraints, and/or policies that govern the scheduling of F. In addition, spanningFaaS scheduler 210 can retrieve the information associated with each registeredFaaS infrastructure 204 that defines various capabilities/characteristics of the infrastructure (e.g., infrastructure type (private or public), hardware capabilities, billing model, geographic locations of server resources/data centers, capacity constraints, etc.) (block 408). SpanningFaaS scheduler 210 can retrieve this infrastructure information from respective FaaS drivers 208(1)-(M). - At
block 410, spanningFaaS scheduler 210 can compare the criteria/constraints/policies determined atblock 406 and the infrastructure information retrieved atblock 408 and, based on these comparisons, can select a FaaS infrastructure (from among the registered infrastructures) thatscheduler 210 deems is best suited for executing the function. The exact nature of the selection logic applied at this step may differ depending on the entity deploying spanningFaaS service platform 202, since different organizations may have different views regarding how to prioritize certain criteria in order to arrive at a final decision. In some embodiments, spanningFaaS scheduler 210 can be built in a modular fashion so that its selection logic can be easily changed for different deployments. However, the general idea is thatscheduler 210 will select a FaaS infrastructure that satisfies or conforms to the majority of the criteria/constraints/policies specified for the function. - The following is a sample list of criteria/constraints/policies that may be taken into account by
scheduler 210. This list is non-exhaustive and one of ordinary skill in the art will recognize that other types of criteria/constraints/policies are possible. -
- Schedule the function on an infrastructure having hardware capability or device X
- Schedule the function on an infrastructure that results in the lowest monetary cost
- Schedule the function on an on-premise infrastructure if there is available capacity; otherwise, schedule the function on a public cloud infrastructure that results in the lowest monetary cost
- Do not schedule the function on a public cloud infrastructure where the usage of that infrastructure (in terms of, e.g., number of function invocations, total execution time, etc.) has exceeded a threshold T
- Schedule the function on a public cloud infrastructure with data centers closest to geographic region R
- Finally, at
block 412, spanningFaaS scheduler 210 can schedule execution of function F on the selected FaaS infrastructure.Scheduler 210 can perform this step by calling an appropriate “execute function” API of the selected FaaS infrastructure, as determined from the infrastructure's FaaS driver. It should be noted that spanningFaaS scheduler 210 typically will not have control over which particular host of the selected FaaS infrastructure will execute the function; this host-level selection will be performed by the internal service layer of the infrastructure. - Certain embodiments described herein involve a hardware abstraction layer on top of a host computer. The hardware abstraction layer allows multiple containers to share the hardware resource. These containers, isolated from each other, have at least a user application running therein. The hardware abstraction layer thus provides benefits of resource isolation and allocation among the containers. In the foregoing embodiments, virtual machines are used as an example for the containers and hypervisors as an example for the hardware abstraction layer. As described above, each virtual machine includes a guest operating system in which at least one application runs. It should be noted that these embodiments may also apply to other examples of containers, such as containers not including a guest operating system, referred to herein as “OS-less containers” (see, e.g., www.docker.com). OS-less containers implement operating system-level virtualization, wherein an abstraction layer is provided on top of the kernel of an operating system on a host computer. The abstraction layer supports multiple OS-less containers each including an application and its dependencies. Each OS-less container runs as an isolated process in userspace on the host operating system and shares the kernel with other containers. The OS-less container relies on the kernel's functionality to make use of resource isolation (CPU, memory, block I/O, network, etc.) and separate namespaces and to completely isolate the application's view of the operating environments. By using OS-less containers, resources can be isolated, services restricted, and processes provisioned to have a private view of the operating system with their own process ID space, file system structure, and network interfaces. Multiple containers can share the same kernel, but each container can be constrained to only use a defined amount of resources such as CPU, memory and I/O.
- Further embodiments described herein can employ various computer-implemented operations involving data stored in computer systems. For example, these operations can require physical manipulation of physical quantities—usually, though not necessarily, these quantities take the form of electrical or magnetic signals, where they (or representations of them) are capable of being stored, transferred, combined, compared, or otherwise manipulated. Such manipulations are often referred to in terms such as producing, identifying, determining, comparing, etc. Any operations described herein that form part of one or more embodiments can be useful machine operations.
- Yet further, one or more embodiments can relate to a device or an apparatus for performing the foregoing operations. The apparatus can be specially constructed for specific required purposes, or it can be a general purpose computer system selectively activated or configured by program code stored in the computer system. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. The various embodiments described herein can be practiced with other computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
- Yet further, one or more embodiments can be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media. The term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system. The non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer system. Examples of non-transitory computer readable media include a hard drive, network attached storage (NAS), read-only memory, random-access memory, flash-based nonvolatile memory (e.g., a flash memory card or a solid state disk), a CD (Compact Disc) (e.g., CD-ROM, CD-R, CD-RW, etc.), a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The non-transitory computer readable media can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
- In addition, while described virtualization methods have generally assumed that virtual machines present interfaces consistent with a particular hardware system, persons of ordinary skill in the art will recognize that the methods described can be used in conjunction with virtualizations that do not correspond directly to any particular hardware system. Virtualization systems in accordance with the various embodiments, implemented as hosted embodiments, non-hosted embodiments or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, certain virtualization operations can be wholly or partially implemented in hardware.
- Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. Plural instances can be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations can be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component can be implemented as separate components.
- As used in the description herein and throughout the claims that follow, “a,” “an,” and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
- The above description illustrates various embodiments along with examples of how aspects of particular embodiments may be implemented. These examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of particular embodiments as defined by the following claims. Other arrangements, embodiments, implementations and equivalents can be employed without departing from the scope hereof as defined by the claims.
Claims (21)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/331,407 US20210286648A1 (en) | 2019-01-10 | 2021-05-26 | Scheduling and executing functions across different functions-as-a-service (faas) infrastructures |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/245,055 US11042405B2 (en) | 2019-01-10 | 2019-01-10 | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
| US17/331,407 US20210286648A1 (en) | 2019-01-10 | 2021-05-26 | Scheduling and executing functions across different functions-as-a-service (faas) infrastructures |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/245,055 Continuation US11042405B2 (en) | 2019-01-10 | 2019-01-10 | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20210286648A1 true US20210286648A1 (en) | 2021-09-16 |
Family
ID=71516644
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/245,055 Active 2039-07-27 US11042405B2 (en) | 2019-01-10 | 2019-01-10 | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
| US17/331,407 Abandoned US20210286648A1 (en) | 2019-01-10 | 2021-05-26 | Scheduling and executing functions across different functions-as-a-service (faas) infrastructures |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/245,055 Active 2039-07-27 US11042405B2 (en) | 2019-01-10 | 2019-01-10 | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US11042405B2 (en) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11055256B2 (en) * | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
| CN111796917B (en) * | 2019-04-09 | 2024-06-25 | 华为技术有限公司 | Operator operation scheduling method and device |
| EP3953812A1 (en) * | 2019-04-12 | 2022-02-16 | Telefonaktiebolaget LM Ericsson (publ) | Technique for determining cloud computing deployment modifications for serverless applications |
| US11240045B2 (en) * | 2019-10-30 | 2022-02-01 | Red Hat, Inc. | Detection and prevention of unauthorized execution of severless functions |
| IL293473A (en) * | 2019-12-13 | 2022-08-01 | Liveperson Inc | Function-as-a-service cloud chatbot for two-way communication systems |
| US11809218B2 (en) | 2021-03-11 | 2023-11-07 | Hewlett Packard Enterprise Development Lp | Optimal dispatching of function-as-a-service in heterogeneous accelerator environments |
| US12443424B1 (en) | 2021-03-30 | 2025-10-14 | Amazon Technologies, Inc. | Generational management of compute resource pools |
| US20220357994A1 (en) * | 2021-05-10 | 2022-11-10 | International Business Machines Corporation | Portable predictable execution of serverless functions |
| US12461828B2 (en) * | 2021-06-26 | 2025-11-04 | Intel Corporation | Network interface device management of service execution failover |
| US11995473B2 (en) * | 2021-07-28 | 2024-05-28 | International Business Machines Corporation | System and apparatus for FaaS business goals optimization |
| US11614925B1 (en) * | 2021-09-27 | 2023-03-28 | Sap Se | Data model infrastructure as a service |
| US12143312B2 (en) * | 2022-01-28 | 2024-11-12 | VMware LLC | On-demand resource capacity in a serverless function-as-a-service infrastructure |
Citations (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120110546A1 (en) * | 2010-10-28 | 2012-05-03 | Samsung Sds Co., Ltd. | Apparatus and method for generating applications automatically |
| US20120198438A1 (en) * | 2011-02-01 | 2012-08-02 | John Auer | Systems, methods, and apparatus to deploy software |
| US20170052764A1 (en) * | 2015-08-21 | 2017-02-23 | Oracle International Corporation | Pluggable components for runtime-image generation |
| US20170177310A1 (en) * | 2015-12-22 | 2017-06-22 | Sap Se | Software development using re-usable software components |
| US20180107459A1 (en) * | 2016-10-17 | 2018-04-19 | Sd Squared Limited | Systems and methods for creating software from library and custom components |
| WO2019018482A1 (en) * | 2017-07-20 | 2019-01-24 | Cisco Technology, Inc. | Managing a distributed network of function execution environments |
| US20190028552A1 (en) * | 2017-07-20 | 2019-01-24 | Cisco Technology, Inc. | Managing a distributed network of function execution environments |
| US20190044886A1 (en) * | 2018-03-30 | 2019-02-07 | Intel Corporation | Technologies for accelerating edge device workloads |
| US20190075154A1 (en) * | 2017-09-01 | 2019-03-07 | Futurewei Technologies, Inc. | Warm start technique for cloud-hosted functions |
| US20190089602A1 (en) * | 2017-09-18 | 2019-03-21 | Rapyuta Robotics Co., Ltd | Generate and provision a cloud device application using a software service store |
| KR20190069987A (en) * | 2017-12-12 | 2019-06-20 | 한국전자통신연구원 | Apparatus and method for providing long-term execution of function in sever-less environment |
| US20190332366A1 (en) * | 2018-04-30 | 2019-10-31 | EMC IP Holding Company LLC | Repurposing serverless application copies |
| US20190377604A1 (en) * | 2018-06-11 | 2019-12-12 | Nuweba Labs Ltd. | Scalable function as a service platform |
| US20200012569A1 (en) * | 2018-07-05 | 2020-01-09 | EMC IP Holding Company LLC | Methods and systems for serverless data deduplication |
| US20200097138A1 (en) * | 2018-09-24 | 2020-03-26 | Salesforce.Com, Inc. | Application builder |
| US11080027B2 (en) * | 2019-01-10 | 2021-08-03 | Vmware, Inc. | Curated image management in a FaaS infrastructure |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2418670A1 (en) * | 2003-02-11 | 2004-08-11 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for generating executable code for formatiing and printing complex data structures |
| FR2959091B1 (en) * | 2010-04-16 | 2014-06-20 | Inst Nat Rech Inf Automat | COMPUTER RESOURCE AND INFRASTRUCTURE MANAGEMENT TOOL AND NETWORKS |
| FR3012281A1 (en) * | 2013-10-18 | 2015-04-24 | Orange | METHOD AND SYSTEM FOR DYNAMIC DISCOVERY OF SERVICE FUNCTIONS |
| US10921872B2 (en) * | 2019-03-29 | 2021-02-16 | Intel Corporation | Performing soft throttling and hard throttling in a processor |
-
2019
- 2019-01-10 US US16/245,055 patent/US11042405B2/en active Active
-
2021
- 2021-05-26 US US17/331,407 patent/US20210286648A1/en not_active Abandoned
Patent Citations (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120110546A1 (en) * | 2010-10-28 | 2012-05-03 | Samsung Sds Co., Ltd. | Apparatus and method for generating applications automatically |
| US20120198438A1 (en) * | 2011-02-01 | 2012-08-02 | John Auer | Systems, methods, and apparatus to deploy software |
| US20170052764A1 (en) * | 2015-08-21 | 2017-02-23 | Oracle International Corporation | Pluggable components for runtime-image generation |
| US20170177310A1 (en) * | 2015-12-22 | 2017-06-22 | Sap Se | Software development using re-usable software components |
| US20180107459A1 (en) * | 2016-10-17 | 2018-04-19 | Sd Squared Limited | Systems and methods for creating software from library and custom components |
| WO2019018482A1 (en) * | 2017-07-20 | 2019-01-24 | Cisco Technology, Inc. | Managing a distributed network of function execution environments |
| US20190028552A1 (en) * | 2017-07-20 | 2019-01-24 | Cisco Technology, Inc. | Managing a distributed network of function execution environments |
| US20190075154A1 (en) * | 2017-09-01 | 2019-03-07 | Futurewei Technologies, Inc. | Warm start technique for cloud-hosted functions |
| US20190089602A1 (en) * | 2017-09-18 | 2019-03-21 | Rapyuta Robotics Co., Ltd | Generate and provision a cloud device application using a software service store |
| KR20190069987A (en) * | 2017-12-12 | 2019-06-20 | 한국전자통신연구원 | Apparatus and method for providing long-term execution of function in sever-less environment |
| US20190044886A1 (en) * | 2018-03-30 | 2019-02-07 | Intel Corporation | Technologies for accelerating edge device workloads |
| US20190332366A1 (en) * | 2018-04-30 | 2019-10-31 | EMC IP Holding Company LLC | Repurposing serverless application copies |
| US20190377604A1 (en) * | 2018-06-11 | 2019-12-12 | Nuweba Labs Ltd. | Scalable function as a service platform |
| US20200012569A1 (en) * | 2018-07-05 | 2020-01-09 | EMC IP Holding Company LLC | Methods and systems for serverless data deduplication |
| US20200097138A1 (en) * | 2018-09-24 | 2020-03-26 | Salesforce.Com, Inc. | Application builder |
| US11080027B2 (en) * | 2019-01-10 | 2021-08-03 | Vmware, Inc. | Curated image management in a FaaS infrastructure |
Non-Patent Citations (1)
| Title |
|---|
| English Translation of KR-20190069987 (Year: 2019) * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20200225983A1 (en) | 2020-07-16 |
| US11042405B2 (en) | 2021-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11042405B2 (en) | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures | |
| CN110192182B (en) | Dynamic and dedicated virtualized graphics processing | |
| US11182206B2 (en) | Event proxies for functions-as-a-service (FAAS) infrastructures | |
| US8874457B2 (en) | Concurrent scheduling of plan operations in a virtualized computing environment | |
| US20190384648A1 (en) | Proactive high availability in a virtualized computer system | |
| US10129106B2 (en) | Management of virtual machine resources in computing environments | |
| US10678579B2 (en) | Policy based cross-cloud migration | |
| US8789048B2 (en) | Virtual machine placement to improve memory utilization | |
| US10169023B2 (en) | Virtual container deployment | |
| US10261819B2 (en) | Determining an optimal computing environment for running an image based on performance of similar images | |
| US8789043B2 (en) | Optimized placement planning for virtual machines in a network by breaking relocation graph into one or more cores to apply different solutions | |
| US9110710B2 (en) | Preserving changes to a configuration of a running virtual machine | |
| US10091072B2 (en) | Management of virtual machine placement in computing environments | |
| US20160380906A1 (en) | Hybrid cloud resource scheduling | |
| US11080027B2 (en) | Curated image management in a FaaS infrastructure | |
| US8930957B2 (en) | System, method and program product for cost-aware selection of stored virtual machine images for subsequent use | |
| US10013269B2 (en) | Component framework for deploying virtual machines using service provisioning information | |
| US11113075B2 (en) | Launching a middleware-based application | |
| AU2019222810A1 (en) | Scaling for virtualized graphics processing | |
| US10296318B2 (en) | Offline tools upgrade for virtual machines | |
| US11175944B2 (en) | Optimizing cluster-wide operations in a hyper-converged infrastructure (HCI) deployment | |
| US11263053B2 (en) | Tag assisted cloud resource identification for onboarding and application blueprint construction | |
| US20240403093A1 (en) | Object storage service leveraging datastore capacity | |
| US11635920B2 (en) | Enabling multiple storage tiers in a hyperconverged infrastructure (HCI) cluster | |
| US20160011891A1 (en) | Engine for Virtual Machine Resources |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: VMWARE, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JUNG, BERNDT;PEEK, MARK;HU, XUEYANG;AND OTHERS;SIGNING DATES FROM 20190105 TO 20190108;REEL/FRAME:056364/0167 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| AS | Assignment |
Owner name: VMWARE LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:VMWARE, INC.;REEL/FRAME:066692/0103 Effective date: 20231121 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |