HANDLING THE RUNNING OF SOFTWARE
20230161603 · 2023-05-25
Inventors
Cpc classification
G06F2009/4557
PHYSICS
H04L41/5041
ELECTRICITY
G06F9/44505
PHYSICS
H04L41/342
ELECTRICITY
H04L41/0897
ELECTRICITY
H04L41/0806
ELECTRICITY
International classification
Abstract
There is provided a method for handling the running of software in a network, which is performed by a first node in response to a first request to run software using at least one infrastructure component and at least one function component. Transmission of a second request is initiated towards a second node. The second node manages the at least one infrastructure component. The second request is to deploy the at least one infrastructure component and comprises information indicative of at least one function-as-a-service (FaaS) platform implemented by the at least one infrastructure component to be used to run the software. Transmission of a third request is initiated towards a third node. The third node manages the at least one FaaS platform. The third request is to configure the at least one FaaS platform to run the software.
Claims
1. A method performed by a first node for handling the running of software in a network, the method comprising: in response to a first request to run software using at least one infrastructure component and at least one function component: initiating transmission of a second request towards a second node, wherein the second node is configured to manage the at least one infrastructure component and wherein the second request is a request to deploy the at least one infrastructure component and comprises information indicative of at least one function-as-a-service, FaaS, platform implemented by the at least one infrastructure component to be used to run the software; and initiating transmission of a third request towards a third node, wherein the third node is configured to manage the at least one FaaS platform and wherein the third request is a request to configure the at least one FaaS platform to run the software.
2. A method as claimed in claim 1, wherein: the second request comprises one or more second constraints placed on the at least one infrastructure component; and/or the third request is a request to configure the at least one FaaS platform to run the software according to one or more third constraints placed on the at least one FaaS platform.
3. A method as claimed in claim 2, wherein: the one or more second constraints comprise a constraint to locate the at least one infrastructure component at the same location as the at least one FaaS platform and/or a constraint to limit execution of the at least one function component to at least one infrastructure component that is running the at least one FaaS platform; and/or -o1 the one or more third constraints comprise a constraint to limit execution of the at least one function component to a single one of the at least one FaaS platform or a constraint to limit execution of the at least one function component to a plurality of the at least one FaaS platform located at a same location.
4. A method as claimed in claim 2, wherein: the first request comprises one or more first constraints placed on the at least one infrastructure component and/or the at least one function component.
5. A method as claimed in claim 4, wherein: the one or more second constraints and/or the one or more third constraints are based on the one or more first constraints.
6. A method as claimed in claim 4, wherein: the one or more second constraints are the same as the one or more first constraints except that the one or more second constraints are placed on the at least one infrastructure component, whereas the one or more first constraints are placed on the at least one infrastructure component and/or the at least one function component; and/or the one or more third constraints are the same as the one or more first constraints except that the one or more third constraints are placed on the at least one FaaS platform, whereas the one or more first constraints are placed on the at least one infrastructure component and/or the at least one function component.
7. A method as claimed in claim 1, the method comprising: in response to the infrastructure component failing to deploy: repeating initiation of the transmission of the second request towards the second node until the at least one infrastructure component is deployed.
8. A method as claimed in claim 1, wherein: if the at least one FaaS platform is already deployed: the information indicative of the at least one FaaS platform is information indicative of the already deployed at least one FaaS platform.
9. A method as claimed in claim 8, wherein: if the already deployed at least one FaaS platform fails to meet one or more requirements of the software: the second request further comprises information indicative of one or more changes to be made to the already deployed at least one FaaS platform for the already deployed at least one FaaS platform to meet the one or more requirements of the software.
10. A method as claimed in claim 1, wherein: if the at least one FaaS platform is not already deployed: the second request is a request to deploy the at least one infrastructure component and the at least one FaaS platform.
11. A method as claimed in claim 10, wherein: initiating the transmission of the third request towards the third node is in response to successful deployment of the at least one FaaS platform.
12. A method as claimed in claim 10, the method comprising: in response to unsuccessful deployment of the at least one FaaS platform: initiating transmission of a message to indicate that the deployment of the at least one FaaS platform is unsuccessful; or in response to successful deployment of the at least one FaaS platform: initiating transmission of a message to indicate that the deployment of the at least one FaaS platform is successful.
13. A method as claimed in claim 1, the method comprising: in response to unsuccessful configuration of the at least one FaaS platform to run the software: initiating transmission of a message to indicate that configuration of the at least one FaaS platform to run the software is unsuccessful; or in response to successful configuration of the at least one FaaS platform to run the software: initiating transmission of a message to indicate that the configuration of the at least one FaaS platform to run the software is successful.
14. A method as claimed in claim 1, wherein: the first request is for running the software using a plurality of groups of components, wherein each group of the plurality of groups of components comprises at least one infrastructure component and/or at least one function component; and the method is performed for each group of the plurality of groups of components.
15. A method as claimed in claim 1, wherein: the software is a service or an application.
16. A method as claimed in claim 1, wherein: the at least one function component comprises at least one function; and/or the at least one infrastructure component comprises at least one container and/or at least one virtual machine.
17. A first node comprising: processing circuitry configured to operate in accordance with claim 1.
18. A first node as claimed in claim 17, wherein: the first node comprises: at least one memory for storing instructions which, when executed by the processing circuitry, cause the first node to operate in accordance with the method performed by a first node for handling the running of software in a network, the method comprising: in response to a first request to run software using at least one infrastructure component and at least one function component: initiating transmission of a second request towards a second node, wherein the second node is configured to manage the at least one infrastructure component and wherein the second request is a request to deploy the at least one infrastructure component and comprises information indicative of at least one function-as-a-service, FaaS, platform implemented by the at least one infrastructure component to be used to run the software; and initiating transmission of a third request towards a third node, wherein the third node is configured to manage the at least one FaaS platform and wherein the third request is a request to configure the at least one FaaS platform to run the software.
19. A computer program comprising instructions which, when executed by processing circuitry, cause the processing circuitry to perform the method according to claim 1.
20. A computer program product, embodied on a non-transitory machine-readable medium, comprising instructions which are executable by processing circuitry to cause the processing circuitry to perform the method according to claim 1.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0031] For a better understanding of the technique, and to show how it may be put into effect, reference will now be made, by way of example, to the accompanying drawings, in which:
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
DETAILED DESCRIPTION
[0039] As mentioned earlier, an advantageous technique for handling the running of software in a network is described herein. Herein, software may be any type of software. For example, the software referred to herein can be a service, an application, or any other software. Generally, a service is software intended to be managed for users and an application is software intended to be installed and managed by users. In some embodiments, a service can be a communication service. The technique described herein for handling the running of software in a network is implemented by a first node.
[0040]
[0041] As illustrated in
[0042] Briefly, the processing circuitry 12 of the first node 10 is configured to, in response to a first request to run software using at least one infrastructure component and at least one function component, initiate transmission of a second request towards a second node and initiate transmission of a third request towards a third node. The second node is configured to manage the at least one infrastructure component. The second request is a request to deploy the at least one infrastructure component and comprises information indicative of at least one FaaS platform implemented by the at least one infrastructure component to be used to run the software. The third node is configured to manage the at least one FaaS platform and wherein the third request is a request to configure the at least one FaaS platform to run the software.
[0043] As illustrated in
[0044] The processing circuitry 12 of the first node 10 can be connected to the memory 14 of the first node 10. In some embodiments, the memory 14 of the first node 10 may be for storing program code or instructions which, when executed by the processing circuitry 12 of the first node 10, cause the first node 10 to operate in the manner described herein in respect of the first node 10. For example, in some embodiments, the memory 14 of the first node 10 may be configured to store program code or instructions that can be executed by the processing circuitry 12 of the first node 10 to cause the first node 10 to operate in accordance with the method described herein in respect of the first node 10. Alternatively or in addition, the memory 14 of the first node 10 can be configured to store any information, data, messages, requests, responses, indications, notifications, signals, or similar, that are described herein. The processing circuitry 12 of the first node 10 may be configured to control the memory 14 of the first node 10 to store information, data, messages, requests, responses, indications, notifications, signals, or similar, that are described herein.
[0045] In some embodiments, as illustrated in
[0046] Although the first node 10 is illustrated in
[0047]
[0048] The second node 20 is configured to manage at least one infrastructure component. The second node 20 can be a (e.g. cloud) orchestration component according to some embodiments. Thus, the second node 20 can be referred to as an infrastructure orchestrator component. The second node 20 may be in charge of orchestrating infrastructure components (e.g. virtual machines, containers, or any other infrastructure components) of the software to be run. The second node 20 can offer a configuration application programming interface (API) to the first node 10, e.g. for programming constraints on running software.
[0049] The third node 30 is configured to manage (e.g. the configuration of) at least one FaaS platform. The third node 30 can be a (e.g. cloud) management component according to some embodiments. Thus, the third node 30 can be referred to as a FaaS (configuration) manager component. The third node 30 may supervise the configuration of one or more FaaS platforms. The third node 30 can offer a configuration API to the first node 10, e.g. for programming constraints on running software.
[0050] In some embodiments, the first node 10 may be an apparatus. In some of these embodiments, the second node 20 and/or the third node 30 may be part of the same apparatus as the first node 10. The first node 10 can be a (e.g. cloud) orchestration component according to some embodiments. The first node 10 can be configured to communicate (or interact) with the second node 20 to manage at least one infrastructure component and communicate (or interact) with the third node 30 to manage at least one FaaS platform. Thus, the first node 10 can be referred to as an infrastructure-as-a-service (IaaS) and FaaS orchestrator node.
[0051] Herein, any references to the at least one FaaS platform will be understood to mean the at least one FaaS platform itself or an instance of the at least one FaaS platform, i.e. at least one FaaS platform instance. Also, any reference to software will be understood to mean an application, a service, or any other type of software. In some embodiments, the software may be a (e.g. FaaS) service that is shared across applications. In these embodiments, the (e.g. FaaS) service may already be deployed by the time of service instantiation. In other embodiments, the software may be a (e.g. FaaS) service that is dedicated to an application. In these embodiments, the (e.g. FaaS) service may be deployed together with the application.
[0052]
[0053] The method is performed in response to a first request 40 to run software using at least one infrastructure component and at least one function component. In some embodiments, the at least one function component may comprise at least one function and/or any other function component, or any combination of function components. In some embodiments, the at least one infrastructure component may comprise at least one container, at least one virtual machine (VM), and/or any other infrastructure component, or any combination of infrastructure components.
[0054] The first request 40 may be from a client. The first request 40 may be referred to as a mixed request. In some embodiments, the first request 40 to run software may be a request to instantiate the software. That is, the first request 40 may be a request to create an instance of the software. Thus, in some embodiments, the software referred to herein may be an instance of software, which can also be referred to as a software instance. In embodiments involving the instantiation of software, the first request 40 can be referred to as a mixed software (e.g. service or application) instantiation request.
[0055] As illustrated at block 102 of
[0056] As illustrated at block 104 of
[0057] In some embodiments, the first request 40 may comprise one or more first constraints placed on the at least one infrastructure component and/or the at least one function component. In some embodiments, the second request 50 may comprise one or more second constraints placed on the at least one infrastructure component. In some embodiments, the one or more second constraints may comprise a constraint to locate the at least one infrastructure component at the same location as the at least one FaaS platform and/or a constraint to limit execution of the at least one function component to at least one infrastructure component that is running the at least one FaaS platform. In some embodiments, the one or more second constraints may be based on the one or more first constraints.
[0058] In some embodiments the third request 60 may be a request to configure the at least one FaaS platform to run the software according to one or more third constraints placed on the at least one FaaS platform. In some embodiments, the one or more third constraints may comprise a constraint to limit execution of the at least one function component to a single one of the at least one FaaS platform or a constraint to limit execution of the at least one function component to a plurality of the at least one FaaS platform located at a same location. In some embodiments, the one or more third constraints may be based on the one or more first constraints.
[0059] In some embodiments, the one or more second constraints may be the same as the one or more first constraints except that the one or more second constraints are placed on the at least one infrastructure component, whereas the one or more first constraints are placed on the at least one infrastructure component and/or the at least one function component. Alternatively or in addition, in some embodiments, the one or more third constraints may be the same as the one or more first constraints except that the one or more third constraints are placed on the at least one FaaS platform, whereas the one or more first constraints are placed on the at least one infrastructure component and/or the at least one function component. The constraints referred to herein may also be referred to as attributes or scope attributes.
[0060] Although not illustrated in
[0061] In some embodiments, if the at least one FaaS platform is already deployed, the information indicative of the at least one FaaS platform may be information indicative of the already deployed at least one FaaS platform. In some of these embodiments, if the already deployed at least one FaaS platform fails to meet one or more requirements of the software, the second request 50 may further comprise information indicative of one or more changes to be made to the already deployed at least one FaaS platform for the already deployed at least one FaaS platform to meet the one or more requirements of the software. On the other hand, in some embodiments, if the at least one FaaS platform is not already deployed, the second request 50 may be a request to deploy the at least one infrastructure component and the at least one FaaS platform.
[0062] In some embodiments, the transmission of the third request 60 mentioned earlier may be initiated towards the third node 30 in response to successful deployment of the at least one FaaS platform. In some embodiments, in response to successful deployment of the at least one FaaS platform, transmission of a message may be initiated to indicate that the deployment of the at least one FaaS platform is successful. In some embodiments, in response to unsuccessful deployment of the at least one FaaS platform, transmission of a message may be initiated to indicate that the deployment of the at least one FaaS platform is unsuccessful. More specifically, the processing circuitry 12 of the first node 10 may be configured to initiate the transmission of (e.g. itself transmit, such as via a communications interface 16 of the first node 10, or cause another node to transmit) the message indicative of whether the deployment of the at least one FaaS platform is successful or unsuccessful.
[0063] In some embodiments, in response to successful configuration of the at least one FaaS platform to run the software, transmission of a message may be initiated to indicate that the configuration of the at least one FaaS platform to run the software is successful. In some embodiments, in response to unsuccessful configuration of the at least one FaaS platform to run the software, transmission of a message may be initiated to indicate that configuration of the at least one FaaS platform to run the software is unsuccessful. More specifically, the processing circuitry 12 of the first node 10 may be configured to initiate the transmission of (e.g. itself transmit, such as via a communications interface 16 of the first node 10, or cause another node to transmit) the message indicative of whether the configuration of the at least one FaaS platform to run the software is successful or unsuccessful.
[0064] In some embodiments, the first request 40 in response to which the method is performed may be for running the software using a plurality of groups of components. In these embodiments, each group of the plurality of groups of components can comprise at least one infrastructure component and/or at least one function component. In some of these embodiments, the method described herein may be performed for each group of the plurality of groups of components. A group of components may also be referred to as an affinity group. An affinity group comprises components that have an affinity to each other. For example, an affinity group can comprise components that have one or more of the same constraints placed on them. Examples of these constraints include, but are not limited to, host, location, zone, region, site, etc.
[0065] There are various types of affinity group in respect of which the method described herein may be performed. The one or more first constraints placed on the at least one infrastructure component and/or the at least one function component may be different depending on the affinity group to which the at least one infrastructure component and/or the at least one function component belongs. An example of an affinity group is a node affinity group. In this respect, the one or more first constraints placed on at least one infrastructure component and/or the at least one function component of a node affinity group may comprise a constraint that the at least one infrastructure component and/or the at least one function component of the node affinity group are to be co-located at a particular node (e.g. a Kubernetes worker node). Another example of an affinity group is a site affinity group. In this respect, the one or more first constraints placed on at least one infrastructure component and/or the at least one function component of a node affinity group may comprise a constraint that the at least one infrastructure component and/or the execution of the at least one function component of the node affinity group are to be co-located at a particular site (e.g. on any worker nodes of a Kubernetes cluster that spans a site). Although some examples of types of affinity group have been provided, it will be understood that the method described herein may be performed in respect of any other type of affinity group.
[0066] The first node 10 described herein is able to manage the affinity constraints of a first request 40, even when the first request 40 is to run software using at least one infrastructure component and at least one function component. The affinity groups can be extended to contain both infrastructure components and function components. The first node 10 can ensure that functions are executed consistently with the given affinity constraints. More specifically, the first node 10 can enable the running of software using at least one infrastructure component and at least one function component in line with the affinity constraints that are set between these components, regardless of whether these components are infrastructure or function components.
[0067]
[0068] The method is started at block 402 of
[0069] In more detail, at block 404 of
[0070] In some embodiments, when the at least one FaaS platform is already deployed (e.g. shared among multiple applications), the second request 50 may be programmed to use this deployment. For example, the information in the second request 50 that is indicative of at least one FaaS platform may be a reference to this existing deployment. In other embodiments, when the at least one FaaS platform is not already deployed or is not dedicated to the software to be run, the second request 50 may encode the necessary changes in the deployment. For example, the information in the second request 50 that is indicative of at least one FaaS platform may be a request to instantiate the at least one FaaS platform.
[0071] At block 406 of
[0072] At block 408 of
[0073] In some embodiments, when the at least one FaaS platform is requested as a shared platform, the first node 10 (or, more specifically, the processing circuitry 12 of the first node 10) may enable the second node 20 to use at least one already existing FaaS platform. In some of these embodiments, the first node 10 (or, more specifically, the processing circuitry 12 of the first node 10) may update the at least one already existing FaaS platform to fulfill one or more first constraints provided with the first request 40. In embodiments where the at least one FaaS platform is to be dedicated to the software, the first node 10 (or, more specifically, the processing circuitry 12 of the first node 10) may request that at least one new FaaS platform is created.
[0074] At block 410 of
[0075] On the other hand, at block 412 of
[0076] In some embodiments, the at least one infrastructure component and the at least one FaaS platform may be configured (e.g. programmed) synchronously, i.e. in sync. For example, at block 414 of
[0077] Returning back to
[0078] On the other hand, if the configuration of the FaaS platform is unsuccessful, the method may proceed to block 420 of
[0079] As described earlier, in some embodiments, the first request 40 can comprise one or more first constraints placed on the at least one infrastructure component and/or the at least one function component. The one or more first constraints can be between the software forming components in the form of affinity groups, regardless of whether those components are function components or infrastructure components. It is thus not possible to derive from the first request 40 any constraints related specifically to the at least one infrastructure component implementing the at least one FaaS platform to be used by the software. Furthermore, the second node 20 is unable to consider the affinity groups as it unaware of the function components implementing the software.
[0080] As such, in some embodiments, mixed affinity groups can be translated into ones specifying one or more second constraints on the at least one infrastructure component and/or one or more third constraints on the at least one FaaS platform individually. An example of a method for deriving one or more second constraints on the at least one infrastructure component is illustrated in
[0081]
[0082] The method is started at block 502 of
[0083] If, at block 506 of
[0084] At block 510 of
[0085] If, at block 506 of
[0086] At block 514 of
[0087]
[0088] More specifically, the method illustrates a manner in which one or more third constraints placed on the at least one FaaS platform may be derived. As mentioned earlier, a constraint may also be referred to as an affinity rule. In effect, as will be described with reference to
[0089] The method is started at block 602 of
[0090] If, at block 606 of
[0091] If, at block 610 of
[0092] The one or more third constraints generated at block 612 of
[0093] If, at block 610 of
[0094] At block 614 of
[0095] In some embodiments, for each location group, the first node 10 (or, more specifically, the processing circuitry 12 of the first node 10) may ascertain the number of the FaaS platform components that are in a proper affinity with the infrastructure components of the location group. In the case of node affinity, this step can consider one or more FaaS platforms running on the given hosting server. In the case of site affinity, this step can consider one or more FaaS platform components running on any servers deployed to the same site as the given hosting server. In embodiments where the location groups are comprised of one infrastructure component, the first node 10 (or, more specifically, the processing circuitry 12 of the first node 10) may use a combination of an affinity group identifier ID and an infrastructure component name as a group ID. In such a case, the infrastructure component does not need to be configured as it is able to determine the location group name in advance.
[0096] At block 616 of
[0097]
[0098] There is also provided a computer program comprising instructions which, when executed by processing circuitry (such as the processing circuitry 12 of the first node 10 described earlier), cause the processing circuitry to perform at least part of the method described herein. There is provided a computer program product, embodied on a non-transitory machine-readable medium, comprising instructions which are executable by processing circuitry (such as the processing circuitry 12 of the first node 10 described earlier) to cause the processing circuitry to perform at least part of the method described herein. There is provided a computer program product comprising a carrier containing instructions for causing processing circuitry (such as the processing circuitry 12 of the first node 10 described earlier) to perform at least part of the method described herein. In some embodiments, the carrier can be any one of an electronic signal, an optical signal, an electromagnetic signal, an electrical signal, a radio signal, a microwave signal, or a computer-readable storage medium.
[0099] In some embodiments, the first node functionality and/or any other node functionality described herein can be performed by hardware. Thus, in some embodiments, the first node 10 and/or any other node described herein can be a hardware node. However, it will also be understood that optionally at least part or all of the first node functionality and/or any other node functionality described herein can be virtualized. For example, the functions performed by any the first node 10 and/or any other node described herein can be implemented in software running on generic hardware that is configured to orchestrate the node functionality. Thus, in some embodiments, the first node 10 and/or any other node described herein can be a virtual node. In some embodiments, at least part or all of the first node functionality and/or any other node functionality described herein may be performed in a network enabled cloud. The first node functionality and/or any other node functionality described herein may all be at the same location or at least some of the node functionality may be distributed.
[0100] It will be understood that at least some or all of the method steps described herein can be automated in some embodiments. That is, in some embodiments, at least some or all of the method steps described herein can be performed automatically.
[0101] Thus, in the manner described herein, there is advantageously provided a technique for handling the running of software in a network.
[0102] It should be noted that the above-mentioned embodiments illustrate rather than limit the idea, and that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the appended claims. The word “comprising” does not exclude the presence of elements or steps other than those listed in a claim, “a” or “an” does not exclude a plurality, and a single processor or other unit may fulfill the functions of several units recited in the claims. Any reference signs in the claims shall not be construed so as to limit their scope.