Executing computing jobs on modular platform nodes

WO2026206312A1PCT designated stage Publication Date: 2026-10-01HITACHI VANTARA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/021477
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-03-26
Publication Date
2026-10-01

Smart Images

  • Figure US2025021477_01102026_PF_FP_ABST
    Figure US2025021477_01102026_PF_FP_ABST
Patent Text Reader

Abstract

Examples include a first computing node configured to determine software capability requirements for executing a computing job. The first computing node sends, over a network, a request to a second computing node for a set of software capabilities currently available on the second computing node. The first computing node receives a list of the set of software capabilities available on the second computing node. The first computing node compares the software capability requirements for executing the computing job with the received list of the set of software capabilities of the second computing node. Based at least on determining that the set of software capabilities of the second computing node enables execution of the computing job, the first computing node sends, over the network, to the second computing node, information to enable execution of the computing job on the second computing node.
Need to check novelty before this filing date? Find Prior Art

Description

EXECUTING COMPUTING JOBS ON MODULAR PLATFORM NODESTECHNICAL FIELD

[0001] This disclosure relates to the technical field of executing computing jobs on a modular computing platform.BACKGROUND

[0002] Computing jobs, such as data processing jobs, analysis jobs, data management jobs, model-training jobs, simulations, transformations, complex computations, or the like, may include a sequence of steps defined and configured to be executed to produce a result or to produce an effect on another resource. Each computing job may require a set of capabilities to enable the computing job to be executed. The required capabilities may be determined based on the tasks to be performed by the computing job. In a modular computing platform, at least some capabilities may be optional software that may be run on the modular platform. Since the software is optional for the platform, some platform nodes may include some optional software and some platform nodes may include different optional software or no optional software, resulting in a plurality of different platform nodes with various different configurations of software capabilities. Accordingly, a computing job created on a first modular platform node might not be able to be executed on a second modular platform node if the second modular platform node does not have the software capabilities required for executing the computing job. If a required software capability is not present on the second modular platform node, attempting to run the computing job on the second module platform node can produce a failure at runtime, which can be problematic, such as in the case of automated and / or unattended executions.SUMMARY

[0003] In some implementations, a first computing node determines software capability requirements for executing a computing job. The first computing node sends, over a network, a request to a second computing node for a set of software capabilities currently available on the second computing node. The first computing node receives a list of the set of software capabilities available on the second computing node. The first computing node compares the software capability requirements for executing the computing job with the received list of the set of software capabilities of the second computing node. Based at least on determining that the set of software capabilities of the second computing node enables execution of the computing job, thefirst computing node sends, over the network, to the second computing node, information to enable execution of the computing job on the second computing node.BRIEF DESCRIPTION OF THE DRAWINGS

[0004] The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features.

[0005] FIG. 1 illustrates an example architecture of a system able to select a modular platform node having a capability set that enables execution of a computing job according to some implementations.

[0006] FIG. 2 illustrates an example of operations performed for selecting a destination modular platform node for executing a computing job according to some implementations herein.

[0007] FIG 3 illustrates an example of operations performed for selecting a destination modular platform node for executing a computing job according to some implementations herein.

[0008] FIG 4 illustrates an example of operations performed for selecting a destination modular platform node for executing a computing job according to some implementations herein.

[0009] FIG. 5 illustrates an example data structure of a capability set list according to some implementations .

[0010] FIG. 6 is a flow diagram illustrating an example process for selecting a modular platform node for executing a computing job according to some implementations.

[0011] FIG. 7 is a flow diagram illustrating an example process for selecting a modular platform node for executing a computing job according to some implementations.

[0012] FIG. 8 illustrates select components of an example modular platform node that may be used to implement some of the functionality of the systems described herein.DESCRIPTION OF THE EMBODIMENTS

[0013] Some implementations herein are directed to techniques and arrangements for deploying a computing job in a modular computing platform from one modular platform node to a destination modular platform node for execution based on determining that the destination modular platform node has a required set of capabilities for ensuring successful execution of the computing job. Furthermore, some implementations include executing the deployed computing job in a multi-node environment, which may include job-execution load-balancing betweenvarious modular platform nodes having the required capabilities necessary for executing designated computing jobs.

[0014] Some examples of the modular computing platform may perform a technique that includes determining a capabilities set (CS) of a targeted remote modular platform node prior to making a decision as to whether to deploy a particular computing job to the targeted remote modular platform node. This enables the source node to ensure that computing jobs deployed for execution on specific remote modular platform nodes can be completed successfully by those modular platform nodes, respectively. Thus, in the examples herein, a modular platform node may avoid deploying a computing job to a destination system that lacks one or more required capabilities. Additionally, examples may consecutively prevent runtime failures on a destination system upon execution of a computing job.

[0015] Some examples herein may address the problems that may arise in the case that a software capability control computing device changes remotely the capabilities of one or more modular platform nodes that are included in a modular computing platform, such as by installing or uninstalling an application, add-on, plug-in, software suite, or other programs, adding or removing a software license, or the like. For instance, the software capability control computing device may be managed by a third party and the deployment of software capabilities, such as programs and / or corresponding software licenses to various modular platform nodes may change periodically, and sometimes frequently, for various reasons. Thus, different module platform nodes may have different software capabilities active on them at any point in time and these capabilities can be changed over time. Therefore, different module platform nodes may each have different capability sets that may enable these nodes to execute some computing jobs, but not others.

