Tag-driven scheduling of computing resources for function execution
Tag-driven scheduling optimizes function execution in FaaS architectures by matching function tags with server resources, addressing suboptimal performance issues and reducing costs through efficient resource allocation.
Patent Information
- Application Number
- JP2023521036
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-10-12
- Filing Date
- 2021-08-19
- Publication Date
- 2025-09-17
- Estimated Expiration
- 2041-08-19
AI Technical Summary
FaaS architectures lack the ability to optimize function execution based on the specific resource requirements of functions, leading to suboptimal performance due to insufficient knowledge of the function's resource needs by the cloud infrastructure.
Implement tag-driven scheduling of computing resources, where functions are assigned to servers based on predefined tags that match the function's resource requirements, including affinity/anti-affinity preferences and resource availability, to ensure optimal execution.
Improves function execution speed and reduces costs by ensuring functions are deployed on suitable compute nodes with the necessary resources, enhancing performance and efficiency.
Smart Images

Figure 0007740845000002 
Figure 0007740845000003 
Figure 0007740845000004
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to methods, systems, and computer program products for managing the allocation of computing resources in a server cluster, and more particularly to methods, systems, and computer program products for tag-driven scheduling of computing resources for function execution. [Background technology]
[0002] Serverless computing refers to a computing model that allows developers to run code on remote servers as needed. This type of computing model is typically referred to as cloud computing. Cloud computing is a service delivery model that enables on-demand, convenient 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.
[0003] Many cloud computing service providers now offer Function as a Service (FaaS) capabilities. FaaS allows software developers to decompose their applications into many smaller components, or "functions," that can be invoked on demand without running the entire application in a dedicated service process. FaaS frameworks also completely abstract the servers away from developers, allowing developers to deploy functions without the burden of managing the infrastructure and resources that would otherwise be required to host a network-accessible application. Summary of the Invention
[0004] Exemplary embodiments provide tag-driven scheduling of computing resources for function execution. Some embodiments include extracting, by a scheduler, function tag data associated with a function identified by a deployment request. The embodiment further includes selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device. The embodiment further includes issuing, by the scheduler, instructions to the computing device, the issuance of the instructions causing allocation of resources to host execution of the function. Other embodiments of this aspect include corresponding computer systems, apparatuses, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the embodiments.
[0005] Some embodiments include a computer-usable program product that includes a computer-readable storage medium and program instructions stored on the storage medium.
[0006] Some embodiments include a computer system including a processor, a computer-readable memory, and a computer-readable storage medium, and program instructions stored on the storage medium for execution by the processor via the memory.
[0007] The novel features believed to be characteristic of the present invention are set forth in the appended claims. However, the invention itself, together with its preferred modes of use, further objects and advantages, will best be understood by reference to the following detailed description of illustrative embodiments, read in connection with the accompanying drawings. [Brief explanation of the drawings]
[0008] [Figure 1] 1 illustrates a cloud computing environment according to an embodiment of the present invention. [Figure 2] 1 illustrates abstraction model layers according to an embodiment of the present invention. [Figure 3] FIG. 1 illustrates a block diagram of an example system including a scheduling application in accordance with an example embodiment. [Figure 4] 1 illustrates a block diagram of an example system including a scheduling application for deploying functions, according to an example embodiment. [Figure 5] 1 illustrates a block diagram of an example system including a scheduling application that responds to function calls, according to an example embodiment. [Figure 6] 1 illustrates a flowchart of an example process for tag-driven scheduling of computing resources for function execution, according to an example embodiment. [Figure 7] 1 depicts a block diagram of a network of data processing systems in which illustrative embodiments may be implemented; [Figure 8] 1 illustrates a block diagram of a data processing system in which illustrative embodiments may be implemented; DETAILED DESCRIPTION OF THE INVENTION
[0009] Function as a Service is rapidly gaining popularity for many reasons. For example, utilizing the FaaS model provides a flexible way to add scalability and resiliency to application architectures. Furthermore, because computing resources are typically allocated according to application requirements, migrating existing applications to a FaaS architecture can reduce costs. FaaS architectures are autoscalable, allowing applications to expand to accommodate spikes in traffic or workload and then scale down again as traffic or workload subsides, helping to prevent application downtime and reducing costs by reducing unnecessary expenditures. FaaS also frees developers from the burden of maintaining servers and networking equipment, allowing them to focus on developing applications.
[0010] While these advantages of the FaaS architecture make it an attractive deployment option, embodiments recognize that there may be cases where the performance of a function depends on the amount or type of available host resources. As used herein, the term "host resources" refers to resources on a cloud hosting device that are available for use by functions executing on the host, including computational resources (e.g., the type or number of CPUs and / or GPUs), networking resources (e.g., bandwidth, SmartNIC support), storage resources (e.g., the amount of RAM, VRAM, solid-state drives (SSDs), or optical drive availability), and other I / O device resources.
[0011] One key benefit of FaaS is that developers can define a function and request its deployment without considering the platform; the cloud infrastructure deploys the function and scales it as needed. Unfortunately, this simplicity means that the function owner does not provide the cloud infrastructure with the information it needs to fully optimize the function. For example, a function that runs an artificial intelligence (AI) training routine deployed using a FaaS provider is deployed without the FaaS provider knowing what type of function it is, so the FaaS provider may schedule the function to run on a computing platform that lacks accelerators or other advantages for running AI workloads. This means that the resulting function execution time can be orders of magnitude slower than if the function were scheduled on a more suitable compute node (e.g., equipped with a GPU).
[0012] The illustrated embodiments address these issues by providing tag-driven scheduling of computing resources for function execution. In the illustrated embodiments, tag-driven scheduling involves the use of function placement tags in the FaaS lifecycle. For example, in some embodiments, a well-defined set of function placement "tags" can be created and used by function developers and FaaS providers, and assigned to both infrastructure compute nodes (by IT administrators) and function containers (by function developers). In some such embodiments, tags are then used as a mechanism for matching (or not matching) functions to the most suitable infrastructure nodes. In some embodiments, for increased flexibility, tags may include additional metadata related to affinity / anti-affinity preferences or requirements, or whether tag matching is mandatory or only preferred, or both.
[0013] Exemplary embodiments providing tag-driven scheduling of computing resources enable improved server selection by providing functions with the most suitable or best available (e.g., in terms of speed of execution or deployment cost, or both) underlying compute nodes. Using the placement tag information, the cloud infrastructure stores information about the function's associated placement policy according to which the function will be placed, and the cloud infrastructure uses the provided function tag information along with other collected information, such as expected runtimes on different platforms, costs per unit of time on different platforms, resource availability, time savings from running on the same machine as previously executed (affinity), etc., to determine the best available server placement for the function. For clarity, the following non-limiting examples of tags for functions and for hosts are provided:
[0014] [Table 1]
[0015] Many other tags may be used in addition to, instead of, or both of the above examples. In some embodiments, a FaaS service provider or other entity provides a list of function tags that developers can use and that are recognized by the FaaS service. In some embodiments, tags may be modified to indicate whether a function tag is required, preferred, or optional. For example, in some embodiments, an exclamation point may be added to the end of a tag to indicate that the function tag is required. In some embodiments, tags may be modified to indicate the priority of multiple tags.
[0016] In an exemplary embodiment, a system providing a FaaS service includes a computing resource manager or cloud manager that manages several computing resources. In some embodiments, the computing resource manager includes a user interface and a scheduling module. In some embodiments, the computing resource manager allows a remote user, such as an application developer, to submit a deployment request to the computing resource manager through the user interface. The computing resource manager responds to the deployment request by deploying a function on the computing resource with the aid of a tag interpreter.
[0017] In some embodiments, the tag interpreter checks the deployment request for function tag data representing the location tag of the function being deployed. If any tags are found, the tag interpreter searches for computing resources with matching or corresponding host tag data. For example, in some embodiments, the host tags of all computing resources are stored in a database, in which case the tag interpreter queries the database for matching tag data. In other embodiments, the tag interpreter polls computing resources for tags. In some such embodiments, the tag interpreter checks only computing resources that are known to have capacity and that meet other criteria that may be relevant, such as affinity / anti-affinity or geolocation rules. For example, in some embodiments, the tag interpreter may receive such a list from a computing resource manager or a scheduling module.
[0018] In some embodiments, the computing resource manager provides placement of functions on physical computer resources based on colocation rules, situational enforcement policies, and tag matching rules set by a system administrator. Tag matching rules are rules that specify how function tag data and host tag data should be compared and considered when selecting a server to host a function, including when and whether to trigger hard or soft enforcement of the tag matching rules. Hard enforcement of a tag matching rule can mean that a host server must satisfy some aspect of the function tag data to host the associated function, and that this is strictly enforced regardless of the circumstances or circumstances. In contrast, soft enforcement of a rule means that a host server does not necessarily have to satisfy some aspect of the function tag data to host the associated function, and thus, function placement can occur at the discretion of the scheduler mechanism regardless of the function tag data corresponding to the function being placed.
[0019] In some embodiments, the computer resource manager uses a scheduling module to deploy functions to computing resources based on satisfaction of various rules and policies, including tag matching rules. For example, in some embodiments, the scheduling module issues instructions to the computing resources to allocate resources to host the execution of the functions. In some embodiments, the scheduling module maintains a resource database or the like that indicates where various functions are deployed. In some embodiments, the resource database includes a function identifier for each function and a resource identifier for each computing resource, associating each function with the specific computing resource on which the function is hosted.
[0020] In some embodiments, the computing resource manager enables a remote user device to submit a function call to the computing resource manager. For example, the remote user device may be a data processing system, server, or client device, or a computer, or a smartphone, or an IoT device, as described with respect to Figures 7 and 8. In some embodiments, the function call includes a reference to a function that includes function tag data.
[0021] In some embodiments, when a function is called, it may be stored in memory in a dormant state or may be deployed and executing on a computing resource. If the function is already deployed, the scheduling module directs the function call to a host computing resource to execute the function in response to the function call. Alternatively, if the called function is not deployed, the scheduling module responds to the function call by performing a placement of the function on an available computing resource from among multiple computing resources.
[0022] In some embodiments, when a computing resource manager receives a function call and the scheduling module has previously selected a computing resource to host the called function, the computing resource manager checks information stored in a resource database to determine where (i.e., to which computing resource) the called function is assigned. In some such embodiments, the scheduling module receives information from the resource database indicating that the function is assigned to a particular computing resource. In some such embodiments, the scheduling module notifies the particular computing resource about the function call and routes the function call to the particular computing resource. In some such embodiments, the computing resource responds to the notification from the scheduling module by allocating space in memory to host the function and routes the function call to a function host, which receives the function call and handles execution of the function in response to the function call.
[0023] In some embodiments, when a computing resource manager receives a function call and the function is not assigned to a computing resource, a scheduling module selects a computing resource based on various context-specific enforcement policies, such as server availability, geographic proximity to the client device calling the function, and load balancing policies and tag matching rules. In some embodiments, the computing resource includes memory that stores computing resource tag data, which is an example of deployed functions and host tag data. In some embodiments, the computing resource also includes a system interface that communicates with the system interface of the computing resource manager. For example, in some embodiments, the computing resource manager may request tag data from the computing resource and store the tag data in a database along with host tag data from other computing resources as computing resource tag data.
[0024] In some embodiments, when a computing resource manager receives a function call, a scheduling module responds to the function call by using a tag interpreter to compare function tag data associated with the called function with tag data of various computing resources, including the computing resource. Upon selecting a computing resource on which to deploy the function, the scheduling module notifies the computing resource of the function deployment and function call and sends the function call to the computing resource. In some such embodiments, the computing resource responds to the notification from the scheduling module by allocating space in memory to host the function and sends the function call to a function host, which receives the function call and handles the execution of the function in response to the function call.
[0025] For clarity of description, and without implying any limitations thereto, exemplary embodiments are described using several example configurations. It is contemplated that one skilled in the art, given this disclosure, may envision numerous modifications, adaptations, and variations of the described configurations to achieve the described objectives, which are contemplated to be within the scope of the exemplary embodiments.
[0026] Furthermore, schematic representations of data processing environments are used in the figures and exemplary embodiments. Without departing from the scope of the exemplary embodiments, an actual computing environment may contain additional structures or components not shown or described herein, or structures or components that differ from those shown but perform similar functions as those described herein.
[0027] Furthermore, the exemplary embodiments are described with reference to specific components, actual or hypothetical, by way of example only, and each step described by various exemplary embodiments can be adapted to provide an explanation regarding decisions made by, for example, a machine learning classifier model.
[0028] Any particular manifestation of these and other similar artifacts is not intended as a limitation on the present invention, and any suitable manifestation of these and other similar artifacts may be selected within the scope of example embodiments.
[0029] The examples in this disclosure are used only for clarity of description and are not limitations on the exemplary embodiments. Any advantages listed herein are merely examples and are not intended as limitations on the exemplary embodiments. Additional or other advantages may be realized by specific exemplary embodiments. Furthermore, a particular exemplary embodiment may have some, all, or none of the advantages listed above.
[0030] Additionally, exemplary embodiments may be implemented with any type of data, data source, or access to a data source over a data network. Within the scope of the present invention, any type of data storage device may provide data to an embodiment of the present invention, either locally at a data processing system or over a data network. When an embodiment is described using a mobile device, within the scope of exemplary embodiments, any type of data storage device suitable for use with a mobile device may provide data to the embodiment, either locally at the mobile device or over a data network.
[0031] The exemplary embodiments are described using specific code, contrasting descriptions, computer-readable storage media, high-level functions, historical data, designs, architectures, protocols, layouts, schematics, and tools as examples only and not limitations on the exemplary embodiments. Furthermore, the exemplary embodiments are described in some cases using specific software, tools, and data processing environments as examples only for clarity of description. The exemplary embodiments may be used with other equivalent or similar purpose structures, systems, applications, or architectures. For example, other equivalent mobile devices, structures, systems, applications, or architectures may alternatively be used with such embodiments of the present invention within the scope of the present invention. The exemplary embodiments may be implemented in hardware, software, or a combination thereof.
[0032] The examples in this disclosure are used for clarity of description only and are not limitations on the exemplary embodiments. Additional data, operations, actions, tasks, activities, and manipulations for similar purposes may be envisioned from this disclosure and are considered to be within the scope of the exemplary embodiments.
[0033] Any advantages listed herein are merely examples and are not intended as limitations on the example embodiments. Additional or other advantages may be realized by specific example embodiments. Furthermore, a particular example embodiment may have some, all, or none of the above-listed advantages.
[0034] It should be appreciated that although this disclosure includes detailed descriptions of cloud computing, implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention may be implemented in connection with any other type of computing environment now known or later developed.
[0035] Cloud computing is a service delivery model that enables on-demand, convenient 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 can include at least five characteristics, at least three service models, and at least four deployment models.
[0036] The features are as follows:
[0037] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, as needed automatically and without the need for human interaction with the service provider.
[0038] Pervasive network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin-client or thick-client platforms (e.g., mobile phones, laptops, and personal digital assistants (PDAs)).
[0039] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to demand. There is a sense of location independence in that consumers generally have no control or knowledge of the exact location of the resources provided, although at higher levels of abstraction they may be able to specify a location (e.g., country, state, or data center).
[0040] Rapid Elasticity: Capacity can be quickly and elastically provisioned, in some cases automatically, to quickly scale out, and quickly released to quickly scale in. In many cases, to the consumer, the capacity available for provisioning appears unlimited, and any amount can be purchased at any time.
[0041] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.
[0042] The service model is as follows:
[0043] Software as a Service (SaaS): The capability offered to the consumer is the use of the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, nor even the capabilities of individual applications, with the possible exception of limited per-user application configuration settings.
[0044] Platform as a Service (PaaS): The capability offered to consumers is the deployment onto a cloud infrastructure of applications they create or acquire, written using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does control the deployed applications and, in some cases, the configuration of the application hosting environment.
[0045] Infrastructure as a Service (IaaS): The capability provided to consumers is the provisioning of processing, storage, network, and other basic computing resources onto which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does control the operating systems, storage, deployed applications, and in some cases, limited control over selected networking components (e.g., host firewalls).
[0046] The deployment model is as follows:
[0047] Private Cloud: The cloud infrastructure is operated solely for one organization. It can be managed by the organization or a third party and can reside on-premise or off-premise.
[0048] Community Cloud: Cloud infrastructure is shared by several organizations and supports a specific community with shared interests (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by the organization or a third party and can reside on-premise or off-premise.
[0049] Public Cloud: Cloud infrastructure is made available to the public or large industry organizations and is owned by an organization that sells cloud services.
[0050] Hybrid Cloud: A cloud infrastructure is a composite of two or more clouds (private, community, or public), where each cloud remains a unique entity but is bound by standard or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).
[0051] Cloud computing environments are service-oriented and focus on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0052] Referring now to FIG. 1, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automotive computer system 54N, or any combination thereof, can communicate. The nodes 10 may also communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks (not shown), such as the private cloud, community cloud, public cloud, or hybrid cloud described above, or any combination thereof. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or any combination thereof, as a service, without requiring the cloud consumer to maintain resources on their local computing device. Of course, the types of computing devices 54A-N shown in FIG. 1 are for illustrative purposes only, and the computing node 10 and cloud computing environment 50 can communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).
[0053] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood that the components, layers, and functions shown in Figure 2 are for illustrative purposes only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0054] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (Reduced Instruction Set Computer) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0055] The virtualization layer 70 provides an abstraction layer over which virtual entities, such as virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75, can be provided.
[0056] In one example, management layer 80 may provide the following functions: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides tracking of costs as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of those resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks, as well as protection of data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides allocation and management of cloud computing resources to ensure required service levels are met. Service level agreement (SLA) planning and achievement 85 provides proactive provisioning and procurement of cloud computing resources in anticipation of future demand according to SLAs.
[0057] The workload layer 90 provides examples of functionality for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and workload management 96.
[0058] Referring to Figure 3, this figure shows a block diagram of an example system 300 including a scheduling application as a scheduling module 308 according to an example embodiment. In some embodiments, the scheduling module 308 is deployed within the cloud computing environment of Figure 1, for example, in the workload tier 90 of Figure 2. By way of example, in some embodiments, the scheduling module 308 is implemented as the workload manager 96 in Figure 2.
[0059] In the illustrated embodiment, system 300 includes a computing resource manager 302 and computing resources 304. For example, in some embodiments, system 300 is a cloud computing environment supporting a FaaS architecture, where computing resource manager 302 functions as a cloud manager and computing resources 304 include a cloud computing server cluster.
[0060] In the illustrated embodiment, computing resource manager 302 includes a user interface 306 and a scheduling module 308. In the illustrated embodiment, computing resource manager 302 allows a system administrator 322 or a remote user device 324 to set up and manage computing resources 304 through user interface 306. In the illustrated embodiment, scheduling module 308 performs placement of functions on physical resources based on various context-specific enforcement policies, such as server availability, geographic proximity to the client device calling the function, and load balancing policies. For example, in the illustrated example, scheduling module 308 includes an optimizer 312 that supports load balancing migration by scheduling module 308 by monitoring the performance of computing resources 304 to determine when migration needs to occur according to policies set by system administrator 322.
[0061] In the illustrated embodiment, computing resource manager 302 enables system administrator 322 to set up and manage hardware computing resources 304. Computing resources 304 represent computer resources, such as physical host servers, within a cloud computing environment. In the illustrated embodiment, computing resources 304 include two groups of servers: servers 314a and 314b are grouped into server group 314, and servers 316a and 316b are grouped into server group 316. In some embodiments, a server group is a logical grouping of one or more servers managed by computing resource manager 302. In some embodiments, computing resources 304 may include multiple physical servers (not shown) organized into one or more server groups. A server group may be hosted on one or more physical hosts within a host group. In the illustrated embodiment, computing resources 304 also includes servers 318 and 320 that are not within a server group.
[0062] In some embodiments, computing resource manager 302 provides placement of functions on physical computer resources based on colocation rules and context-specific enforcement policies set by a system administrator. Examples of colocation rules are affinity and anti-affinity. An affinity rule specifies a relationship in which a function is placed with related functions in a group on one or more physical hosts. Similarly, an anti-affinity rule specifies that a function should not be placed with other functions belonging to the same group on the same physical host. As used herein, a context-specific enforcement policy refers to a situation or set of circumstances under which a policy determines whether a colocation rule is hard or soft enforced. Hard enforcement of a rule means that the colocation rule (affinity or anti-affinity) is strictly enforced regardless of the situation or circumstances. In contrast, soft enforcement of rules means that colocation rules are not necessarily enforced, and thus function placement can occur at the discretion of the scheduler mechanism regardless of any affinity or anti-affinity rules that correspond to the function being placed.
[0063] In the illustrated embodiment, the scheduling module 308 also includes a tag interpreter 310. In some embodiments, the computing resource manager 302 provides for the placement of functions on physical computer resources based on tag matching rules set by a system administrator. Tag matching rules are rules that specify how function tag data and host tag data should be compared and considered when selecting a server to host a function, including when and whether to trigger hard or soft enforcement of the tag matching rules. Hard enforcement of a tag matching rule can mean that a host server must satisfy some aspect of the function tag data to host the associated function, and that this is strictly enforced regardless of the circumstances or circumstances. In contrast, soft enforcement of a rule means that a host server does not necessarily have to satisfy some aspect of the function tag data to host the associated function, and thus, function placement can occur at the discretion of the scheduler mechanism regardless of the function tag data corresponding to the function being placed.
[0064] Referring to Figure 4, this figure shows a block diagram of an example system 400 including a scheduling application as a scheduling module 410 that deploys functions, according to an example embodiment. In some embodiments, the scheduling module 410 is deployed within the cloud computing environment of Figure 1, for example, in the workload tier 90 of Figure 2. By way of example, in some embodiments, the scheduling module 410 is implemented as the workload manager 96 in Figure 2.
[0065] In the illustrated embodiment, system 400 includes a computing resource manager 402 and computing resources 404. For example, in some embodiments, system 400 is a cloud computing environment supporting a FaaS architecture, where computing resource manager 402 functions as a cloud manager and computing resources 404 include cloud computing server capabilities.
[0066] In the illustrated embodiment, computing resource manager 402 includes a user interface 408 and a scheduling module 410. In the illustrated embodiment, computing resource manager 402 allows a remote user, such as an application developer, to submit a deployment request 418 to computing resource manager 402 through user interface 408. In the illustrated embodiment, deployment request 418 includes a function 420 that includes function tag data 422. In the illustrated embodiment, scheduling module 410 responds to deployment request 418 by performing placement of function 420 on an available computing resource from among the plurality of computing resources 304 shown in FIG. 3 .
[0067] 4, the scheduling module 410 selects a computing resource 404 based on various context-specific enforcement policies, such as server availability, geographic proximity to the client device calling the function, and load balancing policies and tag matching rules. In the illustrated embodiment, the computing resource 404 includes a memory 426 that stores deployed functions 420 and computing resource tag data 428, which is an example of host tag data. In the illustrated embodiment, the computing resource 404 also includes a system interface 424 that communicates with the system interface 406 of the computing resource manager 402. For example, in the illustrated example, the computing resource manager 402 may request the tag data 428 from the computing resource 404 and store the tag data 428, along with host tag data from other computing resources, in memory 412 as computing resource tag data 416. In some embodiments, when computing resource manager 402 receives deploy request 418, scheduling module 410 responds to deploy request 418 by temporarily storing function 420 along with its associated tag data 422 in memory 412. Scheduling module 410 further uses tag interpreter 414 to compare function tag data 422 with tag data 416 of various computing resources, including computing resource 404.
[0068] In some embodiments, computing resource manager 402 provides placement of functions on physical computer resources based on colocation rules, situational enforcement policies, and tag matching rules set by a system administrator. Tag matching rules are rules that specify how function tag data and host tag data should be compared and considered when selecting a server to host a function, including when and whether to trigger hard or soft enforcement of tag matching rules. Hard enforcement of tag matching rules can mean that a host server must satisfy some aspect of the function tag data to host the associated function, and that this is strictly enforced regardless of the circumstances or circumstances. In contrast, soft enforcement of rules means that a host server does not necessarily have to satisfy some aspect of the function tag data to host the associated function, and thus, function placement can occur at the discretion of the scheduler mechanism regardless of the function tag data corresponding to the function being placed. In the illustrated embodiment, the function 420 is ultimately deployed by the scheduling module 410 to the computing resources 404 based on satisfying various rules and policies, including tag matching rules. For example, in some embodiments, the scheduling module 410 issues instructions to the computing resources 404 via the system interface 406 and the system interface 424 to allocate resources to host the execution of the function 420.In some embodiments, the scheduling module 410 maintains a resource database (e.g., resource database 534 of FIG. 5 ) or the like that indicates where various functions are deployed, and the scheduling module 410 updates the resource database as functions 420 are deployed and executed by computing resources 404.
[0069] Referring to Figure 5, this figure shows a block diagram of an example system 500 including a scheduling application as a scheduling module 510 that responds to function calls, according to an example embodiment. In some embodiments, the scheduling module 510 is deployed within the cloud computing environment of Figure 1, for example, in the workload tier 90 of Figure 2. By way of example, in some embodiments, the scheduling module 510 is implemented as the workload manager 96 in Figure 2.
[0070] In the illustrated embodiment, system 500 includes a computing resource manager 502 and computing resources 504. For example, in some embodiments, system 500 is a cloud computing environment supporting a FaaS architecture, where computing resource manager 502 acts as a cloud manager and computing resources 504 include cloud computing server capabilities.
[0071] In the illustrated embodiment, computing resource manager 502 includes a user interface 508 and a scheduling module 510. In the illustrated embodiment, computing resource manager 502 enables remote user devices 512 to submit function calls 518 to computing resource manager 502 through user interface 508. In the illustrated embodiment, function call 518 includes a reference to a function 520 that includes function tag data 522. In the illustrated embodiment, function 520 may be stored dormant in database 532 or may already be deployed on computing resource 504. If the function is already deployed, scheduling module 510 directs function call 518 to computing resource 504 to execute function 520 in response to function call 518. Otherwise, if the function 520 is not deployed, the scheduling module 510 responds to the function call 518 by performing a placement of the function 520 on an available computing resource from among the plurality of computing resources 304 shown in FIG. 3 .
[0072] In some embodiments, the scheduling module 510 previously selected a computing resource 504 and stored information in the resource database 534 indicating that the function 520 is assigned to the computing resource 504. In some such embodiments, the scheduling module 510 checks the resource database 534 for deployment information for the function 520 and receives information from the resource database 534 indicating that the function 520 is assigned to the computing resource 504. In some such embodiments, the scheduling module 510 notifies the computing resource 504 about the function call 518 via the system interface 506 and the system interface 524 of the computing resource 504 and sends the function call 518 to the computing resource 504. In some such embodiments, the computing resource 504 responds to the notification from the scheduling module 510 by allocating space in memory 526 for hosting the function 520 and sending a function call 518 to the function host 530, which receives the function call 518 and handles the execution of the function 520 in response to the function call 518.
[0073] In some embodiments, if the function 520 is not assigned to a computing resource, the scheduling module 510 selects a computing resource 504 based on various context-specific enforcement policies, such as server availability, geographic proximity to the client device calling the function, and load balancing policies and tag matching rules. In the illustrated embodiment, the computing resource 504 includes a memory 526 that stores the deployed function 520 and computing resource tag data 528, which is an example of host tag data. In the illustrated embodiment, the computing resource 504 also includes a system interface 524 that communicates with the system interface 506 of the computing resource manager 502. For example, in the illustrated example, the computing resource manager 502 may request the tag data 528 from the computing resource 504 and store the tag data 528, along with host tag data from other computing resources, as computing resource tag data 516 in a database 532. In some embodiments, when computing resource manager 502 receives function call 518, scheduling module 510 responds to function call 518 by using tag interpreter 514 to compare function tag data 522 associated with the called function 520 with tag data 516 of various computing resources, including computing resource 504. Upon selecting a computing resource 504 on which to deploy function 520, scheduling module 510 notifies computing resource 504 via system interface 506 and system interface 524 of computing resource 504 of the deployment of function 520 and function call 518, and sends function call 518 to computing resource 504.In some such embodiments, the computing resource 504 responds to the notification from the scheduling module 510 by allocating space in memory 526 for hosting the function 520 and sending a function call 518 to the function host 530, which receives the function call 518 and handles the execution of the function 520 in response to the function call 518.
[0074] In some embodiments, computing resource manager 502 provides placement of functions on physical computer resources based on colocation rules, situational enforcement policies, and tag matching rules set by a system administrator. Tag matching rules are rules that specify how function tag data and host tag data should be compared and considered when selecting a server to host a function, including when and whether to trigger hard or soft enforcement of tag matching rules. Hard enforcement of tag matching rules can mean that a host server must satisfy some aspect of the function tag data to host the associated function, and this is strictly enforced regardless of the circumstances or circumstances. In contrast, soft enforcement of rules means that a host server does not necessarily have to satisfy some aspect of the function tag data to host the associated function, and thus function placement can occur at the discretion of the scheduler mechanism regardless of the function tag data corresponding to the function being placed. In the illustrated embodiment, the function 520 is ultimately deployed by the scheduling module 510 to the computing resources 504 based on satisfying various rules and policies, including tag matching rules. For example, in some embodiments, the scheduling module 510 issues instructions to the computing resources 504 via the system interface 506 and the system interface 524 to allocate resources to host the execution of the function 520.In some embodiments, the scheduling module 510 maintains a resource database 534 (e.g., resource database 534 of FIG. 5 ) or the like that indicates where various functions are deployed, and the scheduling module 510 updates the resource database as functions 520 are deployed and executed by computing resources 504.
[0075] Referring to Figure 6, this figure illustrates a flowchart of an example process 600 for tag-driven scheduling of computing resources for function execution in accordance with an example embodiment. In some embodiments, process 600 is performed by a scheduling module deployed within the cloud computing environment of Figure 1, such as in workload tier 90 of Figure 2. By way of example, in some embodiments, process 600 is performed by a scheduling module implemented as workload manager 96 in Figure 2.
[0076] In some embodiments, at block 602, the scheduling module receives a request related to hosting the execution of a function from a server cluster. Then, at block 604, the scheduling module parses the request to extract function tag data. In some embodiments, the scheduling module detects function tag data related to a function identified by the request. In some embodiments, the request is related to hosting the execution of the function within the server cluster. In some embodiments, the scheduling module receives the request as a deploy request that includes source code for the function. In some such embodiments, the scheduling module parses the deploy request into multiple data segments and detects function tag data in at least one of the multiple data segments.
[0077] Next, at block 606, the scheduling module identifies a computing device within the server cluster that will host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device. In some embodiments, the scheduling module searches a resource database to determine whether the function is already assigned to a computing resource. In some embodiments, the scheduling module searches the computing resource tag data for host tag data that most closely matches the function tag data. The scheduling module identifies an indication of a first rule in the function tag data that must be enforced when deploying the function. In some embodiments, the first rule in the function tag data specifies a type of computing hardware that must be available on the computing resource that will host the function. In some embodiments, the scheduling module identifies an indication of a second rule in the function tag data that is not required to be enforced when deploying the function. In some embodiments, the scheduling module detects that the computing device satisfies the first rule in the function tag data and detects that the computing device does not satisfy the second rule in the function tag data. In some embodiments, the scheduling module identifies a portion of the host tag data that indicates the presence of a type of computing hardware that must be available on the computing resource hosting the function.
[0078] Next, at block 608, the scheduling module issues instructions to the computing device to allocate resources to host execution of the function. Finally, at block 610, the scheduling module updates the resource database to indicate that the function is being executed by the computing device.
[0079]
[0033] With reference to the figures, and in particular to Figures 7 and 8, these figures are illustrations of exemplary data processing environments in which illustrative embodiments may be implemented. Figures 7 and 8 are merely examples and are not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. In particular implementations, numerous modifications may be made to the depicted environments based on the following description.
[0080] 7 illustrates a block diagram of a network of data processing systems in which exemplary embodiments may be implemented. Data processing environment 700 is a network of computers in which exemplary embodiments may be implemented. Data processing environment 700 includes network 702. Network 702 is the medium used to provide communications links between various devices and computers connected within data processing environment 700. Network 702 may include connections such as wires, wireless communications links, or fiber optic cables.
[0081] Client and server are merely example roles for particular data processing systems connected to network 702 and are not intended to exclude other configurations or roles for these data processing systems. Data processing system 704 couples to network 702. Software applications may execute on any data processing system within data processing environment 700. Any software application described as executing on processing system 704 in FIG. 7 can be configured to execute in a similar manner on another data processing system. Any data or information stored or generated on data processing system 704 in FIG. 7 can be configured to be stored or generated in a similar manner on another data processing system. A data processing system, such as data processing system 704, may contain data and may have software applications or software tools executing computing processes thereon. In some embodiments, data processing system 704 includes memory 724, which may include application 705A, which may be configured to implement one or more of the functions of the data processor described herein, according to one or more embodiments.
[0082] A server 706 is coupled to the network 702 along with a storage unit 708. The storage unit 708 includes a database 709 configured to store data described herein with respect to various embodiments, such as image data and attribute data. The server 706 is a conventional data processing system. In some embodiments, the server 706 may include an application 705B that may be configured to implement one or more of the functions of a processor described herein, according to one or more embodiments.
[0083] Clients 710, 712, and 714 are also coupled to network 702. A conventional data processing system, such as server 706 or client 710, 712, or 714, may contain data and may have software applications or tools that perform conventional computing processes thereon.
[0084] Merely by way of example, and without implying any limitations to such architecture, Figure 7 illustrates certain components that may be used in an exemplary implementation of an embodiment. For example, server 706 and clients 710, 712, and 714 are illustrated as servers and clients by way of example only, and are not intended to imply limitations to a client-server architecture. As another example, certain embodiments may be distributed across several data processing systems and the data network shown, while other embodiments may be implemented on a single data processing system within the scope of the exemplary embodiment. Conventional data processing systems 706, 710, 712, and 714 further represent exemplary nodes in clusters, partitions, and other configurations suitable for implementing embodiments.
[0085] Device 732 is an example of a conventional computing device as described herein. For example, device 732 may take the form of a smartphone, a tablet computer, a laptop computer, a stationary or portable version of client 710, a wearable computing device, or any other suitable device. In some embodiments, device 732 sends a request to server 706 to perform one or more data processing tasks via application 705B, such as initiating a process described herein for a registry server. Any software application depicted as executing in another conventional data processing system in FIG. 7 may be configured to execute in device 732 in a similar manner. Any data or information stored or generated in another conventional data processing system in FIG. 7 may be configured to be stored or generated in device 732 in a similar manner.
[0086] Server 706, storage unit 708, data processing system 704, and clients 710, 712, and 714, and device 732 may be coupled to network 702 using wired connections, wireless communication protocols, or other suitable data connectivity. Clients 710, 712, and 714 may be, for example, personal computers or network computers.
[0087] In the shown example, server 706 may provide data such as boot files, operating system images, and applications to clients 710, 712, and 714. Clients 710, 712, and 714 may be clients to server 706 in this example. Clients 710, 712, 714, or some combination thereof, may include their own data, boot files, operating system images, and applications. Data processing environment 700 may include additional servers, clients, and other devices not shown.
[0088] In the illustrated example, memory 724 may provide data such as boot files, operating system images, and applications to processor 722. Processor 722 may also include its own data, boot files, operating system images, and applications. Data processing environment 700 may include additional memory, processors, and other devices not shown.
[0089] In the depicted example, data processing environment 700 may be the Internet. Network 702 may represent a collection of networks and gateways that use Transmission Control Protocol / Internet Protocol (TCP / IP) and other protocols to communicate with one another. At the heart of the Internet is a backbone of data communication links between major nodes or host computers, including thousands of commercial, government, educational, and other computer systems that route data and messages. Of course, data processing environment 700 also may be implemented as a number of different types of networks, such as, for example, an intranet, a local area network (LAN), or a wide area network (WAN). Figure 7 is intended as an example, and not as an architectural limitation for different illustrative embodiments.
[0090] Among other applications, data processing environment 700 may be used in conjunction with other applications to implement a host-server-container-enabled environment in which exemplary embodiments may be implemented. The host-server-container-enabled environment allows containerized software applications and data to be distributed across a network such that the applications function using interactivity between traditional client and server data processing systems. Data processing environment 700 may also employ a service-oriented architecture in which interoperable software components distributed across a network may be packaged together as a coherent business application. Data processing environment 700 may also take the form of a cloud and use a cloud computing model of service delivery to enable on-demand, convenient 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.
[0091] Referring to Figure 8, this figure shows a block diagram of a data processing system in which the illustrative embodiments may be implemented. Data processing system 800 is an example of a conventional computer, such as data processing system 704, server 706, or clients 710, 712, and 714 in Figure 7, or another type of device in which computer-usable program code or instructions for implementing the processes of the illustrative embodiments may reside.
[0092] Data processing system 800 further represents a conventional data processing system or configuration therein, such as conventional data processing system 732 in FIG. 7, in which computer-usable program code or instructions for implementing the processes of the exemplary embodiments may reside. Data processing system 800 is described as a computer by way of example only, and not limitation. Implementations in the form of other devices, such as device 732 in FIG. 7, may modify data processing system 800, such as by adding a touch interface, or even eliminate certain components shown, without departing from the general description of the operation and function of data processing system 800 described herein.
[0093] In the illustrated example, data processing system 800 uses a hub architecture including a North Bridge and memory controller hub (NB / MCH) 802 and a South Bridge and input / output (I / O) controller hub (SB / ICH) 804. A processing unit 806, main memory 808, and a graphics processor 810 are coupled to North Bridge and memory controller hub (NB / MCH) 802. Processing unit 806 may include one or more processors and may further be implemented using one or more heterogeneous processor systems. Processing unit 806 may be a multi-core processor. Graphics processor 810 may, in some implementations, be coupled to NB / MCH 802 through an accelerated graphics port (AGP).
[0094] In the illustrated example, a local area network (LAN) adapter 812 is coupled to a south bridge and I / O controller hub (SB / ICH) 804. An audio adapter 816, a keyboard and mouse adapter 820, a modem 822, a read-only memory (ROM) 824, a universal serial bus (USB) and other ports 832, and PCI / PCIe devices 834 are coupled to the south bridge and I / O controller hub 804 through a bus 838. A hard disk drive (HDD) or solid-state drive (SSD) 826 and a compact disk-read-only memory (CD-ROM) 830 are coupled to the south bridge and I / O controller hub 804 through a bus 840. The PCI / PCIe devices 834 may include, for example, an Ethernet adapter, an add-in card, and a PC card for a notebook computer. PCI uses a card bus controller, while PCIe does not. ROM 824 may be, for example, a flash binary input / output system (BIOS). Hard disk drive 826 and CD-ROM 830 may use, for example, integrated drive electronics (IDE), serial advanced technology attachment (SATA) interfaces, or variations such as external SATA (eSATA) and micro-SATA (mSATA). Super I / O (SIO) devices 836 may be coupled to south bridge and I / O controller hub (SB / ICH) 804 through bus 838.
[0095] Memory such as main memory 808, ROM 824, or flash memory (not shown) are some examples of computer-usable storage devices. Hard disk drives or solid-state drives 826, CD-ROMs 830, and other similarly usable devices are some examples of computer-usable storage devices that include computer-usable storage media.
[0096] An operating system executes on processing unit 806. The operating system coordinates and provides control of various components within data processing system 800 in FIG. 8. The operating system may be a commercially available operating system for any type of computing platform, including, but not limited to, server systems, personal computers, and mobile devices. An object-oriented or other type of programming system may work in conjunction with the operating system to provide calls to the operating system from programs or applications running on data processing system 800.
[0097] Instructions for an operating system, an object-oriented programming system, and an application or program, such as application 705 in Figure 7, may reside on a storage device, such as in the form of code 826A on hard disk drive 826, and may be loaded into at least one of one or more memories, such as main memory 808, for execution by processing unit 806. The processes of the exemplary embodiments may be performed by processing unit 806 using computer-implemented instructions, which may be in a memory, such as main memory 808, read-only memory 824, or one or more peripheral devices.
[0098] Additionally, in one case, code 826A may be downloaded over network 801A from remote system 801B, where similar code 801C is stored on storage device 801D. In another case, code 826A may be downloaded over network 801A to remote system 801B, where the downloaded code 801C is stored on storage device 801D.
[0099] The hardware in Figure 7-2 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives, and the like, may be used in addition to or in place of the hardware depicted in Figure 7-2. Additionally, the processes of the illustrative embodiments may be applied to multiprocessor data processing systems.
[0100] In some illustrative examples, data processing system 800 may be a personal digital assistant (PDA), which is typically configured with flash memory to provide non-volatile memory for storing operating system files and / or user-generated data. The bus system may include one or more buses, such as a system bus, an I / O bus, and a PCI bus. Of course, the bus system may be implemented using any type of communications fabric or architecture that provides for a transfer of data between various components or devices attached to the communications fabric or architecture.
[0101] The communications unit may include one or more devices used to transmit and receive data, such as a modem or network adapter. The memory may be, for example, main memory 808 or a cache, such as that found in north bridge and memory controller hub 802. The processing unit may include one or more processors or CPUs.
[0102] The depicted example in Figure 7-2 and above-described examples are not meant to imply architectural limitations. For example, data processing system 800 may also be a tablet computer, a laptop computer, or a telephone device in addition to taking the form of a mobile or wearable device.
[0103] When a computer or data processing system is described as a virtual machine, virtual device, or virtual component, the virtual machine, virtual device, or virtual component operates like data processing system 800 using virtualized manifestations of some or all of the components depicted in data processing system 800. For example, in a virtual machine, virtual device, or virtual component, processing unit 806 is manifested as a virtualized instance of all or some of the hardware processing units 806 available in the host data processing system, main memory 808 is manifested as a virtualized instance of all or some portion of main memory 808 that may be available in the host data processing system, and disk 826 is manifested as a virtualized instance of all or some portion of disk 826 that may be available in the host data processing system. The host data processing system in such cases is represented by data processing system 800.
[0104] The following definitions and abbreviations will be used for interpreting the claims and the specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "contains," or "containing," or any variation thereof, are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or device that comprises listed elements is not necessarily limited to only those elements but can include other elements not expressly listed or that are inherent to such composition, mixture, process, method, article, or device.
[0105] Furthermore, the word "illustrative" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer number greater than or equal to one, i.e., 1, 2, 3, 4, etc. The term "a plurality" is understood to include any integer number greater than or equal to two, i.e., 2, 3, 4, 5, etc. The term "connection" can include indirect and direct connections.
[0106] References herein to "one embodiment," "an embodiment," "an example embodiment," etc. indicate that the described embodiment may include a particular feature, structure, or feature, but that not all embodiments may include that particular feature, structure, or feature. Moreover, such phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or feature is described in connection with an embodiment, it is believed to be within the knowledge of one of ordinary skill in the art to implement such feature, structure, or feature in connection with other embodiments, whether or not explicitly described.
[0107] The terms "about," "substantially," "approximately," and variations thereof are intended to include the degree of error associated with measurement of a particular quantity based on equipment available at the time of filing. For example, "about" can include a range of ±8%, or 5%, or 2% of a given value.
[0108] The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Numerous modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles, practical applications, or technical improvements of the embodiments over existing technology, or to enable those skilled in the art to understand the embodiments described herein.
[0109] The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Numerous modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles, practical applications, or technical improvements of the embodiments over existing technology, or to enable those skilled in the art to understand the embodiments described herein.
[0110] Thus, computer-implemented methods, systems, or apparatus, and computer program products are provided in exemplary embodiments for managing online community participation and other related features, functions, or operations. Where an embodiment, or portion thereof, is described with respect to a certain type of device, the computer-implemented method, system, or apparatus, computer program product, or portion thereof, is adapted or configured for use with appropriate and equivalent manifestations of that type of device.
[0111] Where an embodiment is described as being implemented in an application, provision of the application in a Software-as-a-Service (SaaS) model is considered within the scope of exemplary embodiments. In a SaaS model, the capabilities of an application implementing an embodiment are provided to users by running the application within a cloud infrastructure. Users can access the application using a variety of client devices through thin client interfaces such as web browsers (e.g., web-based email) or other lightweight client applications. Users do not manage or control the underlying cloud infrastructure, including the cloud infrastructure's network, servers, operating systems, or storage. In some cases, users may not even manage or control the capabilities of the SaaS application. In other cases, a SaaS implementation of an application may allow for the possible exception of limited per-user application configuration settings.
[0112] The present invention may be embodied as a system, method, or computer program product, or any combination thereof, integrated at any possible level of technical detail. The computer program product may include one or more computer-readable storage media having computer-readable program instructions that cause a processor to perform aspects of the present invention.
[0113] A computer-readable storage medium may be any tangible device capable of retaining and storing 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 foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, punch cards, or mechanically encoded devices such as ridge structures in grooves in which instructions are recorded, and any suitable combination of the foregoing. As used herein, computer-readable storage media shall not be construed as being signals that are transitory in nature, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted through wires.
[0114] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to an individual computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or any combination thereof. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or any combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to be stored in a computer-readable storage medium within the individual computing / processing device.
[0115] The computer-readable program instructions for carrying out the operations of the present invention may be source 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, integrated circuit configuration data, or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk®, C++, or the like, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, 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 through 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., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, a field-programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry to perform aspects of the present invention.
[0116] Aspects of the present invention 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 invention. 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.
[0117] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus such that the instructions, when executed by the processor of the computer or other programmable data processing apparatus, produce means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. The computer-readable program instructions, which can direct a computer, programmable data processing apparatus, or other device, or any combination thereof, to function in a particular manner, may also be stored on a computer-readable storage medium such that the computer-readable storage medium having the instructions stored thereon comprises an article of manufacture containing instructions for implementing each aspect of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0118] Furthermore, the computer-readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device, resulting in a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0119] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, which includes one or more executable instructions that implement the specified logical function(s). In some alternative implementations, the functions shown in the blocks may occur in a different order than that shown in the figures. For example, depending on the functionality involved, two blocks shown in succession may in fact be executed virtually concurrently, or the blocks may be executed in the reverse order. Furthermore, it should be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, can be implemented by a dedicated hardware-based system that performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0120] Embodiments of the present invention may also be provided as part of a service agreement with a client company, nonprofit organization, government agency, internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to perform some or all of the methods described herein, as well as deploying software, hardware, and web services that implement some or all of the methods described herein. Aspects of these embodiments may further include analyzing client behavior, generating recommendations responsive to the analysis, building a system that implements portions of the recommendations, integrating the system into existing processes and infrastructure, metering system usage, allocating costs to users of the system, and billing for system usage. While the above embodiments of the present invention have been described by each describing their individual advantages, the present invention is not limited to that particular combination. On the contrary, such embodiments may also be combined in any form and number, depending on the intended deployment of the present invention, without losing their beneficial effects.
Claims
1. 1. A computer-implemented method comprising: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; identifying an indication of a first rule in the function tag data that must be enforced when deploying the function; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; A method comprising:
2. A computer-implemented method comprising: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; wherein the method comprises: updating a resource database by adding data indicating that the function is hosted by the computing device; The method further comprises:
3. A computer-implemented method comprising: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; wherein the method comprises: searching the computing resource tag data for host tag data that most closely matches said function tag data; The method further comprises:
4. Identifying an indication of a first rule in the function tag data that must be enforced when deploying the function. The method of claim 2 or 3, further comprising:
5. The method of claim 1 or 4, wherein the first rule in the function tag data specifies a type of computing hardware that must be available on a computing resource that hosts the function.
6. Identifying second rule indications in the function tag data that are not required to be enforced when deploying the function. The method of claim 5 further comprising:
7. The identification by the scheduler of the computing device hosting the function comprises: detecting, by the computing device, that the first rule is satisfied in the function tag data; detecting that the computing device does not satisfy the second rule in the function tag data; The method of claim 6, comprising:
8. 8. The method of claim 7, wherein detecting that the computing device satisfies the first rule comprises identifying a portion of the host tag data that indicates the presence of the type of computing hardware that must be available on the computing resource that hosts the function.
9. The method comprises: receiving the request as a deploy request including source code for the function; further comprising 9. The method of claim 1, wherein the extraction of the function tag data by the scheduler comprises parsing the deployment request into a plurality of data segments and detecting the function tag data in at least one of the plurality of data segments.
10. 1. A computer program comprising program instructions, the program instructions causing a processor to: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; Identifying an indication of a first rule in the function tag data that must be enforced when deploying the function; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; A computer program that is used to execute a program.
11. A computer program comprising program instructions, the program instructions causing a processor to: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; The computer program causes the processor to: searching a resource database to determine whether the function has already been assigned to a computing resource; A computer program for causing the execution of the following:
12. A computer program comprising program instructions, the program instructions causing a processor to: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; The computer program causes the processor to: searching the computing resource tag data for host tag data that most closely matches said function tag data; A computer program for causing the execution of the following:
13. the processor, Identifying an indication of a first rule in the function tag data that must be enforced when deploying the function.
13. The computer program product according to claim 11 or 12, further comprising:
14. 14. The computer program product of claim 10, wherein the program instructions are stored in a computer-readable storage device in a data processing system, and the program instructions are transferred over a network from a remote data processing system.
15. The program instructions are stored in a computer readable storage device in a server data processing system, the program instructions are downloaded over a network in response to a request to a remote data processing system for use in a computer readable storage device associated with the remote data processing system, and the computer program program instructions for metering usage of the program instructions associated with the request; program instructions for generating an invoice based on said metered usage; The computer program according to any one of claims 10 to 13, further comprising:
16. the processor, receiving the request as a deploy request including source code for the function; This is to further implement the 16. The computer program product of claim 10, wherein the extracting of the function tag data by the scheduler comprises parsing the deploy request into a plurality of data segments and detecting the function tag data in at least one of the plurality of data segments.
17. A computer system including a processor and one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, the program instructions being executable by the processor to cause performance of operations by the processor, the operations including: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; Identifying an indication of a first rule in the function tag data that must be enforced when deploying the function; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; 1. A computer system comprising:
18. A computer system including a processor and one or more computer-readable storage media, and program instructions collectively stored on said one or more computer-readable storage media, said program instructions being executable by said processor to cause performance of an operation by said processor, said operation being: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; and the operations include: searching a resource database to determine whether the function has already been assigned to a computing resource; The computer system further comprises:
19. A computer system including a processor and one or more computer-readable storage media, and program instructions collectively stored on said one or more computer-readable storage media, said program instructions being executable by said processor to cause performance of an operation by said processor, said operation comprising: extracting, by a scheduler, function tag data associated with the function identified by the deploy request; selecting, by the scheduler, a computing device within a server cluster to host the function based at least in part on a comparison of the function tag data and host tag data associated with the computing device; issuing instructions by the scheduler to the computing devices, the issuing of the instructions causing allocation of resources to host execution of the functions; and the operations include: searching the computing resource tag data for host tag data that most closely matches said function tag data; The computer system further comprises:
20. The operation is Identifying an indication of a first rule in the function tag data that must be enforced when deploying the function.
20. The computer system of claim 18 or 19, further comprising:
Citation Information
Patent Citations
Resource scheduling method and device of application container, server and storage medium
CN110888741A
A humanoid robot equipped with a program for managing physical and virtual resources, a method of use, and a method of programming it.
JP2014504958A
Distributed system and message transfer method
JP2017146685A
Computerized control of execution pipelines
US20190303207A1
System and method
WO2016152589A1