INCARNATION SELECTION FOR PROVIDING APPLICATIONS IN A DISTANT SERVICE ENVIRONMENT VIA HOSTING

DE112021004686B4Active Publication Date: 2024-12-19INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
DE112021004686
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-12
Filing Date
2021-08-24
Publication Date
2024-12-19
Estimated Expiration
2041-08-24

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method executed on a computer, comprising: receiving an application comprising a plurality of services to be provided by hosting in a remote service environment (101); receiving a resource profile (201) indicating the use of a resource by a given service from the plurality of services over a period of time (102); dividing the given service into a plurality of service sections based on the resource profile corresponding to a given service, wherein the dividing comprises discretizing the resource profile and dividing the discretized resource profile into the plurality of service sections (1, 2, 3, 4) (103);Selecting an incarnation (A, B, C, D) for each from the plurality of service sections that meets a resource requirement and service offering, wherein an incarnation has an overall requirement value based on a resource capacity of a node in the remote service environment, wherein the selection includes identifying alternative incarnations that meet the resource requirement and service offering, and selecting one of the alternative incarnations based on at least one attribute of the alternative incarnations (104); and assigning the selected incarnation to at least one node within the remote service environment for each from the plurality of service sections based on the resource capacity of the at least one node (106).
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUNDAs remote computing or service environments increase, for example, remote network environments, cloud computing environments, and the like, more and more users and entities offload the provisioning of applications and other services to the remote service environment via hosting. By moving applications and other services to the remote service environment via hosting, the users and other entities may reduce the use of internal resources (e.g., infrastructure, computing resources, human resources, etc.) and reduce other costs associated with the application and other services. In addition, because the remote service environment typically has significantly more resources, particularly computing resources, than are locally available to the user or entity, the user or entity is able to scale the application being hosted in the remote service environment.US 2020 / 0 120 662 A1 relates to a slot resource configuration method in wireless communication. The method includes: receiving user equipment-specific downlink control information from a base station, wherein the user equipment-specific downlink control information is used to indicate a use configuration status of a flexible resource in at least one slot; when the use configuration status is a use disable state, configuring, according to the use disable state, the user equipment to be prohibited from performing communication by using the flexible resource, wherein the communication is scheduled by the user equipment-specific downlink control information.DE 10 2016 110 424 A1 relates to a method for monitoring a communication network having a plurality of sub-networks having a first sub-network and a second sub-network, wherein a first communication entity having a first network function is assigned to the first sub-network, and wherein a second communication entity having a second network function is assigned to the second sub-network, wherein the method has the following steps: monitoring a communication status of the first network function of the first network entity of the first sub-network by a first monitor and transmitting a first status signal to a sub-network manager, wherein the first status signal indicates the communication status of the first network function; monitoring a communication status of the second network function of the second network entity of the second subnet by a second monitor and sending a second status signal to the subnet manager, the second status signal indicating the communication status of the second network function; and monitoring communication resources of the first subnet and the second subnet by the subnet manager based on the first status signal and the second status signal.US 2018 / 0 181 437 A9 relates to a method for automatically allocating computer resources in a computer system, the method comprising: obtaining performance data characterizing the computer system, the computer system implementing services with varying demand over time; generating a system resource usage profile based on the performance data, the performance data comprising data on central processing unit (CPU) utilization and response time data, the response time data being defined for one or more transactions, workloads, jobs, tasks, applications, or threads comprising the services; Receiving service level destinations for the services, the service level destinations characterizing a manner in which the services are provided to the users over time; automatically generating one or more provisioning policies based on the system resource usage profile and one or more of the quality of service destinations, comprising calculating a number of servers required for each of a plurality of time slots; and providing the computer resources based on at least one of the provisioning policies including adjusting an assignment of servers to the number of servers required for a particular time slot of the plurality of time slots.SUMMARYThe invention relates to a method, an apparatus and a computer program product, the features of which are specified in the corresponding independent patent claims. Embodiments of the invention are set forth in the dependent claims.A method is provided, executed on a computer, comprising: receiving an application comprising a plurality of services to be hosted in a remote service environment; obtaining a resource profile indicative of a use of a resource by a given service of the plurality of services over a period of time; dividing the given service into a plurality of service sections (service slices) based on the resource profile corresponding to a given service; selecting an incarnation for each of the plurality of service sections that satisfies a resource demand requirement and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment; and assigning the selected incarnation to at least one node within the remote service environment for each of the plurality of service sections based on the resource capacity of the at least one node.There is also provided an apparatus comprising: at least one processor; and a computer readable storage medium having computer readable program code embodied thereon and executable by the at least one processor; wherein the computer readable program code is configured to receive an application comprising a plurality of services to be hosted in a remote service environment; wherein the computer readable program code is configured to obtain a resource profile indicating use of a resource by a given service of the plurality of services over a period of time; wherein the computer readable program code is configured to partition the given service into a plurality of service portions based on the resource profile corresponding to a given service; wherein the computer readable program code is configured to select an incarnation for each of the plurality of service sections that satisfies a resource demand requirement and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment; and wherein the computer readable program code is configured to assign the selected incarnation to at least one node within the remote service environment for each of the plurality of service sections based on the resource capacity of the at least one node.There is also provided a computer program product comprising: a computer readable storage medium having computer readable program code embodied thereon, the computer readable program code executable by a processor; wherein the computer readable program code is configured to receive an application comprising a plurality of services to be hosted in a remote service environment; wherein the computer readable program code is configured to obtain a resource profile indicating use of a resource by a given service of the plurality of services over a period of time; wherein the computer readable program code is configured to partition the given service into a plurality of service portions based on the resource profile corresponding to a given service; wherein the computer readable program code is configured to select an incarnation for each of the plurality of service sections that satisfies a resource demand requirement and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment; and wherein the computer readable program code is configured to assign the selected incarnation to at least one node within the remote service environment for each of the plurality of service sections based on the resource capacity of the at least one node.For a better understanding of the exemplary embodiments of the invention, together with other and further features and advantages thereof, reference is made to the following description taken in conjunction with the accompanying drawings, and the scope of the claimed embodiments of the invention is set forth in the appended claims.BRIEF DESCRIPTION OF THE VARIOUS VIEWS OF THE DRAWINGSFIG. 1 illustrates a method for hosting at least one application service incarnation for providing the application in a remote service environment. FIG. 2 illustrates an example of dividing a service into service sections. FIG. 3 illustrates an example in which possible incarnations are determined and an incarnation is selected for service sections. FIG. 4 illustrates an example of inserting service portions into nodes of a remote service environment. FIG. 5 illustrates a computer system.DETAILED DESCRIPTIONIt will be readily understood that the components of the embodiments of the invention, as generally described herein and illustrated in the figures, may be arranged and executed in a wide variety of different configurations, in addition to the described exemplary embodiments. Accordingly, the following more detailed description of the embodiments of the invention as illustrated in the figures is not intended to limit the claimed scope of the invention, but is merely representative of exemplary embodiments of the invention.Reference throughout this specification to "one embodiment" (or the like) means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. Thus, each occurrence of the phrase "in one embodiment" or the like in various places throughout this specification does not necessarily refer to the same embodiment.Furthermore, in at least one embodiment, the described features, structures, or characteristics may be combined in any suitable manner. In the following description, numerous specific details are provided to provide a thorough understanding of the embodiments of the invention. However, one skilled in the art will readily appreciate that embodiments of the invention may be practiced with at least one of the specific details omitted therefrom, or may be practiced with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail in order to avoid obscuring aspects of the invention.The illustrated embodiments of the invention may best be understood by reference to the figures. The following description is intended to be exemplary only and simply illustrates certain selected exemplary embodiments of the invention claimed herein. It should be noted that the flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, apparatuses, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code that includes at least one executable instruction for executing the particular logical function(s).It should also be noted that in some alternative implementations, the functions indicated in the block may occur in a different order than shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order depending on the appropriate functionality. It is also noted that each block of the block diagrams and / or flow charts, as well as combinations of blocks in the block diagrams and / or flow charts, may be implemented by special purpose hardware-based systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.Reference will now be made in concrete terms to FIGS. 1 to 5. It should be appreciated that the processes, arrangements, and products generally illustrated therein may be executed substantially on or in accordance with any suitable computer system or set of computer systems, including, by way of illustrative and non-limiting example, a system or server such as that indicated at 12' in FIG. 5. In accordance with an exemplary embodiment, most, if not all, of the process steps, components, and outputs discussed with respect to FIGS. 1-4 may be performed or utilized by a processing unit or units and system memory, such as those indicated at 16' and 28' respectively in FIG. 5, regardless of whether they are located in a server computer, a client computer, a distributed network node computer, or any combination thereof.In hosting an application or services of an application to be provided in a remote service environment, the user or entity hosting the application or services must pay for the hosting provision. Generally, the application entity buys a set of nodes on the hosting entity for the application or services. This set of nodes is generally referred to as a cluster. The cluster must have enough resources to run the application and perform the desired performance. However, the application entity prefers to minimize the cost of the cluster by purchasing the least number of nodes or by purchasing nodes that may have lower performance. If the application entity buys too few nodes or nodes with too little power to execute the application, the application entity violates service scope agreements that the application entity has hit with its customers. These violations result in costs for the company, either in the form of payments to unsatisfying customers or in the form of losses in sales. On the other hand, if the application entity buys too many nodes or nodes with additional features, the application entity will end pay more for the services of the remote service environment than necessary.One problem in estimating the correct number of nodes is that applications or services of applications generally have resource consumption values that vary over a period of time. For example, an application may show an increase in transactions per second (TPS) at peak times and a decrease in TPS at the minor times. Thus, the application does not always need the same amount of resources. Thus, if the power or capacity value of a node is chosen based on average resource usage, the nodes are unable to handle the peak power demand. One conventional technique is to monitor the resource usage of the application or service once the application or service has been moved to the remote service environment. The problem with this technique is that the application or service has already been moved to the remote service environment at this time, which means that the nodes have already been purchased. Even if the conventional technique system determines that fewer nodes are needed after some time, the application entity has already paid a time for the use of the additional nodes, resulting in an unnecessary increase in the cost of the application entity.Accordingly, an embodiment provides a system and method for hosting at least one application service incarnation for providing the application in a remote service environment. The system receives an application that includes a plurality of services to be hosted in a remote service environment (e.g., a remote network environment, a cloud environment, etc.). For simplicity, a cloud environment is used throughout as a principal example of a remote service environment. However, this is not intended to limit the scope of this application in any way. For each of the services of the application, a resource profile is obtained that indicates usage of a resource (e.g., transactions per second (TPS), memory, database accesses, etc.) over a period of time. To facilitate readability, TPS is used as an example of the primary resource. However, this is not intended to limit the scope of this application in any way.Using the resource profile, the system divides each of the services into service sections. These service sections represent where resource usage was constant during an interval. In other words, the system determines intervals at which a service has a constant resource demand value. The system treats each of the service sections as an individual service for the purpose of selecting an incarnation. Thus, based on the service sections, the system generates a plurality of incarnations that can satisfy the resource demand value of each of the service sections. The incarnations are based on a resource capacity of a buyable node in the remote service environment. Based on the resource capacities of the different nodes, the system is able to determine multiple incarnations or sets of nodes that meet the resource requirement requirement of the service section.Once an incarnation is selected, for example, based on the incarnation having the lowest total demand value, the system allocates the incarnation nodes in the remote service environment. The assignment is based on determining a node with the indicated resource capacity and a node that is sufficiently large for the service section. Once the assignment has been performed for all service portions of all services, the application may be moved to the remote service environment by scheduling the application jobs for execution in the remote service environment.Such a system represents a technical improvement over current systems for migrating applications to a remote service environment. The described system and method can determine an accurate number of nodes or clusters required to run an application with the desired performance before migrating the application to the remote service environment. By determining the correct number of nodes and the required node performance values prior to moving the application to the remote service environment, the described system provides a great technical improvement over the range of remote service environments over conventional systems which can make a determination at best only after the application has been moved to the remote service environment. In addition, by making the determination prior to moving the application or service to the remote service environment, the application entity may be assured of purchasing sufficient nodes to meet customer service scope agreements while minimizing cluster costs by not purchasing too many nodes.FIG. 1 illustrates a method for hosting at least one application service incarnation for providing the application in a remote service environment. At 101, the system receives an application comprising a plurality of services to be hosted in the remote service environment. The application may be an application that has created or otherwise controls the application entity (i.e., the entity that owns, created, or otherwise controls) to host in the cloud service environment. The application may consist of or comprise different services, each service being able to be executed independently of other services within the application. In other words, each service within the application could be executed in a different portion of the cloud service environment without compromising the performance of the application. However, all services are necessary for the entire application to run correctly and for the intended function of the application to be performed.Accordingly, receiving the application may be receiving any indication from an application entity regarding the desire to offload an application to the cloud service environment. For example, receiving the application may include a user or application entity providing the system with a link corresponding to the application, or the application being uploaded to the system, or the like. If the described system is part of the cloud service environment, receiving the application may additionally include receiving the application in the cloud service environment. The system may then perform the described method after receiving the application in the cloud service environment. In other words, receiving the application may be performed via any technique for receiving, accessing, or otherwise obtaining the application or data that enables accessing the application or services of the application.At 102, the system obtains a resource profile for each of the services within the application. The resource profile indicates a use of a resource by the service over a period of time. The obtained resource profile is a profile for a resource of interest. In general, the chosen resource is a resource that affects the performance of the application or a resource of interest to a client of the application entity. For example, the application entity may have agreements on the scope of service with customers requesting the application entity to provide some basic level of performance. To achieve this baseline level of performance, the application entity may be interested in a resource that is directly related to achieving the baseline level of performance. Since an application entity may be interested in more than one resource, the system may obtain more than one resource profile, each for different resources. Some example resources include transactions per second (TPS), memory usage, database accesses, or the like. As a main example, TPS is used throughout.Obtaining the resource profile may be accomplished by one or more techniques from a variety of techniques. One technique for obtaining the resource profile is to run the service and monitor the resource usage of the service over a period of time of, for example, a day, a week, a few hours, or the like. Another technique for obtaining the resource profile is to receive the resource profile from a user or other entity that has already created the resource profile. The resource profile can also be obtained by finding a service that is similar to the target service and that already has a resource profile, and using the resource profile of the similar service for the target service.At 103, the system divides each service into a plurality of service sections. To perform the partitioning, the system uses the resource profile obtained at 102 and discretizes the profile. In other words, the system represents the profile as discrete quantities, so that the profile now has discrete values for different intervals. The system then divides the discretized profile into service sections. Each of the service sections represents a constant or constant demand over an interval, for example, a time interval, a start and end interval of the demand, or the like. Each of the service sections is treated as a stand-alone service for the selection of an incarnation. In other words, the system is capable of invoking each service section and determining when to allocate a resource and when to de-allocate the resource for that service section.An example of dividing a service into service sections is shown in FIG. 2. The original profile is shown at 201. The system then discretizes the profile. This discretized profile is represented at 202. As shown in the graph of 202, the discretized results in discrete values for intervals that include the actual profile values in the same interval. The system then splits the discretized graph into different sections that represent a constant demand for the resource for an interval, for example, a time interval. The segmented graph is illustrated at 203 and includes four distinct segments, 1, 2, 3 and 4.At 104, the system determines whether a possible incarnation for each of the service sections can be selected for each of the services. An incarnation is based on a resource capacity of a node in the remote service environment. A buyable node may have different resource capacities. For example, the node may include a number of cores, an amount of allocated memory, a storage capacity, a resource value (e.g., the TPS offered by the node, etc.), and the like. Since different buyable nodes have different resource capacities and capabilities, there are many different alternatives that would result in a set of nodes that would meet the requirements of the service section. Each of these various alternatives is referred to as incarnation. For example, one incarnation may comprise three nodes with a certain resource capacity, while another incarnation may comprise two nodes with a different resource capacity.Thus, to determine possible incarnations, the system must determine how many nodes with certain resource capacities would be required to meet the resource requirements of a service section. For better understanding of the process, single node types are used as an example. However, types with multiple nodes can also be used, which is explained in more detail below. The total number of nodes required is also referred to as the total demand for the incarnation. To make the determination of the total demand for the incarnation, the system performs a correlation analysis between the resource capacity of the nodes and the resource demand of the incarnation.An exemplary analysis is illustrated in FIG. 3. The capacity of the particular node type is 16 cores, 512 GB storage capacity and 1 TB hard disk capacity. The TPS requirement of the service section is 3000. The various attachments illustrated in the left table indicate the resource requirements of each attachment. The right table illustrates the overall demand for the incarnation, which is based on the demand for the incarnation with respect to the resource capacity of the node type. The number of copies, also referred to as replicates, is based on the TPS requirement of the incarnation with respect to the TPS requirement of the service section. For example, Incarnation 1 provides 500 TPS, while the TPS demand of the service section is 3000 TPS. Thus, the number of replicates required is 6 (i.e., 3000 / 500). The total demand may then be calculated by multiplying the total demand by the required number of replicates.If different resources or resource values, also called dimensions, are of interest, the dimensions may be weighted in calculating the total demand. For example, if one application entity is interested in one resource more than another, the resource may receive a higher weight in the calculation. In addition, incarnations may be mixed, meaning that any two incarnations may be associated with different node types. In the case of multinode types, a similar technique to the singlenode types may be used. A node type refers to the resource capacities, hardware / software configuration (e.g., operating systems, chipset, storage technology, etc.) of the node. In other words, if a node has a different resource capacity than another node, these nodes are different node types. For example, if one node has 16 cores and another node has 8 cores, these nodes are different node types.In the case of multiple node types, each node type is handled individually and the computation described above for a single node type is used. Once the calculation of the total requirement of this node type has been performed, the calculation can be performed for the next node type. For each of the node types, the system determines costs for placing the incarnation in that particular node type. The system also determines a benefit of the node type. The benefit may represent the sum of the resource requirements over the number of replicates assigned to the node type. From the benefit and cost, the system determines an effectiveness of a particular node type. Effectiveness can be calculated by dividing the benefit by cost. The node type selected for assigning a particular attachment may be the node type with the greatest effectiveness value.Once the total demand for each of the attachments is determined, the system may select an attachment for each service section. The selected incarnation may be the incarnation with the lowest total demand value. The selected incarnation can also be the incarnation with the lowest total cost for the application entity. Since each node type has associated costs, selecting different incarnations may result in different costs for the application entity. This may be particularly remarkable when multinode types are used in a single incarnation. Thus, the chosen incarnation may be the cheapest one which still meets the resource requirements.If an incarnation cannot be selected at 104, the system cannot take action at 105. There may be a case that an incarnation cannot be selected if there are no nodes that can meet the resource demand requirements. The system may also notify the user or the application entity that an incarnation cannot be selected. On the other hand, if an incarnation can be selected at 104, the system may assign the selected incarnation to a node within the remote service environment. In other words, once the incarnation is selected, the system may assign the service portion to the node corresponding to the incarnation.To assign the incarnation, the system may sort the replicates for the incarnation based on a start time of each individual replicate. The sorting may be performed in ascending order of the start time. The system may then assign the first replicate (i.e., the first launched replicate) to a node of the cloud environment. The system then uses the next or next but one replicate and determines whether it fits into the same node. If the replicate fits in the same node, it is assigned to the same node. If it does not fit in the same node, the system opens a new node and assigns the replicate to the new open node. This process continues iteratively until all replicates are assigned to a node. This process is also performed for all service sections and all services of the application.To make a more efficient assignment, the system may first determine for subsequent replicates whether the subsequent replicate fits within the most populated node. If it does not fit in the most occupied node, the system may determine if it fits in the following most occupied node. The system may continue this process until it finds a node into which the replicate fits, even if it is a new node. In the case of assignments of multiple node types, the system assigns the incarnation to a node type matching the incarnation.An exemplary illustration of an assignment is shown in FIG. 4. 401 illustrates the selected incarnations. After the analysis was performed, the system determined that the Incarnations A, B and C fit in node 1 402A and the Incarnation D fit in node 2 402B. The assignment may also include scheduling the incarnations for execution on the nodes of the cloud service environment. In other words, the system creates the node cluster and schedules the tasks, effectively migrating or moving the application into the cloud service environment.As shown in Figure 5, a computer system / server 12' in the data processing node 10' is shown in the form of a general purpose data processing unit. The components of computer system / server 12' may include, but are not limited to, at least one processor or processing unit 16', system memory 28' and a bus 18' that couples various system components, including system memory 28' to processor 16'. Bus 18' represents at least any of several types of bus structures, including a memory bus or controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. Such architectures include, by way of example and not limitation, an industry standard architecture (ISA) bus, a micro channel architecture (MCA) bus, an enhanced ISA (EISA) bus, a video electronics standards association (VESA) local bus, and a peripheral component interconnects (PCI) bus.Computer system / server 12' typically comprises a variety of computer system readable media. Such media may be any available media that is accessible to computer system / server 12', and may include both volatile and non-volatile media, as well as removable and non-removable media.System memory 28' may include computer system readable media in the form of volatile memory such as random access memory (RAM) 30' and / or cache 32'. Computer system / server 12' may also include other removable / non-removable, volatile / non-volatile computer system storage media. For example only, storage system 34' may be provided for reading from and writing to a non-replaceable, non-volatile magnetic medium (not shown and commonly referred to as a "hard disk drive"). A magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM, or other optical medium may also be provided, although not shown. In such cases, they may each be connected to bus 18' via at least one data media interface. As further illustrated and described below, system memory 28' may include at least one program product that may include a set of program modules (e.g., at least one) configured to perform the functions of embodiments of the invention.The program / utility 40' having a set of program modules 42' (at least one), as well as an operating system, at least one application program, other program modules, and program data, may be stored in the system memory 28'. Any one of the operating systems, the at least one application program, the other program modules, and the program data, or a combination thereof, may include implementation of a network environment. The program modules 42' may generally perform the functions and / or methodologies of embodiments of the invention described herein.Computer system / server 12' may also communicate with at least one external device 14' such as a keyboard, a pointing device, a display 24', etc., at least one device that allows a user to interact with computer system / server 12', and / or any devices (e.g., network card, modem, etc.) that allow computer system / server 12' to communicate with at least one other computing device. Such a data exchange can take place via I / O interfaces 22'. Additionally, the computer system / server 12' may communicate with at least one network, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), via a network adapter 20'. As shown, network adapter 20' communicates with the other components of computer system / server 12' via bus 18'. It should be understood that other hardware and / or software components could be used in conjunction with computer system / server 12', although not shown. Examples include, but are not limited to, microcode, device drivers, redundant processing devices, external hard disk drive arrays, RAID systems, tape drives, and storage systems for data archive, etc.This disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limiting. Many modifications and variations will be apparent to one skilled in the art. The embodiments were chosen and described in order to explain principles and practical application, and to enable others skilled in the art to understand the disclosure.Although illustrative embodiments of the invention have been described herein with reference to the accompanying drawings, it should be understood that the embodiments of the invention are not limited to exactly these embodiments, and those skilled in the art can make various other changes and modifications thereto without departing from the scope or spirit of the disclosure.The present invention may be a system, a method and / or a computer program product. The computer program product may comprise a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.The computer readable storage medium may be a physical device that can retain and store instructions for use by a system for executing instructions. The computer readable storage medium may be, for example, but is not limited to, an electronic storage unit, a magnetic storage unit, an optical storage unit, an electromagnetic storage unit, a semiconductor storage unit, or any suitable combination thereof. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a removable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions stored thereon, and any suitable combination thereof. A computer readable storage medium, as used herein, is not intended to be transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cables), or electrical signals transmitted through a wire.Computer readable program instructions described herein may be downloaded from a computer readable storage medium to respective data processing / processing devices or via a network such as the Internet, a local area network, a wide area network, and / or a wireless network to an external computer or storage device. The network may include copper transmission cables, lightwave transmission conductors, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the corresponding computing / processing unit.Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk, C++, or the like, as well as conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, via the Internet using an Internet Service Provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuits to perform aspects of the present invention.Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It is noted that each block of the flowcharts and / or the block diagrams, and combinations of blocks in the flowcharts and / or the block diagrams, may be executed by computer readable program instructions. These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions executed via the processor of the computer or other programmable data processing apparatus produce a means for implementing the functions / steps specified in the flowchart and / or block diagram block or blocks. These computer readable program instructions may also be stored on a computer readable storage medium that can control a computer, programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored thereon comprises an article of manufacture including instructions that implement aspects of the function / step specified in the flowchart and / or block diagrams block or blocks.The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of process steps to be performed on the computer or other programmable apparatus or other device to produce a computer executed process, such that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / steps specified in the flowchart and / or block diagram block or blocks.The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions that include one or more executable instructions for executing the specified logical function(s). In some alternative implementations, the functions specified in the block may occur in a different order than shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order depending on the appropriate functionality. It is also noted that each block of the block diagrams and / or flow charts, as well as combinations of blocks in the block diagrams and / or flow charts, may be implemented by special purpose hardware-based systems that perform the specified functions or steps, or perform combinations of special purpose hardware and computer instructions.