[0016] Implementations herein solve this problem by determining the requirements for executing a particular computing job, and sending requests to remote nodes for determining a current set of capabilities of each remote node prior to scheduling the particular computing job for execution at any of the other nodes. In response to the capability requests, the requesting node receives the set of capabilities of each of the other modular platform nodes to which queries were sent, and stores these in a capabilities data structure. The node compares the requirements for executing the computing job with the received set of capabilities of the remote nodes, and based at least on determining that the set of capabilities of the remote node enables execution of the computing job, the requesting node sends, over the network, to a selected remote node, information for executing the computing job. Accordingly, the techniques herein enable a computing job created on a first modular platform node to be executed on a second modularplatform node by ensuring that all required capabilities are present on the second modular platform node, thereby avoiding a failure at runtime and enabling execution of automated and / or unattended computing job processing regardless of recent capability changes that may have been made to the various modular platform nodes in the system.

[0017] Some examples include a modular computing platform that may be able to connect existing and evolving data environments without additional integration or coding. As needs expand, additional functional modules can be easily added. For example, the modular computing platform may include a plurality of modular platform computing nodes, each comprising one or more physical computing devices. For example, the modular computing platform may be able to process batch and streaming data in real time using native containerization to support any deployment environment, and may be hosted on a private enterprise system, a cloud-provider platform, at the core, at the edge, or any combination thereof. For instance, the modular computing platform herein may include a disaggregation of computing resources such as computing nodes, storage, networking, and the like that may be assembled into combinations of resources as desired or necessary to support particular services, applications, or the like. One non-limiting example of a modular computing platform is the PENTAHO+ Data Platform available from Hitachi Vantara Ltd.

[0018] For discussion purposes, some example implementations are described in the environment of a plurality of modular platform nodes that are in communication with each other, and that are able to each perform computing job processing according to certain currently enabled capabilities. However, implementations herein are not limited to the particular examples provided, and may be extended to other types of computing system architectures, other types of software capabilities, other types of applications, other types of client configurations, other types of data, and so forth, as will be apparent to those of skill in the art in light of the disclosure herein.

[0019] FIG. 1 illustrates an example architecture of a system 100 able to select a modular platform node having a capability set that enables execution of a computing job according to some implementations. The system 100 includes a plurality of modular platform nodes 102 that each include one or more computing devices, respectively. For example, a first modular platform node 102(1) may include one or more computing devices, a second modular platform node 102(2) may include one or more computing devices, and a third modular platform node 102(3) may include one or more computing devices, ... and an Nth modular platform node 102(N) may include one or more computing devices. In some examples, each modular platform node 102 may include at least one server computing device, or other type of computing device able to perform theprocessing described herein, but implementations are not limited to any particular configuration of the modular platform nodes 102.

[0020] The modular platform nodes 102 may be able to communicate with each other and with a software capability control computing device 104 through one or more networks 106. In some examples, the first modular platform node 102(1) may be physically located at a first site at a first geographic location that may be geographically remote from a second geographic location where one or more of the other modular platform nodes 102(2)- 102(N) are physically located. However, in other examples, some or all of the modular platform nodes 102(l)-102(N) may be physically located at the same geographic location, such as at the same data center or the like. In the case that one or more of the other modular platform nodes 102(2)-102(N) are located at one or more geographic locations that are remote from the first modular platform node 102(1), the first, second, third geographic locations, etc., may be sufficiently remote from each other, such as in another city, another state, another country, etc., so that a disaster or other failure that affects the first modular platform node 102(1) at the first geographic location is not likely to affect the modular platform nodes 102 at the second, third, etc., geographic locations, and vice versa.

[0021] The one or more networks 106 may include any suitable network, including a wide area network, such as the Internet; a local area network (LAN), such as an intranet; a wireless network, such as a cellular network, a local wireless network, such as Wi-Fi, and / or short-range wireless communications, such as BLUETOOTH®; a wired network including Fibre Channel, fiber optics, Ethernet, or any other such network, a direct wired connection, or any combination thereof. Accordingly, the one or more networks 106 may include both wired and / or wireless communication technologies. Components used for such communications can depend at least in part upon the type of network, the environment selected, or both. Protocols for communicating over such networks are well known and will not be discussed herein in detail. As one example, the network(s) 106 may include a combination of public and private networks. Implementations herein are not limited to any particular type of network as the networks 106.

[0022] In some examples, one or more of the modular platform nodes 102 are able to communicate over the one or more networks 106 with one or more client devices 108. For instance, the modular platform nodes 102 may include server nodes, management nodes, and / or other types of service nodes that provide the client devices 108 with computing job processing services for processing various types of jobs, and the like, for client users 112, as well as performing other data management and control functions, such as repository management, logging and monitoring, performance tuning, continuous integration, data storage, and so forth. The client device(s) 108 may be any of various types of computing devices, such as desktop computers,personal computers, terminals, laptop computers, tablet computers, mobile devices, smart phones, wearable devices, server computers, and / or any other type of computing device able to send data over a network.

[0023] In some examples, the modular platform nodes 102 may be configured to provide storage and data management services to client users 112 via the client devices 108. As several non- limiting examples, the client users 112 may include users performing functions for businesses, enterprises, organizations, governmental entities, academic entities, or the like. Additionally, in some examples, the client users 112 may include administrative users that use the client devices 108 for managing one or more of the modular platform nodes 102. Nevertheless, implementations herein are not limited to any particular use or application for the system 100 and the other example systems and arrangements described herein. For instance, in some examples, the client devices 108 may not be included or may be entirely different types of client devices.

