Managing asynchronous operations in a cloud computing environment - Patents.com
The method and runtime system facilitate the execution of single-threaded, asynchronous I/O-based program code on a serverless cloud runtime platform by performing asynchronous operations and resource management, enabling unmodified code execution and resource efficiency in serverless environments.
Patent Information
- Application Number
- JP2023500389
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-07-06
- Filing Date
- 2021-06-24
- Publication Date
- 2025-04-08
- Estimated Expiration
- 2041-06-24
AI Technical Summary
Existing technologies face challenges in executing single-threaded, asynchronous I/O-based program code without modification in a serverless computing framework, requiring adaptation to serverless framework primitives.
A computer-implemented method and runtime system that enable the execution of single-threaded, asynchronous I/O-based program code on a serverless cloud runtime platform by performing asynchronous operations, hibernating processes, releasing resources, and injecting additional code or data into completion functions.
This solution allows unmodified single-threaded program code to run in a serverless environment, providing the advantages of serverless computing with reduced resource requirements and the ability to inject data and logic without recompilation.
Smart Images

Figure 0007658685000001 
Figure 0007658685000002 
Figure 0007658685000003
Abstract
Description
[Technical field]
[0001] The present disclosure relates generally to managing asynchronous operations in a cloud computing environment, and more specifically to executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime. [Background technology]
[0002] Cloud computing systems, environments and frameworks have become mainstream in enterprise computing, often due to flexibility in terms of resources and capital expenditures. Furthermore, many programming and operational models have been developed and often made publicly available, often using open source, to explore the capabilities of service-oriented architectures, virtual machines, stateless operations and options for running services without servers (e.g., serverless).
[0003] In a multi-tenant cloud environment, different workloads may constantly compete for relevant resources. Cloud workloads can be easily scaled out because, by definition, the services that run the workloads are stateless. Depending on the workloads coming into the cloud computing environment, cloud providers may have to scale out service instances and may have to schedule resources such as virtual machines ("VMs"). A typical distribution mechanism for incoming workloads may be to select the target resource (e.g., the underlying hardware system) that has the least current workload.
[0004] Serverless, cloud-based computing is an execution model in which a cloud provider provides physical or virtual computing resources. The allocation of resources in such a scenario may also depend on the selected execution runtime, which may be of single-threaded or multi-threaded type. Clients can subscribe to and utilize resources in a serverless computing environment, and the cloud provider can manage the allocation of the underlying infrastructure.
[0005] While advantageous for certain execution requirements, cloud-based computing may also have some drawbacks. One drawback is that different coding concepts may be required, for example, program code may have to be adapted to serverless framework primitive concepts in order to be executable in such an environment. An example may be decomposing code into slices that represent a single execution cycle and concatenating these slices together with other functions. Typically, existing programs cannot be run unmodified using a serverless computation model.
[0006] U.S. Patent Application Publication No. 2019 / 0339955 A1 describes techniques for creating a function checkpoint for an instance of a program code function located on a first service and using the function checkpoint to load the instance of the program code function on a second server.
[0007] Further, US Patent Application Publication No. 2019 / 0384655 A1 describes a method and associated system for processing data in a serverless computing environment. In one embodiment, information related to functions associated with a plurality of serverless computing platforms and the data to be processed are received from a data source. A processing operation required to process the data is then determined based on characteristics of the data and a domain associated with the data. A target function for performing the processing operation is identified based on an evaluation of the trust source, and the target function is deployed by transferring the data to a serverless computing platform associated with the target function. In one embodiment, a requirement may eliminate the need to create and maintain a server by dynamically selecting an optimal serverless computing platform for processing the data.
[0008] However, there is a demand for technology that allows program code written in single-threaded, asynchronous I / O-based languages to be used unchanged in serverless computing frameworks. [Prior art documents] [Patent documents]
[0009] [Patent Document 1] US Patent Application Publication No. 2019 / 0339955 [Patent Document 2] US Patent Application Publication No. 2019 / 0384655 Summary of the Invention
[0010] According to some aspects of the disclosure, a computer-implemented method for execution of single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform may be provided. The method may include executing an asynchronous operation of the program code, where the asynchronous operation is completed at a completion function. The method may include hibernating a process associated with the asynchronous operation and releasing cloud runtime platform-related resources of the process, except for associated system memory. The method may also include executing the asynchronous operation during hibernation of the process, shutting off a completion function initiated for the process after completion of the asynchronous operation, and injecting at least one of additional program code and data into the completion function.
[0011] The method further includes unhibernating the process and reallocating the released cloud runtime platform related resources of the process; result data of the asynchronous operation; For processing At least one of additional program code and data return Executing a completion function, the execution of which is enabled for single-threaded, asynchronous I / O-based program code execution on a serverless cloud runtime platform, may include executing the completion function.
[0012] According to another aspect of the disclosure, a runtime system for execution of single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform may be provided. The system may include a memory and a processor in communication with the memory. The processor may be configured to perform operations including executing an asynchronous operation of the program code, where the asynchronous operation is completed at a completion function, hibernating a process associated with the asynchronous operation, and releasing cloud runtime platform related resources of the process, except for associated system memory.
[0013] In some embodiments, the processor may be configured to perform operations including, during hibernation of the process, performing an asynchronous operation, shutting down a completion function initiated for the process after completion of the asynchronous operation, and injecting at least one of additional program code and data into the completion function.
[0014] In some embodiments, the processor may be configured to perform operations including unhibernating the process and reallocating the freed cloud runtime platform related resources of the process. In some embodiments, the processor may receive result data of the asynchronous operation; For processing At least one of additional program code and data return The system may be configured to perform operations including: executing a completion function, where single-threaded, asynchronous I / O execution is enabled.
[0015] A computer-implemented method for executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform is proposed, which may provide multiple advantages, contributions, and technical effects.
[0016] As an example, any type of single-threaded program code, such as a Node.JS program, may be automatically mapped to a serverless computing model by transparently mapping execution slices to serverless invocations. Thus, the present disclosure may enable unmodified JavaScript programs to be executed in serverless environments for which they were not originally designed. The present disclosure brings the benefits of serverless computing to more traditional single-threaded, more or less linearly designed program code.
[0017] Because single-threaded program code no longer needs to be rewritten and redesigned for the serverless computing environment, from the user's perspective, the program code can be executed infinitely, but from the serverless computing perspective, it is still a pure serverless application, which provides two advantages: first, it is the advantage of single-threaded programming languages such as Node.JS, and second, serverless computing requires fewer resources.
[0018] The disclosed method may also allow for the injection of arbitrary data and program logic into the original program code without the need to recompile or rebuild the original single-threaded program. Examples of injected data may include, but are not limited to, cryptographic signatures that sign the current data heap, and profiling data that aids in performance analysis of the program code and thus optimizes placement dependent on the resulting load profile into a particular serverless runtime and cluster. Examples of injected program code include, but are not limited to, sending the execution state of the program to an audit logging service.
[0019] Another advantage of the disclosed method is the ability to resume an interrupted single-threaded program in another cloud cluster or domain, depending on the availability of computational resources.
[0020] In some embodiments, the single-threaded, asynchronous I / O based program code may be written in a programming language selected from Node.JS, JavaScript, TypeScript, and Golang or an equivalent programming language. Thus, the present disclosure may be used with nearly any programming language that supports a single-threaded, synchronous I / O based programming style.
[0021] In some embodiments, unhibernating or resuming may include executing a resource allocation routine for the process, so that resources required by the initiator process that initiated the asynchronous operation may be re-established, thereby supporting the concept of serverless computing.
[0022] In some embodiments, the placement routine may be a function of the geographic availability of resources in the cloud runtime platform. Thus, by selecting useful configuration parameters for the placement routine, the geographic region in which the associated service runs can be influenced. This can reduce network delays due to the large distance between the calling service and the called service.
[0023] In some embodiments, the placement routine may also include determining a resource placement for the process to be unhibernated based on the location of the asynchronous operation, which may be determined based on geographic coordinates, e.g., the resource placement may be selected to be "nearby" to avoid long distance network connections between related services.
[0024] In some embodiments, the method may include determining resource allocation for resources required by the asynchronous operation based on the location of the hibernated process. Geographic coordinates may also play a key role. This may ensure that both services (particularly the caller and the callee) may be executed in the same cloud computing center.
[0025] In some embodiments, the serverless cloud runtime platform can be based on one of the following technologies: Docker, Containerd, Linux Containers, Podman Kubernetes, Knative, AWS Lambda, Google Cloud Functions, Azure Functions, and Alibaba Cloud Function Compute. Additionally, other similar serverless cloud runtime platforms may be used. Thus, the proposed concept can support essentially any serverless cloud runtime framework.
[0026] In some embodiments, the asynchronous operation may be a long-running asynchronous input / output (I / O) operation (e.g., a call to a file system, database, or the like), a timer operation, or a wait operation for an input operation. Note, however, that this may not apply directly to promises in a serverless computing framework, but rather to what constitutes the input / output. The same can be applied to asynchronous wait operations, which typically map to promises.
[0027] In some embodiments, the method may also include determining, by a placement routine that initiated (e.g., triggered) execution of the asynchronous operation, resource placement of the process to be unhibernated based on the data classification and respective parameters associated with the asynchronous operation. In this manner, the type of data associated with the asynchronous operation, as well as the code itself and potential metadata, may be utilized to control resource placement functionality. This may enable fine-grained management of stateless computing frameworks when used in the context of single-threaded, asynchronous I / O-based program code.
[0028] Furthermore, embodiments may take the form of an associated computer program product accessible from a computer usable or computer readable medium that provides program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer usable or computer readable medium may be any apparatus that may include means for storing, communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device.
[0029] The above summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure.
[0030] The drawings included in this disclosure are incorporated in and constitute a part of this specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. The drawings are merely illustrative of particular embodiments and are not intended to limit the disclosure. [Brief description of the drawings]
[0031] [Figure 1] FIG. 1 is a block diagram of a computer-implemented method for executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform, according to an aspect of the disclosure. [Diagram 2] 1 is a block diagram of components of a computer-implemented method for execution of single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform, according to an embodiment of the present disclosure. [Diagram 3] FIG. 1 illustrates a block diagram of a runtime system for executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform, according to an aspect of the disclosure. [Figure 4A] FIG. 1 illustrates a cloud computing environment in accordance with an aspect of the present disclosure. [Figure 4B]FIG. 2 illustrates an abstraction model layer according to an aspect of the present disclosure. [Diagram 5] FIG. 1 illustrates a high-level block diagram of an exemplary computer system that can be used in implementing one or more of the methods, tools, and modules, and any associated functionality, described herein, in accordance with aspects of the disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0032] While the embodiments described herein are susceptible to various modifications and alternative forms, specific details thereof have been shown by way of example in the drawings and will be described in detail. It is to be understood, however, that the particular embodiments described are not to be taken in a limiting sense. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure.
[0033] Aspects of the present disclosure relate generally to managing asynchronous operations in a cloud computing environment, and more specifically to executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime. The present disclosure is not necessarily limited to such applications, but various aspects of the present disclosure may be understood through the discussion of various examples using this context.
[0034] In this description, the following conventions, terms or expressions, or combinations thereof, may be used.
[0035] The term "single-threaded, asynchronous I / O-based program code" may be used to refer to program code written under a different programming concept that allows stateful execution of partial functionality, i.e., the status of variables may be maintained for the complete process underlying the associated single-threaded, asynchronous I / O-based program code. This may be typical of a programming model that uses a complete virtual machine on a hypervisor.
[0036] The term "serverless cloud runtime platform" may be used to refer to a cloud computing execution model in which a cloud provider runs servers and dynamically manages the allocated machine resources. This cloud computing execution model may not require maintaining complete virtual machines, and serverless code may sometimes be used in combination with code deployed using microservices. Typically, however, application program code may be written purely for the serverless paradigm and may not have any dependency on fully provisioned servers.
[0037] The term "asynchronous operations" is sometimes used to refer specifically to asynchronous I / O, a form of input / output processing that may allow other processing to continue before a transmission or transaction is completed. This form of input / output processing may allow partial parallelization of program-related activities controlled by an intelligent operating system. Asynchronous operations may be useful in freeing up the time of typically slow I / O devices, such as disks and similar devices, for program code that does not depend on the I / O data.
[0038] The term "program code" may be used to refer to digital code executed in a computer system, a virtual computer system, or a serverless computing environment. Program code may be the result of a program written in a human understandable language. Programs may be compiled, interpreted, or converted into intermediate code and orders to be executed as program code.
[0039] The term "completion function" may also refer to a system call initiated at the end of the program code associated with an invoked asynchronous operation, such as an I / O service or I / O call.
[0040] The term "hibernation of a process" (sometimes also referred to as suspension to disk) is sometimes used to refer to powering off a computer or associated sub-subsystems of the computer while preserving their state. Upon hibernation, the computer or associated resources may save their state to non-volatile storage. Upon receipt or release of hibernation, the computer is in the state in which it was operating before entering hibernation. It should also be noted that in contrast to classical hibernation processing, in the concepts disclosed herein, the contents of random access memory (e.g., system memory associated with the actual process) may not be suspended to disk.
[0041] The term "injecting at least one of additional program code and data" may mean that not only is the result of the asynchronous operation returned to the calling routine, but additional data, particularly data in the form of actual data or data in the form of program code, may also be returned to the calling routine.
[0042] "Waiting hibernation" may refer to resuming operation of the computer with the same state information as before hibernation.
[0043] The term "Node.JS" is sometimes used to refer to a known open source, process, and platform JavaScript runtime environment that executes JavaScript code outside of a web browser. Node.JS allows developers to write command line tools using JavaScript and can be used for server-side scripting (e.g., running scripts on the server side to generate dynamic web page content before the page is sent to the user's web browser). As a result, Node.JS may represent a "JavaScript Everywhere" paradigm that unifies web application development around a single programming language, rather than different languages for server-side and client-side scripting.
[0044] The term "JavaScript (commonly abbreviated as "JS")" is sometimes used to refer to a programming language that conforms to the ECMAscript specification. It is a high-level, often just-in-time compiled programming language.
[0045] The term "TypeScript" is sometimes used to refer to an open-source programming language developed and maintained by Microsoft. The term describes a superset of JavaScript that adds optional static typing to the programming language.
[0046] The term "Golang" (or simply "Go") is sometimes used to refer to a well-known statically typed, compiled programming language designed and maintained by Google that is similar to C but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
[0047] The term "placement routine" is sometimes used to refer to a system call that initiates an asynchronous operation, possibly with configuration parameters.
[0048] The terms "Docker", "Containerd", "LXC", "Podman Kubernetes", "Knative", "AWS Lambda", "Google Cloud Functions", "Azure Functions", and "Alibaba Cloud Function Compute" are sometimes used to refer to frameworks for serverless computing. Versions of these serverless computing frameworks are sometimes used in the context of the proposed concept. Many of the names of the serverless computing frameworks mentioned above are based on the execution of "containerized" services.
[0049] The term "cloud computing", and the terms "cloud service environment", "cloud computing environment", and "cloud computing framework", in this context, may be interpreted as a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. This cloud model may include at least five characteristics, at least three service models, and at least four implementation models.
[0050] The characteristics are as follows:
[0051] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time or network storage, automatically as needed, without the need for human interaction with the service provider.
[0052] Broad network access: Computing power is available over the network and can be accessed through standard mechanisms, facilitating use by heterogeneous thin- and thick-client platforms (e.g., cell phones, laptops, PDAs).
[0053] Resource Pooling: Provider computing resources are pooled and offered to multiple consumers using a multi-tenant model. Different physical and virtual resources are dynamically allocated and reallocated depending on demand. Consumers generally have no control or knowledge of the exact portions of resources they are provided with, so there is a sense of portion independence. However, consumers may be able to identify portions at a higher level of abstraction (e.g., country, state, data center).
[0054] Rapid elasticity: Computing capacity can be provisioned quickly and elastically, in some cases automatically, to scale out immediately and to be released quickly to scale in immediately. To the consumer, the computing capacity available for provisioning often appears unlimited and can be purchased at any time and in any quantity.
[0055] Metered Services: Cloud systems leverage metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, active user accounts) to automatically control and optimize resource usage. Resource usage can be monitored, controlled, and reported to provide transparency to both providers and consumers of the services utilized.
[0056] The service model is as follows:
[0057] Software as a Service (SaaS): The functionality offered to the consumer is the availability of a provider's applications running on a cloud infrastructure that can be accessed from a variety of client devices through a thin-client interface such as a web browser (e.g., webmail). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even the individual application functions, except for limited user-specific application configuration settings.
[0058] Platform as a Service (PaaS): The capability offered to the consumer is to deploy applications that the consumer creates or acquires using programming languages and tools supported by the provider onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of the hosting environment.
[0059] Infrastructure as a Service (IaaS): The facility offered to the consumer is the provision of processors, storage, networking, and other basic computing resources on which the consumer can deploy and run any software, including operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, and deployed applications, and in some cases has partial control over some network components (e.g., the host firewall).
[0060] The deployment model is as follows:
[0061] Private Cloud: The cloud infrastructure is dedicated to a specific organization. It can be managed by that organization or a third party and can exist on-premise or off-premise.
[0062] Community Cloud: The cloud infrastructure is shared by multiple organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance). The cloud infrastructure can be managed by the organizations or a third party and can exist on-premise or off-premise.
[0063] Public cloud: The cloud infrastructure is available to the general public or large industry organizations and is owned by an organization that sells cloud services.
[0064] Hybrid Cloud: This cloud infrastructure combines two or more cloud models (private, community or public), each of which retains its inherent semantics but is bound together by standards or specific technologies that enable data and application portability (e.g. cloud bursting for load balancing between clouds).
[0065] Note that cloud software is service-oriented, with an emphasis on statelessness (with exceptions), low coupling, modularity, and semantic interoperability, and takes full advantage of the cloud paradigm.
[0066] According to some aspects of the disclosure, a computer-implemented method for executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform may be provided. The method may include executing an asynchronous operation of the program code, where the asynchronous operation is completed at a completion function. The method may include hibernating a process associated with the asynchronous operation and releasing cloud runtime platform-related resources of the process, except for associated system memory. The method may also include executing the asynchronous operation during hibernation of the process, shutting off a completion function initiated for the process after completion of the asynchronous operation, and injecting at least one of additional program code and data into the completion function.
[0067] The method further includes unhibernating the process and reallocating the released cloud runtime platform related resources of the process; result data of the asynchronous operation; For processing At least one of additional program code and data return and executing a completion function, which may enable execution of single-threaded, asynchronous I / O based program code on the serverless cloud runtime platform.
[0068] According to another aspect of the present disclosure, a runtime system for execution of single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform may be provided. The system may include a memory and a processor in communication with the memory. The processor may be configured to perform operations including executing an asynchronous operation of the program code, the asynchronous operation being completed at a completion function, hibernating a process associated with the asynchronous operation, and releasing cloud runtime platform related resources of the process except for associated system memory.
[0069] In some embodiments, the processor may be configured to perform operations including performing an asynchronous operation during hibernation of the process, interrupting a completion function initiated for the process after completion of the asynchronous operation, and injecting at least one of additional program code and data into the completion function.
[0070] In some embodiments, the processor may be configured to perform operations including: unhibernating the process and reallocating the freed cloud runtime platform related resources of the process. In some embodiments, the processor may be configured to perform operations including: For processing At least one of additional program code and data return The system may be configured to perform operations including executing a completion function, and may be enabled for single-threaded, asynchronous I / O-based program code execution on a serverless cloud runtime platform.
[0071] A computer-implemented method for executing single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform is proposed, which may provide multiple advantages, contributions, and technical effects.
[0072] As an example, any type of single-threaded program code, e.g., a Node.JS program, may be automatically mapped to a serverless computing model by transparently mapping execution slices to serverless invocations. Thus, the present disclosure may enable unmodified JavaScript programs to be executed in serverless environments for which they were not originally designed. The present disclosure brings the benefits of serverless computing to more traditionally single-threaded, more or less linearly designed program code.
[0073] Because single-threaded program code no longer needs to be rewritten and redesigned for the serverless computing environment, from the user's perspective, the program code can be executed infinitely, but from the serverless computing perspective, it is still a pure serverless application, which provides two advantages: first, it is the advantage of single-threaded programming languages such as Node.JS, and second, serverless computing requires fewer resources.
[0074] The disclosed method may also allow for the injection of arbitrary data and program logic into the original program code without the need to recompile or rebuild the original single-threaded program. Examples of injected data may include, but are not limited to, cryptographic signatures that sign the current data heap, and profiling data that aids in performance analysis of the program code and thus optimizes placement dependent on the resulting load profile into a particular serverless runtime and cluster. Examples of injected program code include, but are not limited to, sending the execution state of the program to an audit logging service.
[0075] Another advantage of the disclosed method is the ability to resume an interrupted single-threaded program in another cloud cluster or region, depending on the availability of computational resources.
[0076] In some embodiments, the single-threaded, asynchronous I / O based program code may be written in a programming language selected from Node.JS, JavaScript, TypeScript, and Golang or an equivalent programming language. Thus, the present disclosure may be used with nearly any programming language that supports a single-threaded, synchronous I / O based programming style.
[0077] In some embodiments, the unhibernation or resumption may include executing a process resource allocation routine, so that resources required by the initiator process that initiated the asynchronous operation may be re-established, thereby supporting the concept of serverless computing.
[0078] In some embodiments, the placement routine may be a function of the geographic availability of resources in the cloud runtime platform. Thus, by selecting useful configuration parameters for the placement routine, the geographic region in which the associated service runs can be influenced. This can reduce network delays due to the large distance between the calling service and the called service.
[0079] In some embodiments, the placement routine may also include determining a resource placement for the process to be unhibernated based on the location of the asynchronous operation, which may be determined based on geographic coordinates, e.g., the resource placement may be selected to be "nearby" to avoid long distance network connections between related services.
[0080] In some embodiments, the method may include determining resource allocation for resources required by the asynchronous operation based on the location of the hibernated process. Geographic coordinates may also play a key role. This may ensure that both services (particularly the caller and the callee) may be executed in the same cloud computing center.
[0081] In some embodiments, the serverless cloud runtime platform can be based on one of the following technologies: Docker, Containerd, Linux Containers, Podman Kubernetes, Knative, AWS Lambda, Google Cloud Functions, Azure Functions, and Alibaba Cloud Function Compute. Additionally, other similar serverless cloud runtime platforms may be used. Thus, the proposed concept can support essentially any serverless cloud runtime framework.
[0082] In some embodiments, the asynchronous operation may be a long-running asynchronous input / output (I / O) operation (e.g., a call to a file system, database, or the like), a timer operation, or a wait operation for an input operation. Note, however, that this may not apply directly to promises in a serverless computing framework, but rather to what constitutes the input / output. The same can be applied to asynchronous wait operations, which typically map to promises.
[0083] In some embodiments, the method may also include determining, by a placement routine that initiated (e.g., triggered) execution of the asynchronous operation, resource placement of the process to be unhibernated based on the data classification and respective parameters associated with the asynchronous operation. In this manner, the type of data associated with the asynchronous operation, as well as the code itself and potential metadata, may be utilized to control resource placement functionality. This may enable fine-grained management of stateless computing frameworks when used in the context of single-threaded, asynchronous I / O-based program code.
[0084] Furthermore, embodiments may take the form of an associated computer program product accessible from a computer usable or computer readable medium that provides program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer usable or computer readable medium may be any apparatus that may include means for storing, communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device.
[0085] The figures are described in detail below. All indications in the figures are schematic. First, a block diagram of an embodiment of a computer-implemented method for the execution of single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform is given. Then, further embodiments, as well as an embodiment of a runtime system for the execution of single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform, are described.
[0086] 1, a block diagram of one embodiment of a computer-implemented method 100 for execution of single-threaded, asynchronous I / O-based program code (e.g., Node.JS, JavaScript, TypeScript, or Golang) on a serverless cloud computing runtime platform (e.g., Docker) is shown. The program code may be compiled, interpretable, or based on intermediate code.
[0087] In some embodiments, the method 100 begins with operation 102. In operation 102, an asynchronous operation of program code is executed, whereby the asynchronous operation is completed in a completion function. Alternatively, it can be completed in a callback function.
[0088] In some embodiments, the method 100 proceeds to operation 104, where the process associated with the asynchronous operation is hibernated. In some embodiments, the method 100 proceeds to operation 106, where the cloud runtime platform-related resources of the process, except for the associated system memory (e.g., RAM), are freed-up or released. Thus, data stored in the associated system memory remains active and, in the case of executable code, will be executed. It should be noted that at least a portion of the cloud runtime platform-related resources of the process may be released-up or freed-up. It is not required that all resources be automatically released.
[0089] In some embodiments, method 100 proceeds to operation 108 where an asynchronous operation is performed during the hibernation of the process. The asynchronous operation may be, for example, a system call potentially on another node of another cluster located in a different geographic location (e.g., typically a different cloud computing center).
[0090] In some embodiments, the method 100 proceeds to operation 110, where the completion function or completion function call initiated for the process after the asynchronous operation completes is intercepted. In some embodiments, the method 100 proceeds to operation 112, where the interception may be used to inject additional program code and / or data into the completion function to also be returned to the calling program.
[0091] In some embodiments, the method 100 proceeds to operation 114. In operation 114, the process is unhibernated and the process's freed cloud runtime platform related resources are reallocated. In some embodiments, the method 100 proceeds to operation 116. In operation 116, result data of the asynchronous operation and For processing At least one of additional program code and data returnA complementary function is performed, which allows the execution of single-threaded, asynchronous I / O-based program code on a serverless cloud runtime platform. In this way, advantageously "old" single-threaded program code, in particular program code for long transactions, can be operated without any changes in the stateless cloud computing framework.
[0092] Reference is now made to Figure 2, which illustrates a block diagram of an embodiment 200 of the relevant components and the interactions between them. On the inner left, block 202 represents a single-threaded program code that has a beginning and an end. However, it may also be a looped program that can only be terminated by user input or by an operating system-based service.
[0093] During operation of the program 202, asynchronous operations such as asynchronous I / O operations 204 are initiated with the aid of a placement routine 208. To control the execution of the asynchronous operations, several parameter values may be adjusted. An operating system process (not shown) associated with the single-threaded program code 202 may be hibernated during the execution of the asynchronous operations 204, separate from the system memory (e.g., associated RAM).
[0094] Upon completion of the asynchronous operation 204, a completion function 206 may be executed, for example in the form of another system call. However, the results of the asynchronous operation 204 are not returned directly to the single-threaded program code 202 and the respective process. Instead, the completion function is interrupted when attempting to return result data from other cross operations 204 to the program code 202, and additional program code and / or data 210 is injected into the return path 212.
[0095] In this manner, additional function points can be injected before the single-threaded program code 202 is brought out of hibernation or before the single-threaded program code continues its execution to further enhance associated operating system processing.
[0096] Reference is now made to Figure 3, which illustrates a block diagram of one embodiment of a runtime system 300 for executing single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform. The runtime system includes a first execution module 302 adapted to execute asynchronous operations of the program code, whereby the asynchronous operations are to be completed at a completion function. The runtime system also includes a hibernation module 304 adapted to hibernate a process associated with the asynchronous operation, and a release unit 306 adapted to release cloud runtime platform related resources of the process, except for associated system memory.
[0097] Additionally, the runtime system 300 includes a second execution module 308 adapted for executing an asynchronous operation during hibernation of the process, an interceptor 310 adapted for intercepting a completion function initiated for the process after completion of the asynchronous operation, and an injector module 312 adapted for injecting at least one of additional program code and data into the completion function.
[0098] The runtime system 300 also includes an unhibernation module 314 adapted to unhibernate the process and reallocate and free-up or release cloud runtime platform related resources of the process. The runtime system 300 also supports asynchronous operations. Results data and, For processing At least one of additional program code and data returnA third execution module 316 adapted to execute a complementing function is included, thereby enabling single-threaded, asynchronous I / O execution.
[0099] It should be noted that the units and modules of the runtime system 300 are communicatively coupled for signal exchange. Thus, the first execution module 302, the hibernation module 304, the release unit 306, the second execution module 308, the interceptor 310, the injector module 312, the unhibernation module 314, and the third execution module 316 may be linked together in such a manner. Alternatively, the units in these modules may be connected to the runtime system internal bus system 318.
[0100] Reference is now made to Figure 4A, which illustrates a cloud computing environment 410. As illustrated, the cloud computing environment 410 includes one or more cloud computing nodes 400 with which local computing devices used by cloud consumers (e.g., a personal digital assistant (PDA) or cell phone 400A, a desktop computer 400B, a laptop computer 400C, or an automobile computer system 400N, or combinations thereof, etc.) communicate. The nodes 400 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as, for example, a private, community, public, or hybrid cloud, or combinations thereof, as described above.
[0101] This allows the cloud computing environment 410 to provide infrastructure, platform, or software, or a combination thereof, as a service, for which the cloud consumer does not need to maintain resources on a local computing device. It should be understood that the types of computing devices 400A-N shown in Figure 4A are merely exemplary, and that the computing nodes 400 and the cloud computing environment 410 can communicate with any type of electronic device over any type of network or network addressable connection (e.g., using a web browser) or both.
[0102] FIG. 4B illustrates a set of functional abstraction layers provided by the cloud computing environment 410 (FIG. 4A). It should be understood in advance that the components, layers, and functions illustrated in FIG. 4B are merely exemplary, and the embodiments of the present disclosure are not limited thereto. As illustrated, the following layers and corresponding functions are provided: Hardware and software layer 415 includes hardware components and software components. Examples of hardware components include mainframe 402, server 406, RISC (reduced instruction set computer) architecture-based server 404, blade server 408, storage device 411, and network and network components 412. In some embodiments, the software components include network application server software 414 and / or database software 416.
[0103] The virtualization layer 420 provides an abstraction layer from which the following virtual entities can be provided, for example: virtual servers 422, virtual storage 424, virtual networks including virtual private networks 426, virtual applications and operating systems 428, and virtual clients 430.
[0104] By way of example, management layer 440 may provide the following functions: Resource provisioning 442 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 444 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. By way of example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks as well as protection for data and other resources. User portal 446 provides access to the cloud computing environment for consumers and system administrators. Service level management 448 provides allocation and management of cloud computing resources such that requested service levels are met. Service level agreement (SLA) planning and fulfillment 450 provides advance arrangement and procurement of anticipated future needs for cloud computing resources according to SLAs.
[0105] Workload layer 460 provides examples of functionality available to a cloud computing environment. Examples of workloads and functionality that can be provided from this layer include mapping and navigation 462, software development and lifecycle management 464, virtual classroom instruction delivery 466, data analytics processing 468, transaction processing 470, and runtime system 472 (compare with runtime system 300 in FIG. 3).
[0106] The embodiments of the present disclosure can be implemented in connection with virtually any type of computer, regardless of the platform suitable for storing and / or executing program code.
[0107] Reference is now made to Figure 5, which illustrates a high-level block diagram of another exemplary computer system 500 that may be used (e.g., using one or more processor circuits of a computer or computer processor) in implementing one or more of the methods, tools, and modules described herein, and any associated functionality, in accordance with embodiments of the present disclosure. In some embodiments, major components of computer system 500 may include one or more CPUs 502, a memory subsystem 504, a terminal interface 512, a storage interface 516, an I / O (input / output) device interface 514, and a network interface 518, all of which may be communicatively coupled, directly or indirectly, for communication between components via a memory bus 503, an I / O bus 508, and an I / O bus interface unit 510.
[0108] Computer system 500 may include one or more general purpose programmable central processing units (CPUs) 502A, 502B, 502C, and 502D (generally referred to herein as CPUs 502). In some embodiments, computer system 500 may include multiple processors typical of relatively large systems, although in other embodiments computer system 500 may alternatively be a single CPU system. Each CPU 502 may execute instructions stored in a memory subsystem 504 and may include one or more levels of on-board cache.
[0109] The system memory 504 may include computer system readable media in the form of volatile memory such as random access memory (RAM) 522 or cache memory 524. The computer system 501 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 526 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium such as a "hard drive." Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk"), or an optical disk drive may be provided for reading from or writing to a removable non-volatile optical disk such as a CD-ROM, DVD-ROM, or other optical media. Additionally, the memory 504 may include flash memory (e.g., a flash memory stick drive or flash drive). The memory devices may be connected to the memory bus 503 by one or more data media interfaces. The memory 504 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of various embodiments.
[0110] One or more programs / utilities 528, each having at least one set of program modules 530, may be stored in memory 504. The programs / utilities 528 may include a hypervisor (also called a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each or a combination of the operating system, one or more application programs, other program modules, and program data may include an implementation of a networking environment. The programs 528 and / or program modules 530 generally perform the functions or methodologies of the various embodiments.
[0111] 5 as a single bus structure providing a direct communication path between CPU 502, memory subsystem 504, and I / O bus interface 510, memory bus 503 may, in some embodiments, include a number of different buses or communication paths that may be arranged in any of a variety of configurations, such as hierarchical, star or web configurations, multiple hierarchical buses, parallel and redundant paths, or point-to-point links in other suitable types of configurations. Additionally, while I / O bus interface 510 and I / O bus 508 are shown as single respective units, computer system 500 may, in some embodiments, include multiple I / O bus interface units 510, multiple I / O buses 508, or both. Additionally, while multiple I / O interface units are shown isolating I / O bus 508 from the various communication paths running to the various I / O devices, in other embodiments some or all of the I / O devices may be directly connected to one or more system I / O buses.
[0112] In some embodiments, computer system 500 may be a multi-user mainframe computer system, a single-user system, or a server computer or similar device that has little or no direct user interface but receives requests from other computer systems (clients). Further, in some embodiments, computer system 500 may be implemented as a desktop computer, a portable computer, a laptop or notebook computer, a tablet computer, a pocket computer, a telephone, a smartphone, a network switch or router, or any other suitable type of electronic device.
[0113] It should be noted that Figure 5 is intended to illustrate representative major components of an exemplary computer system 500. However, in some embodiments, the individual components may have greater or less complexity than those depicted in Figure 5, there may be components other than or in addition to those shown in Figure 5, and the number, type, and configuration of such components may vary.
[0114] As discussed in more detail herein, it is contemplated that some or all of the operations of some of the method embodiments described herein may be performed in an alternative order, or not performed at all. Further, multiple operations may occur simultaneously or as an internal part of a larger process.
[0115] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications or technical improvements to the technology found in the market, or to allow those skilled in the art to understand the embodiments described herein.
[0116] The present disclosure may be an integrated system, method, or computer program product, or combination thereof, at any possible level of technical detail. The computer program product may include a computer-readable storage medium having stored thereon computer-readable program instructions for causing a processor to carry out aspects of the present disclosure.
[0117] The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system for a propagation medium. Examples of computer-readable media include semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random access memory (RAM), read-only memory (ROM), rigid magnetic disks, and optical disks. Current examples of optical disks include compact disk-read-only memory (CD-ROM), compact disk-read / write (CD-R / W), DVDs, and Blu-ray disks.
[0118] A computer-readable storage medium is a tangible device that holds and stores instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. More specific examples of computer-readable storage media include portable computer diskettes, hard disks, random access memories (RAM), read-only memories (ROM), programmable and erasable random access memories (EPROM or flash memory), static random access memories (SRAM), portable compact disk read-only memories (CD-ROM), digital versatile disks (DVD), memory sticks, floppy disks, coded devices such as punch cards or ridge structures with grooves on which mechanical instructions are recorded, and any suitable combination of the above. As used herein, a computer-readable storage medium should not be construed as a transitory signal itself, such as an electric signal transmitted over a wire, an electromagnetic wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electromagnetic wave propagating through a wire or other transmission medium (e.g., a light pulse passing through a fiber optic cable).
[0119] The computer-readable program instructions described herein can be downloaded from the computer-readable storage medium to each computing / processing device or to an external computer or storage device via a network (e.g., the Internet, a local area network, a wide area network, or a wireless network network, or a combination thereof). The network can be composed of copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in the computer-readable storage medium within the respective computing / processing device.
[0120] The computer readable program instructions for carrying out the operations of the present disclosure may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, as a standalone software package, or partially on the user's computer. Alternatively, they may be executed partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the computer readable program instructions to perform aspects of the disclosure.
[0121] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0122] These computer readable program instructions can be provided to a processor of a general purpose computer or a special purpose computer or other programmable data processing apparatus to generate a machine, such that the instructions, executed via the processor of the computer or other programmable data processing apparatus, generate means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable storage media can also be stored in computer readable storage media that can be connected to a computer, programmable data processing apparatus, or other device or combination that functions in a particular way, such that the computer readable program instructions in which the instructions are stored configure one of the products that includes instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0123] Computer readable program instructions, such as instructions to perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams on a computer, other programmable apparatus, or other device, may also be loaded into a computer, other programmable apparatus, or other device to perform a series of operational steps on the computer, other programmable apparatus, or other device to generate a computer-implemented process.
[0124] The flowcharts and / or block diagrams in the figures illustrate configurations, functions, and operations that the systems, methods, and computer program products according to various embodiments of the present disclosure may implement. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or part of an instruction, which constitutes one or more executable instructions for implementing a specified logical function. In some alternative embodiments, the functions shown in the blocks may differ from the order shown in the figures. For example, two blocks shown in succession may actually be accomplished as one step and executed simultaneously, substantially simultaneously, partially or fully in a time-overlapping manner, or the blocks may be executed in reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flow chart diagrams, and combinations of blocks in the block diagrams and / or flow chart diagrams, may be implemented by a special purpose hardware-based system that performs the specified functions or operations or executes a combination of special purpose hardware and computer instructions. The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the present disclosure. As used herein, the singular forms "a," "an," and "the" are intended to include the plural unless otherwise clear from the context. Furthermore, as used herein, it will be understood that the terms "comprises" and / or "comprising" specify the presence of stated features, integers, steps, operations, elements or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or combinations thereof.Corresponding structures, materials, acts, and equivalents of all means or steps plus functional elements in the following claims are intended to include any structure, material, or act for performing a function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the disclosure in the disclosed form. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope and spirit of the present disclosure. The embodiments have been selected and described in order to best explain the principles and practical applications of the present disclosure and to enable others skilled in the art to understand the present disclosure in various embodiments with various modifications as suited to the particular applications contemplated.
[0125] While the present disclosure has been described in terms of specific embodiments, it is anticipated that alterations and modifications thereof will become apparent to those skilled in the art, and it is therefore intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the present disclosure.
Claims
1. 1. A computer-implemented method for execution of single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform, the method comprising: executing an asynchronous operation of the program code, the asynchronous operation being completed in a completion function; hibernating a process associated with the asynchronous operation; and Releasing cloud runtime platform related resources of said process, except for associated system memory; performing said asynchronous operation during hibernation of said process; shutting down the completion function initiated for the process after the asynchronous operation is completed; injecting at least one of additional program code and data into said completion function; unhibernating the process and reallocating the released cloud runtime platform related resources of the process; executing the completion function to return result data of the asynchronous operation and at least one of the additional program code and the data for the process, wherein the execution of the single-threaded, asynchronous I / O based program code on the serverless cloud runtime platform is enabled; and The method includes:
2. The method of claim 1 , wherein unhibernating the process includes executing a resource allocation routine for the process.
3. The method of claim 2 , wherein the placement routine is a function of geographic availability of resources of the cloud runtime platform.
4. The placement routine further includes determining resource placement of the process to be awakened based on the location of the asynchronous operation. The method of claim 2 or 3, comprising:
5. determining resource allocation for resources required by the asynchronous operations based on the location of the hibernated process; The method of any one of claims 1 to 4, further comprising:
6. The method of any one of claims 1 to 5, wherein the asynchronous operations are implemented as services by the cloud runtime platform.
7. The method of any one of claims 1 to 6, wherein the asynchronous operation is a long running asynchronous input / output operation, a timer operation, or a wait for input operation.
8. The method comprises: determining, by a placement routine that initiated the execution of the asynchronous operation, a resource placement for the process to be unhibernated based on the data classification and respective parameters associated with the asynchronous operation; The method of any one of claims 1 to 7, further comprising:
9. 1. A runtime system for execution of single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform, the runtime system comprising: Memory, a processor in communication with the memory, the processor comprising: executing an asynchronous operation of the program code, the asynchronous operation being completed in a completion function; hibernating a process associated with the asynchronous operation; and Releasing cloud runtime platform related resources of said process, except for associated system memory; performing said asynchronous operation during hibernation of said process; shutting down the completion function initiated for the process after the asynchronous operation is completed; injecting at least one of additional program code and data into said completion function; unhibernating the process and reallocating the released cloud runtime platform related resources of the process; executing the completion function that returns result data of the asynchronous operation and at least one of the additional program code and the data for the operation, wherein the execution of the single-threaded, asynchronous I / O is enabled; configured to perform operations including: Runtime system.
10. 10. The runtime system of claim 9, wherein unhibernating the process includes executing a allocation routine for resources of the process.
11. The runtime system of claim 10 , wherein the placement routine is a function of geographic availability of resources of the cloud runtime platform.
12. The placement routine further includes determining resource placement of the process to be awakened based on the location of the asynchronous operation.
12. A runtime system according to claim 10 or 11, comprising:
13. The processor further determines resource allocation for resources required by the asynchronous operation based on the location of the hibernated process. A runtime system according to any one of claims 9 to 12, configured to perform operations including:
14. The runtime system of any one of claims 9 to 13, wherein the asynchronous operations are implemented as services by the cloud runtime platform.
15. The runtime system of any one of claims 9 to 14, wherein the asynchronous operation is a long running asynchronous input / output operation, a timer operation, or a wait for input operation.
16. 1. A computer program for execution of single-threaded, asynchronous I / O based program code on a serverless cloud runtime platform, the computer program causing one or more computing systems or controllers to perform operations, the operations comprising: executing an asynchronous operation of the program code, the asynchronous operation being completed in a completion function; hibernating a process associated with the asynchronous operation; and Releasing cloud runtime platform related resources of said process, except for associated system memory; performing said asynchronous operation during hibernation of said process; shutting down the completion function initiated for the process after the asynchronous operation is completed; injecting at least one of additional program code and data into said completion function; unhibernating the process and reallocating the released cloud runtime platform related resources of the process; executing the completion function that returns result data of the asynchronous operation and at least one of the additional program code and the data for the operation, wherein the execution of the single-threaded, asynchronous I / O is enabled; A computer program comprising:
17. 17. The computer program product of claim 16, wherein unhibernating the process includes executing a resource allocation routine for the process.
18. The computer program product of claim 17 , wherein the placement routine is a function of geographic availability of resources of the cloud runtime platform.
19. The placement routine further includes determining resource placement of the process to be awakened based on the location of the asynchronous operation.
19. A computer program according to claim 17 or 18, comprising:
20. The controller further determines resource allocation for resources required by the asynchronous operations based on a location of the hibernated process. configured to perform operations including: A computer program according to any one of claims 16 to 19.
Citation Information
Patent Citations
Task integration system
JP2007026008A
Proxy response program, proxy response device, and proxy response method
JP2017033331A
Facilitating debugging serverless applications via graph rewriting
JP2018073405A
Function Portability for Services Hubs using a Function Checkpoint
US20190339955A1
Method and system for processing data in a serverless computing environment
US20190384655A1