Claims

A computer-executed method, comprising: receiving an application comprising a plurality of services to be hosted (101) in a remote service environment; obtaining (102) a resource profile (201) indicating usage of a resource by a given service of the plurality of services over a period of time; dividing the given service into a plurality of service sections based on the resource profile corresponding to a given service, wherein the dividing comprises (103) discretized the resource profile and dividing the discretized resource profile into the plurality of service sections (1, 2, 3, 4); selecting an incarnation (A, B, C, D) for each of the plurality of service sections that satisfies a resource demand request and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment, wherein the selecting comprises identifying alternative incarnations that satisfy the resource demand request and the service offer, and selecting one of the alternative incarnations based on at least one attribute of the alternative incarnations (104); and assigning the selected incarnation to at least one node within the remote service environment for each of the plurality of service sections based on the resource capacity of the at least one node (106).The method of claim 1, wherein the selecting comprises generating a plurality of possible incarnations for each of the plurality of service portions, each of the plurality of possible incarnations satisfying the resource demand requirement.The method of claim 2, wherein each of the plurality of possible attachments has a corresponding total demand value, and wherein the selected attachment has one of the plurality of possible attachments with a lowest total demand value.The method of claim 1, wherein the total demand value is based on a number of replicates of the incarnation required to satisfy the resource demand requirement with respect to a resource demand value provided by the incarnation.The method of claim 4, wherein the assigning comprises sorting the number of replicates based on a start time of the number of replicates.The method of claim 5, wherein the assigning comprises assigning a first one of the number of replicates to an open node; and iteratively determining, for each replicate of the remaining number of replicates, whether a subsequent replicate of the remaining number of replicates fits within the open node, assigning the subsequent replicate of the remaining number of replicates to the open node in response to determining that the subsequent replicate of the remaining number of replicates fits within the open node, and assigning the subsequent replicate of the remaining number of replicates to a next node in response to determining that the subsequent replicate of the remaining number of replicates does not fit within the open node.The method of claim 1, wherein the total demand value is based on a plurality of resource values, and wherein each of the plurality of resource values is weighted within the total demand value.The method of claim 1, wherein the assigning comprises determining a plurality of node types, determining costs for assigning a given incarnation to a given node type for each of the node types, and assigning the given incarnation to a node type with the greatest effectiveness.The method of claim 1, wherein the assigning comprises scheduling the incarnation for execution on the at least one node.The method of claim 1, wherein the resource comprises transactions per second.An apparatus (10') comprising: at least one processor (16'); and a computer readable storage medium (28') having computer readable program code (42') executable by the at least one processor embodied thereon; wherein the computer readable program code is configured to receive an application comprising a plurality of services to be hosted in a remote service environment; wherein the computer readable program code is configured to obtain a resource profile indicating usage of a resource by a given service of the plurality of services over a period of time; wherein the computer readable program code is configured to subdivide the given service into a plurality of service sections based on the resource profile corresponding to the given service, wherein the dividing comprises discretized the resource profile and dividing the discretized resource profile into the plurality of service sections (1, 2, 3, 4); wherein the computer readable program code is configured to select an incarnation (A, B, C, D) for each of the plurality of service sections that satisfies a resource demand request and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment, wherein the selecting comprises identifying alternative incarnations that satisfy the resource demand request and the service offer, and selecting one of the alternative incarnations based on at least one attribute of the alternative incarnations; and wherein the computer readable program code is configured to assign the selected incarnation for each of the plurality of service sections to at least one node within the remote service environment based on the resource capacity of the at least one node.A computer program product comprising: a computer readable storage medium having computer readable program code (42') embodied thereon, the computer readable program code executable by a processor (16'); wherein the computer readable program code is configured to receive an application comprising a plurality of services to be hosted in a remote service environment; wherein the computer readable program code is configured to obtain a resource profile indicative of a use of a resource by a given service of the plurality of services over a period of time; wherein the computer readable program code is configured to subdivide the given service into a plurality of service sections based on the resource profile corresponding to the given service, wherein the dividing comprises discretized the resource profile and dividing the discretized resource profile into the plurality of service sections (1, 2, 3, 4); wherein the computer readable program code is configured to select an incarnation (A, B, C, D) for each of the plurality of service sections that satisfies a resource demand request and a service offer, wherein an incarnation has a total demand value that is based on a resource capacity of a node in the remote service environment, wherein the selecting comprises identifying alternative incarnations that satisfy the resource demand request and the service offer, and selecting one of the alternative incarnations based on at least one attribute of the alternative incarnations; and wherein the computer readable program code is configured to assign the selected incarnation for each of the plurality of service sections to at least one node within the remote service environment based on the resource capacity of the at least one node.The computer program product of claim 12, wherein the selecting comprises generating a plurality of possible incarnations for each of the plurality of service portions, each of the plurality of possible incarnations satisfying the resource demand requirement.The computer program product of claim 13, wherein each of the plurality of possible attachments has a corresponding total demand value, and wherein the selected attachment has one of the plurality of possible attachments having a lowest total demand value.The computer program product of claim 14, wherein the total demand value is based on a number of replicates of the incarnation required to satisfy the resource demand requirement with respect to a resource demand value provided by the incarnation.The computer program product of claim 15, wherein the assigning comprises sorting the number of replicates based on a start time of the number of replicates.The computer program product of claim 16, wherein the assigning comprises assigning a first one of the number of replicates to an open node; and iteratively determining, for each replicate of the remaining number of replicates, whether a subsequent replicate of the remaining number of replicates fits within the open node, assigning the subsequent replicate of the remaining number of replicates to the open node in response to determining that the subsequent replicate of the remaining number of replicates fits within the open node, and assigning the subsequent replicate of the remaining number of replicates to a next node in response to determining that the subsequent replicate of the remaining number of replicates does not fit within the open node.The computer program product of claim 12, wherein the total demand value is based on a plurality of resource values, and wherein each of the plurality of resource values is weighted within the total demand value.The computer program product of claim 12, wherein the assigning comprises determining a plurality of node types, determining costs for assigning a given incarnation to a given node type for each of the node types, and assigning the given incarnation to a node type with the greatest effectiveness.The computer program product of claim 12, wherein the assigning comprises scheduling the incarnation for execution on the at least one node.

Citation Information

Patent Citations

  • Communication network with a subnetwork manager for monitoring resources of a plurality of subnets

    DE102016110424A1

  • Automated capacity provisioning method using historical performance data

    US20180181437A9

  • Slot resource configuration method in wireless communication and device

    US20200120662A1