[0024] Client users 112 may be associated with client device(s) 108 such as through a respective user account, user login credentials, or the like. Furthermore, the client device(s) 108 may be configured to communicate with the modular platform nodes 102 through the one or more networks 106, through direct connection, or through any other suitable type of communication connection. Numerous other variations will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0025] In some implementations, each client device 108 may include a respective instance of a client application 114 that may execute on the client device 108, such as for communicating with a web application 116 executable on one or more of the modular platform nodes 102. The client application may be configured for sending user instructions, executable computing jobs, and the like, to at least one of the modular platform nodes 102. In some cases, the application 114 may include a browser or may operate through a browser, while in other cases, the application 114 may include any other type of application having communication functionality enabling communication with the web application 116 or other applications and programs on the modular platform nodes 102.

[0026] Additionally, in the case that the user 112 is an administrative user, the client application 114 may be an administrative application configured for communicating with a management module of the web application 116 executable on the modular platform nodes 102, such as for sending management instructions for managing the system 100. Accordingly, in the case of an administrative user, the client application 114 may provide remote management functionality. Additionally, in other examples, any of numerous other types of softwarearrangements may be employed for performing the functions described herein, as will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0027] As mentioned above, the software capability control computing device 104 may in some examples be operated and / or controlled by a third party that manages some or all of the software capabilities on the modular platform nodes of the modular platform system 100. For example, the software capability control computing device 104 may execute a software capability distribution program 115 that controls the distribution of software capabilities 117 to the modular platform nodes 102. As mentioned above, the software capabilities may include any of various programs, such as applications, add-ons, plug-ins, application suites, and / or software licenses for various pieces of software. Furthermore, in some examples, the user 112 who generates a computing job and / or desires to execute the computing job may not be in charge of controlling the distribution of the software capabilities and may not have any knowledge of which modular platform nodes 102 have which software capabilities.

[0028] In the example of FIG. 1, the first modular platform node 102(1) includes the web application 116, a job a management program 118, a node management program 120, a computing job object 122, and a capability set list data structure 124. Additionally, the first modular platform node 102(1 ), in this example, includes at least a first software capability 126. For instance, in some examples the first modular platform node 102(1) might not include any software capabilities for executing a particular computing job, while in other examples, the first modular platform node 102(1) might include some or all of the software capabilities for executing a particular computing job. For example, different computing jobs may require different software capabilities for completing the execution of the computing job.

[0029] The job management program 118 may manage generation, assembly, and / or execution of a computing job on a modular platform node 102 selected for executing the computing job. In some examples, the job management program 118 may be a module of the node management program 120, while in other examples, the job management program 118 may be a separate program or any of various combinations of the two. Furthermore, the node management program 120 may enable communication with the other ones of the modular platform nodes 102(2)-102(N) and may include various software for enabling the modular platform nodes to participate in a modular platform computing system with one another and with other resources (not shown in FIG. 1 ) included in the modular computing platform.

[0030] In this example, suppose that a computing job corresponding to the computing job object 122 is desired to be executed on a module platform node 102 other than the first modular platform node 102(1). For instance, execution on a different modular platform node 102(2)-102(N) may be desired due to load balancing considerations and / or because the first modular platform node 102(1) does not have all the software capabilities needed for executing the particular computing job. For example, the computing job object 122 may include all the information, instructions, data locations, etc., necessary for enabling a selected modular platform node 102 to execute the computing job.

[0031] To determine which modular platform node 102-2 to 102-N to select for executing the computing job, the job management program 118 may send a capability set(CS) query 128 to one or more of the modular platform nodes 102(2)-102(N). In response to the capability set query 128, each modular platform node 102 that receives the capability set query 128 may reply with a capability set (CS) list 130 that provides a list of the software capabilities of the particular modular platform node 102 that is sending the response to the capability set query 128.

[0032] In the example of FIG. 1 , suppose that the second modular platform node 102(2) sends a reply to the capability set query 128 with a capability set list 130 indicating that the capabilities of the second modular platform node 102(2) include a second software capability 132 and a third software capability 134. Similarly, suppose that the third modular platform node 102(3) replied with a capability set list 130 that lists the capabilities of the third modular platform node 102(3) as including a first software capability 126, a second software capability 132, and a third software capability 134. Additionally, suppose that the Nth modular platform node 102(N) replies with a capability set list 130 that lists capabilities of the Nth modular platform node 102(N) as including the first software capability 126 and the second software capability 132.

[0033] The first modular platform node 102 may receive the capability set list 130 from the modular platform nodes 102(1 )- 102(N), and may store the capability set lists 130 in the capability set list data structure 124. Furthermore, the job management program 118 executing on the first modular platform node 102(1) may determine the software capabilities required for executing the computing job corresponding to the computing job object 122. The job management program 118 may compare the required software capabilities for executing the computing job with the capability set lists stored in the capability set list data structure 124 for determining which of the modular platform nodes 102 currently has all the required software capabilities for successfully executing the computing job corresponding to the computing job object 122.

[0034] In this example, suppose that the computing job requires the first software capability 126, the second software capability 132, and the third software capability 134 for successfully completing the computing job. This being the case, the job management program 118 executing on the first modular platform node 102(1) may select the third modular platform node 102(3) for executing the computing job, and may send the computing job object 122 to the third modularplatform node 102(3). In some examples, the user 112 may send an instruction to the modular platform node 102(3) to execute the computing job, while in other examples, the job management program 118 may schedule the execution of the computing job for a desired execution date and time, or the like. Numerous other variations will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0035] FIG. 2 illustrates an example of operations 200 performed for selecting a destination modular platform node for executing a computing job according to some implementations herein. In some examples, the operations 200 may be performed by the job management program 118 executed on one of the modular platform nodes 102 discussed above with respect to FIG. 1.

[0036] In the example of FIG. 2, a client device 108 is able to communicate with an origin modular platform node 102(a). Further, the client device 108 and the origin modular platform node 102(a) may also communicate with a destination modular platform node 102(b). In some examples, the origin modular platform node 102(a) may correspond to the first modular platform node 102(1) of FIG. 1 and the destination modular platform node 102(b) may correspond to at least one of the modular platform nodes 102(2)-102(N) of FIG. 1.

[0037] At 202, a user action at the client device may send a communication to the origin modular platform node 102(a) to start computing job deployment of a particular computing job. For example, the “start computing job deployment” user action may include the job object for the computing job and may cause the origin modular platform node 102(a) to attempt to find a destination node with a matching capability set. At least the communication or the job object may indicate which capabilities are required for executing the computing job.

[0038] At 204, the origin modular platform node 102(a) sends a capabilities set request to at least one destination modular platform node 102(b). As discussed above, the capability set request may request a list of the capabilities of the modular platform node 102(b) that was targeted by the inquiry.

[0039] At 206, the targeted destination platform node 102(b) may respond with a list of the available software capabilities currently available on the targeted node.

[0040] At 208, the origin modular platform node 102(a) processes the response by adding the received response to a data structure that includes listed capability sets of one or more of the destination modular platform nodes 102(b) to which the queries were sent. Additionally, the origin modular platform node 102(a) may compare the capabilities list received from the destination modular platform node with the capabilities required for executing the computing job to be deployed, and may select a destination modular platform node that has all the capabilities required for executing the computing job. If more than one destination modular platform node 102(b)satisfies all the required capabilities, the origin modular platform node 102(a) may use additional criteria to select one of these destination modular platform nodes, such as a current workload, network bandwidth, processing capabilities, or the like, which may depend in part on the nature of the computing job itself.

[0041] At 210, the origin modular platform node 102(a) may transfer the computing job object for the computing job to the selected destination modular platform node 102(b) that was determined to have all the capabilities sufficient for execution of the computing job. For example, the origin modular platform node 102(a) may process the computing job for deployment and identify the capabilities required. The origin modular platform node 102(a) may then search the local capabilities list data structure destination node 102(b) having a set of capabilities that includes all the capabilities required for executing the computing job.

[0042] At 212, the user of the client device 108 may send a user instruction to manually initiate execution of the computing job on the selected destination modular platform nodes 102(b). As one example, after selection of the destination modular platform node 102(b) and transferring the computing job object, the origin modular platform node 102(a) may provide a communication (not shown) to the client device 108 to inform the user of the client device 108 so that the user can manually initiate the computing job. Alternatively, the origin modular platform node 102(a) may schedule automatic execution of the computing job.

[0043] At 214, the computing job may be executed in response to the user instruction or the scheduled automatic execution.

[0044] FIG 3 illustrates an example of operations 300 performed for selecting a destination modular platform node for executing a computing job according to some implementations herein. In some examples, the operations 300 may be performed by the job management program 118 executed on one of the modular platform nodes 102 discussed above with respect to FIG. 1.

[0045] In the example of FIG. 3, a client device 108 is able to communicate with an origin modular platform node 102(a). Further, the client device 108 and the origin modular platform node 102(a) may also communicate with a destination modular platform node 102(b) and a destination modular platform node 102(c). In some examples, the origin modular platform node 102(a) may correspond to the first modular platform node 102(1) of FIG. 1 and the destination modular platform nodes 102(b) and 102(c) may each correspond to at least one of the modular platform nodes 102(2)-102(N) of FIG. 1.

[0046] At 302, a user action at the client device may send a communication to the origin modular platform node 102(a) to start computing job deployment of a particular computing job. For example, the “start computing job deployment” user action may include the job object for thecomputing job and may cause the origin modular platform node 102(a) to attempt to find a destination node with a matching capability set. At least the communication or the job object may indicate which capabilities are required for executing the computing job.

[0047] At 304, the origin modular platform node 102(a) sends a capabilities set request to the destination modular platform node 102(b). As discussed above, the capability set request may request a list of the capabilities of the modular platform node 102(b) that was targeted by the query.

[0048] At 306, the targeted destination platform node 102(b) may respond with a list of the available software capabilities currently available on the targeted node.

[0049] At 308, the origin modular platform node 102(a) processes the response by adding the received response to a data structure that includes listed capability sets of one or more of the destination modular platform nodes 102 to which a query was sent. Additionally, the origin modular platform node 102(a) may compare the capabilities list received from the destination modular platform node 102(b) with the capabilities required for executing the computing job to be deployed. In this example, suppose that the destination modular platform node 102(b) is determined to have insufficient capabilities for executing the computing job.

[0050] At 310, since the destination modular platform node 102(b) does not currently have sufficient capabilities to execute the computing job, the origin modular platform node 102(a) sends a capabilities set request to a different destination modular platform node 102(c). As discussed above, the capability set request may request a list of the capabilities of the modular platform node 102(c) that was targeted by the query.

[0051] At 312, the targeted destination platform node 102(c) may respond with a list of the available software capabilities currently available on the targeted node.

[0052] At 314, the origin modular platform node 102(a) processes the response by adding the received response to the data structure that includes listed capability sets of the destination modular platform nodes 102 to which queries have been sent. Additionally, the origin modular platform node 102(a) may compare the capabilities list received from the destination modular platform node 102(c) with the capabilities required for executing the computing job to be deployed, and may select the destination modular platform node 102(c) based on determining that modular platform node 102(c) has all the capabilities required for executing the computing job.

[0053] At 316, the origin modular platform node 102(a) may transfer the computing job object for the computing job to the selected destination modular platform node 102(c) that was determined to have all the capabilities sufficient for execution of the computing job.

[0054] At 318, after selection of the destination modular platform node 102(b) and transferring the computing job object, the origin modular platform node 102(a) may provide a communication to the client device 108 to inform the user of the client device 108 so that the user can manually initiate the computing job.

[0055] At 320, the user of the client device 108 may send a user instruction to manually initiate execution of the computing job on the selected destination modular platform node 102(c).

[0056] At 322, the computing job may be executed on the destination modular platform node 102(c) in response to the user instruction.

[0057] FIG 4 illustrates an example of operations 400 performed for selecting a destination modular platform node for executing a computing job according to some implementations herein. In some examples, the operations 400 may be performed by the job management program 118 executed on one of the modular platform nodes 102 discussed above with respect to FIG. 1.

[0058] In the example of FIG. 4, a client device 108 is able to communicate with an origin modular platform node 102(a). Further, at least the origin modular platform node 102(a) may also communicate with a destination modular platform node 102(b) and a destination modular platform node 102(c). In some examples, the origin modular platform node 102(a) may correspond to the first modular platform node 102(1) of FIG. 1 and the destination modular platform nodes 102(b) and 102(c) may each correspond to at least one of the modular platform nodes 102(2)-102(N) of FIG. 1.

[0059] At 402, a user action at the client device may send a communication to the origin modular platform node 102(a) to start computing job deployment of a particular computing job. For example, the “start computing job deployment” user action may include the job object for the computing job and may cause the origin modular platform node 102(a) to attempt to find a destination node with a matching capability set. At least the communication or the job object may indicate which capabilities are required for executing the computing job.

[0060] At 404, the origin modular platform node 102(a) sends a capabilities set request to the destination modular platform node 102(b). As discussed above, the capability set request may request a list of the capabilities of the modular platform node 102(b) that was targeted by the query.

[0061] At 406, the targeted destination platform node 102(b) may respond with a list of the available software capabilities currently available on the targeted node.

[0062] At 408, the origin modular platform node 102(a) processes the response by adding the received response to a data structure that includes listed capability sets of one or more of the destination modular platform nodes 102 to which a query was sent. Additionally, the originmodular platform node 102(a) may compare the capabilities list received from the destination modular platform node 102(b) with the capabilities required for executing the computing job to be deployed. In this example, suppose that the destination modular platform node 102(b) is determined to have insufficient capabilities for executing the computing job.

[0063] At 410, since the destination modular platform node 102(b) does not currently have sufficient capabilities to execute the computing job, the origin modular platform node 102(a) sends a capabilities set request to a different destination modular platform node 102(c). As discussed above, the capability set request may request a list of the capabilities of the modular platform node 102(c) that was targeted by the query.

[0064] At 412, the targeted destination platform node 102(c) may respond with a list of the available software capabilities currently available on the targeted node.

[0065] At 414, the origin modular platform node 102(a) processes the response by adding the received response to the data structure that includes listed capability sets of the destination modular platform nodes 102 to which queries have been sent. Additionally, the origin modular platform node 102(a) may compare the capabilities list received from the destination modular platform node 102(c) with the capabilities required for executing the computing job to be deployed, and may select the destination modular platform node 102(c) based on determining that modular platform node 102(c) has all the capabilities required for executing the computing job.

[0066] At 416, the origin modular platform node 102(a) may transfer the computing job object for the computing job to the selected destination modular platform node 102(c) that was determined to have all the capabilities sufficient for execution of the computing job. In addition, the origin modular platform node 102(a) may schedule automatic execution of the computing job on the selected destination modular platform node 102(c).

[0067] At 418, the computing job may be executed on the destination modular platform node 102(c) according to the timing scheduled by the origin modular platform node 102(a).

[0068] FIG. 5 illustrates an example data structure 500 of a capability set list according to some implementations. As mentioned above, the capability set list may be sent by each modular platform node in response to receiving an inquiry from another modular platform node that is attempting to locate a suitable modular platform node having all the capabilities necessary to execute a particular computing job. In this example, a configuration 502 of a capability set list includes a system unique identifier (UID) 504 that may be an ID that is unique within the modular platform system. The configuration 502 may further include a list of capabilities 1, 2, 3, ..., n, as indicated at 506.

[0069] At 508, a capability set list includes example data such as the universal ID server_1234, and a listing of example software capabilities currently available on the server_1234. At 510, an example of pseudocode is provided that shows one possible example of the configuration of the list sent to the querying modular platform node. Furthermore, while one example of a capability set list data structure 500 is illustrated in FIG. 5, numerous other possible configurations will be apparent to those of skill in the art having the benefit of the disclosure herein.

[0070] FIGS. 6 and 7 include flow diagrams illustrating example processes according to some implementations. The processes are illustrated as collections of blocks in logical flow diagrams, which represent a sequence of operations, some or all of which can be implemented in hardware, software or a combination thereof. In the context of software, the blocks may represent computerexecutable instructions stored on one or more computer-readable media that, when executed by one or more processors, program the processors to perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like, that perform particular functions or implement particular data types. The order in which the blocks are described should not be construed as a limitation. Any number of the described blocks can be combined in any order and / or in parallel to implement the process, or alternative processes, and not all of the blocks need be executed. For discussion purposes, the processes are described with reference to the environments, systems, and devices described in the examples herein, although the processes may be implemented in a wide variety of other environments, systems, and devices.

[0071] FIG. 6 is a flow diagram illustrating an example process 600 for selecting a modular platform node for executing a computing job according to some implementations. In some examples, the process 600 may be executed by the system 100 discussed above with respect to FIG. 1. As one example, the process 600 may be executed in part by the first modular platform node 102(1) of FIG. 1 executing the job management program 118.

[0072] At 602, the first node may receive an instruction to initiate computing job deployment. For instance, in some examples, the first node may receive an instruction from a client device. In some examples, the instruction may include the computing job object and / or information about the computing job to be deployed.

[0073] At 604, the first node may determine a capability set required for executing the computing job. For example, the first node may examine the computing job object and / or information about the computing job received with the instruction to initiate the computing job deployment for determining the set of capabilities required for executing the computing job.

[0074] At 606, if there is a pre-existing capability set list data structure 124 (discussed above with respect to FIG. 1) containing node capability set lists already obtained from other nodes, and in which the capability set lists contained therein were acquired within a threshold period of time from the present, e.g., within the past 10 minutes, past 30 minutes, past hour, etc., depending on how frequently the software capability control computing device 104 is likely to update the software capabilities at any particular node, the first node may refer to the CS data structure 124 to determine whether there is a possible destination node listed therein having capabilities that match the set of capabilities required for executing the computing job.

[0075] At 608, the first node determines whether there is a possible destination node with a matching capability set identified in the CS data structure 124. If so, the process goes to 620. If not, the process goes to 610.

[0076] At 610, if there is no matching node in the CS data structure 124, the first node may select one or more possible destination nodes for sending a capability set query. For example, the possible destination nodes may be other modular platform nodes in communication with the first node performing the operation.

[0077] At 612, the first node may send a request to the possible destination node for a list of the latest available capability set for the node. For instance, the first node may send the request over the one or more networks to one or more of the possible destination nodes.

[0078] At 614, the first node may receive and process the capability set list(s) received from the queried node(s) to determine which node(s) has the required capabilities set. For instance, the first node may add each of the received capability set list to the capability set list data structure 124 and may compare the capability set list received from each node with the required capabilities for executing the computing job.

[0079] At 616, the first node may determine whether a node with a matching capability set has been identified. If not, the process goes to 618. If so, the process goes to 620.

[0080] At 618, when there are no nodes identified with matching capabilities for executing the computing job, the first node may send a notification to a user associated with the computing job to inform the user that there are currently no modular platform nodes available having sufficient capabilities for executing the computing job.

[0081] At 620, when a matching node has been identified, the first node may select the identified node as being compatible with the computing job.

[0082] At 622, based on identifying the matching node, the first node may send the computing job object over the network to the selected destination node.

[0083] At 624, the first node may schedule the computing job for execution on the selected destination node. The process may then return to 602 to await receipt of instructions for a next computing job.

[0084] FIG. 7 is a flow diagram illustrating an example process 700 for selecting a modular platform node for executing a computing job according to some implementations. In some examples, the process 700 may be executed by the system 100 discussed above with respect to FIG. 1. As one example, the process 700 may be executed in part by the first modular platform node 102(1) of FIG. 1 executing the job management program 118.

[0085] At 702, the first node may receive an instruction to initiate computing job deployment. For instance, in some examples, the first node may receive an instruction from a client device. In some examples, the instruction may include the computing job object and / or information about the computing job to be deployed.

[0086] At 704, the first node may determine a capability set required for executing the computing job. For example, the first node may examine the computing job object and / or information about the computing job received with the instruction to initiate the computing job deployment for determining the set of capabilities required for executing the computing job.

[0087] At 706, if there is a pre-existing capability set list data structure 124 (discussed above with respect to FIG. 1) containing node capability set lists already obtained from other nodes, and in which the capability set lists contained therein were acquired within a threshold period of time from the present, e.g., within the past 10 minutes, past 30 minutes, past hour, etc., depending on how frequently the software capability control computing device 104 is likely to update the software capabilities at any particular node in the system, the first node may refer to the CS data structure 124 to determine whether there is a possible destination node listed therein having capabilities that match the set of capabilities required for executing the computing job.

[0088] At 708, the first node determines whether there is a possible destination node with a matching capability set identified in the CS data structure 124. If so, the process goes to 722. If not, the process goes to 710.

[0089] At 710, if there is no matching node in the CS data structure 124, the first node may begin querying the nodes in the system one at a time. When all the nodes in the system have been queried without finding a match the process goes to 712. Otherwise, if there are unqueried nodes, the process goes to 714.

[0090] At 712, when there are no nodes identified with matching capabilities for executing the computing job, the first node may send a notification to a user associated with the computingjob to inform the user that there are currently no modular platform nodes available having sufficient capabilities for executing the computing job.

[0091] At 714, the first node may select a possible destination node for sending a capability set query. For example, the possible destination node may be another modular platform node in communication with the first node. In this example, the first node may query the other nodes in the system one at a time until a match is found.

[0092] At 716, the first node may send a request to the possible destination node for a list of the latest available capability set for the node. For instance, the first node may send the request over the one or more networks to one possible destination node at a time in this example, whereas, in the example of FIG. 6, the first node may send the query to one, some, or to all possible destination nodes at the same time as either targeted communications or as a system-wide broadcast.

[0093] At 718, the first node may receive and process the capability set list received from the queried node to determine whether the queried node has the required capabilities set. For instance, the first node may add each received capability set list to the capability set list data structure 124 and may compare the capability set list received from each node with the required capabilities for executing the computing job.

[0094] At 720, the first node may determine whether a node with a matching capability set has been identified. If not, the process goes to 710. If so, the process goes to 722.

[0095] At 722, when a matching node has been identified, the first node may select the identified node as being compatible with the computing job.

[0096] At 724, based on identifying the matching destination node, the first node may send the computing job object over the network to the selected destination node.

[0097] At 726, the first node may schedule the computing job for execution on the selected destination node. The process may then return to 702 to await receipt of instructions for a next computing job.

[0098] The example processes described herein are only examples of processes provided for discussion purposes. Numerous other variations will be apparent to those of skill in the art in light of the disclosure herein. Additionally, while the disclosure herein sets forth several examples of suitable frameworks, architectures and environments for executing the processes, implementations herein are not limited to the particular examples shown and discussed. Furthermore, this disclosure provides various example implementations, as described and as illustrated in the drawings. However, this disclosure is not limited to the implementationsdescribed and illustrated herein, but can extend to other implementations, as would be known or as would become known to those skilled in the art.

[0099] FIG. 8 illustrates select components of an example modular platform node 102 that may be used to implement some of the functionality of the systems described herein. The modular platform node 102 includes the one or more computing devices 801, which may include one or more servers or other types of computing devices that may be embodied in any number of ways. Additionally, in some examples, the computing devices 801 may also include, or may be in communication with, one or more storage systems, storage controllers, network attached storage, storage arrays, storage area networks, or the like, for storing data. For instance, in the case of a server, the programs, other functional components, and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, and so forth, although other computer architectures may additionally or alternatively be used. Multiple computing devices 801 may be located together or separately, and organized, for example, as virtual servers, server banks, and / or server farms. The described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and / or services of multiple different entities or enterprises.

[0100] In the illustrated example, the computing device(s) 801 includes, or may have associated therewith, one or more processors 802, one or more computer-readable media 804, and one or more communication interfaces 806. Each processor 802 may be a single processing unit or a number of processing units, and may include single or multiple computing units, or multiple processing cores. The processor(s) 802 can be implemented as one or more central processing units, microprocessors, microcomputers, microcontrollers, digital signal processors, graphics processing units, system-on-chip processors, Al processors, state machines, logic circuitries, and / or any devices that manipulate signals based on operational instructions. As one example, the processor(s) 802 may include one or more hardware processors and / or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein. The processor(s) 802 may be configured to fetch and execute computer-readable instructions stored in the computer-readable media 804, which may program the processor(s) 802 to perform the functions described herein.

[0101] The computer-readable media 804 may include volatile and nonvolatile memory and / or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. For example, the computer-readable media 804 may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage,magnetic tape, and magnetic disk storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device.. Further, in some examples, the computer-readable media 804 includes network storage systems, which may include storage arrays, network attached storage, storage area networks, cloud storage, and the like.

[0102] Depending on the configuration of the modular platform nodes 102, the computer-readable media 804 may be a tangible non-transitory medium to the extent that, when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and / or signals per se. In some cases, the computer-readable media 804 may be at the same location as the modular platform node 102, while in other examples, the computer-readable media 804 may be partially remote from the modular platform node 102.

[0103] The computer-readable media 804 may be used to store any number of functional components that are executable by the processor(s) 802. In many implementations, these functional components comprise instructions or programs that are executable by the processor(s) 802 and that, when executed, specifically program the processor(s) 802 to perform the actions attributed herein to the modular platform node 102. Functional components stored in the computer-readable media 804 may include the web application 116, the job management program 1 18, the node management program 120, and the first software capability, each of which may include one or more computer programs, applications, modules, executable code, or portions thereof. Further, while these programs are illustrated together in this example, in some examples these programs may be separate programs and / or during use, some or all of these programs may be executed on separate computing devices 801 at a respective modular platform node 102.

[0104] In addition, the computer-readable media 804 may store data, data structures, and other information used for performing the functions and services described herein. For example, the computer-readable media 804 may store the computing job object 122 and the capability set list data structure 124. The modular platform node 102 may also include or maintain other functional components and data, which may include programs, drivers, etc., and the data used or generated by the functional components. Further, the modular platform node 102 may include many other logical, programmatic, and physical components, of which those described herein are merely examples that are related to the discussion herein.

[0105] The one or more communication interfaces 806 may include one or more software and hardware components for enabling communication with various other devices, such as over the one or more network(s) 106. For example, the communication interface(s) 806 may enable communication through one or more of a LAN, the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi) and wired networks (e.g., Fibre Channel, fiber optic, Ethernet),direct connections, as well as close-range communications such as BLUETOOTH®, and the like, as additionally enumerated elsewhere herein.

[0106] Further, while the example of FIG. 8 includes the components of the first modular platform node 102(1) of FIG. 1, the other modular platform nodes 102(2)-102(N), the software capability control computing device 104, and / or the user device 108 may include similar hardware configurations, but with different logical components, as discussed above.

[0107] Various instructions, methods, and techniques described herein may be considered in the general context of computer-executable instructions, such as computer programs and applications stored on computer-readable media, and executed by the processor(s) herein. Generally, the terms program and application may be used interchangeably, and may include instructions, routines, scripts, modules, objects, components, data structures, executable code, etc., for performing particular computing jobs or implementing particular data types. These programs, applications, and the like, may be executed as native code or may be downloaded and executed, such as in a virtual machine or other just-in-time compilation execution environment. Typically, the functionality of the programs and applications may be combined or distributed as desired in various implementations. An implementation of these programs, applications, and techniques may be stored on computer storage media or transmitted across some form of communication media.

[0108] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claims.

Claims

CLAIMS1. A system comprising:a first computing node having one or more processors configured by executable instructions to perform operations comprising:determining, by the one or more processors, software capability requirements for executing a computing job;sending, by the one or more processors, over a network, a request to a second computing node for a set of software capabilities currently available on the second computing node;receiving, by the one or more processors, a list of the set of software capabilities of the second computing node;comparing, by the one or more processors, the software capability requirements for executing the computing job with the received list of the set of software capabilities of the second computing node; andbased at least on determining that the set of software capabilities of the second computing node enables execution of the computing job, sending over the network, by the one or more processors and to the second computing node, information to enable execution of the computing job on the second computing node.

2. The system as recited in claim 1, the operations further comprising:adding the received list of the set of software capabilities of the second computing node to a local data structure of a plurality of received lists of software capabilities received from a plurality of second computing nodes; andfor a subsequent computing job, accessing the local data structure to select a second computing node having software capabilities for executing the subsequent computing job.

3. The system as recited in claim 2, the operations further comprising:sending the subsequent computing job to the second computing node selected from the local data structure.

4. The system as recited in claim 3, the operations further comprising:before sending the subsequent computing job to the second computing node, determining that a time threshold has not been exceeded since receipt of the set of software capabilities of the second computing node selected from the local data structure.

5. The system as recited in claim 1, the operations further comprising:scheduling automatic remote execution of the computing job at the second computing node.

6. The system as recited in claim 1, wherein the set of software capabilities includes at least one of applications, add-ons, plug-ins, application suites, or software licenses.

7. The system as recited in claim 1, further comprising a software capability control computing device that is configured to add software capabilities to, or remove software capabilities from, a plurality of the second computing nodes included in the system.

8. The system as recited in claim 1 , the operations further comprising:sending a communication to a client device to inform the client device that the information to enable execution of the computing job on the second computing node has been sent to the second node, the communication prompting a user instruction from the client device to the second computing node to initiate execution of the computing job on the second computing node.

9. The system as recited in claim 1, the operations further comprising:receiving, by the first computing node, a communication to deploy another computing job to one of a plurality of second computing nodes included in the system;sending a request for a set of software capabilities currently available on each of the plurality of second computing nodes;receiving a list of the set of software capabilities of each of the plurality of second computing nodes;comparing the software capability requirements for executing the other computing job with the received lists of the sets of software capabilities of the plurality of second computing node;based at least on determining that the sets of software capabilities of the plurality of second computing nodes are insufficient for executing the other computing job, sending a notification to a client device.

10. The system as recited in claim 9, wherein:the request for the set of software capabilities currently available on each of the plurality of second computing nodes is sent one at a time to each of the plurality of second computing nodes, andthe list of the set of software capabilities of each of the plurality of second computing nodes received in reply is compared with the software capability requirements for executing the other computing job before sending a request to a next second computing node of the plurality of second computing nodes.

11. The system as recited in claim 9, wherein the request for the set of software capabilities currently available on each of the plurality of second computing nodes is sent concurrently to the plurality of second computing nodes.

12. A method comprising:determining, by one or more processors of a first computing node, software capability requirements for executing a computing job;sending, by the one or more processors, over a network, a request to a second computing node for a set of software capabilities currently available on the second computing node;receiving, by the one or more processors, a list of the set of software capabilities of the second computing node;comparing, by the one or more processors, the software capability requirements for executing the computing job with the received list of the set of software capabilities of the second computing node; andbased at least on determining that the set of software capabilities of the second computing node enables execution of the computing job, sending over the network, by the one or more processors and to the second computing node, information to enable execution of the computing job on the second computing node.

13. The method as recited in claim 12, further comprising:adding the received list of the set of software capabilities of the second computing node to a local data structure of a plurality of received lists of software capabilities received from a plurality of second computing nodes; andfor a subsequent computing job, accessing the local data structure to determine a second computing node having software capabilities for executing the subsequent computing job.

14. A non-transitory computer-readable medium storing instructions executable by one or more processors of a first computing node to cause the one or more processors to perform operations comprising:determining, by the one or more processors, software capability requirements for executing a computing job;sending, by the one or more processors, over a network, a request to a second computing node for a set of software capabilities currently available on the second computing node;receiving, by the one or more processors, a list of the set of software capabilities of the second computing node;comparing, by the one or more processors, the software capability requirements for executing the computing job with the received list of the set of software capabilities of the second computing node; andbased at least on determining that the set of software capabilities of the second computing node enables execution of the computing job, sending over the network, by the one or more processors and to the second computing node, information to enable execution of the computing job on the second computing node.

15. The non-transitory computer readable medium as recited in claim 14, the operations further comprising:adding the received list of the set of software capabilities of the second computing node to a local data structure of a plurality of received lists of software capabilities received from a plurality of second computing nodes; andfor a subsequent computing job, accessing the local data structure to determine a second computing node having software capabilities for executing the subsequent computing job.