Application Migration
The method addresses the challenges of application migration by generating a cost-aware code dependency graph to automate the removal of unused code and replacement of high-cost subgraphs with microservices, resulting in improved performance and reduced costs on the target cloud platform.
Patent Information
- Application Number
- JP2023517663
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-09-18
- Filing Date
- 2021-08-31
- Publication Date
- 2025-04-16
- Estimated Expiration
- 2041-08-31
AI Technical Summary
The process of application migration between cloud platforms is error-prone, labor-intensive, and time-consuming due to the need for manual updates and testing to ensure compatibility and efficiency on the target cloud environment.
A computer-implemented method that generates a cost-aware code dependency graph during application execution on the target cloud infrastructure, allowing for the removal of unused source code and replacement of high-cost subgraphs with calls to generated microservices, thereby optimizing application performance and resource utilization.
This approach enables automated on-the-fly application decomposition and modification, resulting in improved performance, reduced resource utilization, and lower maintenance costs for applications migrated to the target cloud platform.
Smart Images

Figure 0007663302000005 
Figure 0007663302000006 
Figure 0007663302000007
Abstract
Description
[Technical field]
[0001] The present invention relates generally to application migration, and more particularly to application migration using cost-aware code dependency graphs. [Background technology]
[0002] Application migration is the process of moving a software application from one computing environment to another. For example, an application may be moved between data centers, from an on-premise server to a cloud provider's environment, from a public cloud to a private cloud, etc.
[0003] Because applications are typically built to run on a particular operating system in a particular network architecture or developed for a single cloud platform, migrating applications can pose many challenges, which can include ensuring that application dependencies and technical requirements are maintained while meeting enterprise security, compliance, and cost constraints.
[0004] Efficient and effective migration of applications to (or between) cloud platforms is a top priority for both application owners and cloud providers. The migration process involves identifying the parts of the application that can be migrated, identifying the parts of the application that must be adapted to be migrated, and adapting the application. Additionally, an appropriate set of cloud resources must also be selected to efficiently host the migrated application.
[0005] Currently, a developer can manually update an application so that the application can be successfully migrated to and implemented by a target cloud environment. After updating the application, the developer can manually test the application. These current techniques make the application migration process error-prone, labor-intensive, and time-consuming. Summary of the Invention
[0006] One aspect of the invention is directed to a computer-implemented method comprising migrating an application to a target cloud infrastructure, the method further comprising generating a cost-aware code dependency graph during execution of the application on the target cloud infrastructure, the method further comprising modifying the application by removing source code corresponding to unused nodes according to the cost-aware code dependency graph and replacing identified source code of a high-cost subgraph of the cost-aware code dependency graph with calls to generated microservices configured to provide functionality similar to the identified source code, the method further comprising implementing the modified application on one or more virtual machines of the target cloud infrastructure.
[0007] Advantageously, the above-described method allows automated on-the-fly application decomposition so that the migrated application can be reconfigured once deployed on the target cloud infrastructure. Furthermore, the above-described method allows automated modification of the application to achieve improved performance of the application on the target cloud infrastructure by removing source code corresponding to unused nodes and replacing identified source code of the high-cost subgraph with calls to the generated microservices. Removing unused source code can make the application more efficient and less error-prone. Replacing the high-cost subgraph with the generated microservices can achieve improved performance insofar as the generated microservices can be implemented separately on another virtual machine of the target cloud infrastructure that is adapted to efficiently implement the generated microservices.
[0008] A further embodiment of the above method further comprises converting node costs in the cost-aware code dependency graph to edge costs by assigning a respective cost of each node to each edge pointing to said respective node. Advantageously, converting node costs to edge costs facilitates improved use of graph searching algorithms configured to identify sub-graph costs.
[0009] A further embodiment of the above method further comprises creating the generated microservice based on a highest-cost subgraph, replacing a first source code associated with the highest-cost subgraph with the generated microservice, identifying a second subgraph having a similarity to the highest-cost subgraph that exceeds a threshold, and replacing a second source code associated with the second subgraph with the generated microservice. Advantageously, using a generated microservice for a second subgraph having a similarity to the highest-cost subgraph that exceeds a threshold improves efficiency by reusing already generated microservices for more than one component of an application.
[0010] Additional aspects of the invention are directed to systems and computer program products configured to perform the methods described above. This summary of the present invention is not intended to represent each aspect, every implementation, or every embodiment of the present disclosure, or combinations thereof. [Brief description of the drawings]
[0011] The drawings contained herein are incorporated in and constitute a part of this specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. The drawings are merely illustrative of particular embodiments and are not limiting of the disclosure.
[0012] [Figure 1] FIG. 1 is a block diagram of an example computing environment for application migration according to some embodiments of the present disclosure.
[0013] [Diagram 2] 1 is a flowchart of an example method for migrating an application using a cost-aware code dependency graph according to some embodiments of the present disclosure.
[0014] [Diagram 3]1 is a flowchart of an example method for reusing generated microservices for similar subgraphs of a cost-aware code dependency graph according to some embodiments of the present disclosure.
[0015] [Figure 4] 1 is a flowchart of another example method for migrating an application using a cost-aware code dependency graph according to some embodiments of the present disclosure.
[0016] [Diagram 5] 1 is a flowchart of an example method for analyzing, pruning, and modifying a migrated application according to some embodiments of the present disclosure.
[0017] [Figure 6A] FIG. 2 is a diagram of a cost-aware code dependency graph having used and unused nodes according to some embodiments of the present disclosure.
[0018] [Figure 6B] FIG. 2 is a diagram of a cost-aware code dependency graph having nodes with different computational costs associated therewith, according to some embodiments of the present disclosure.
[0019] [Figure 7] FIG. 1 is a diagram of different costly paths in a cost-aware code dependency graph according to some embodiments of the present disclosure.
[0020] [Figure 8] FIG. 1 is a block diagram of an example computer according to some embodiments of the present disclosure.
[0021] [Figure 9] FIG. 1 illustrates a cloud computing environment, according to some embodiments of the present disclosure.
[0022] [Figure 10] FIG. 2 illustrates an abstraction model layer according to some embodiments of the present disclosure.
[0023] While the present disclosure is susceptible to various modifications and alternative forms, specific forms thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that it is not intended to limit the disclosure to the specific embodiments described. On the contrary, it is intended to cover all modifications, equivalents, and alternatives falling within the scope of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0024] Aspects of the present invention are directed to application migration, and more particularly, to application migration using cost-aware code dependency graphs. Although not limited to such applications, embodiments of the present disclosure may be better understood in light of the above context.
[0025] Aspects of the present disclosure are directed to techniques for automatically shrinking and decomposing an image that includes an application to be migrated to reduce the operational cost of the application to be migrated in a target cloud platform. Aspects of the present disclosure realize a number of features, including, but not limited to, (i) immediate application decomposition after deployment based on workload execution traces and / or source code analysis; (ii) generation of a cost-aware code dependency graph based on execution traces and / or source code analysis, customizable objective functions, and / or collected performance metrics; (iii) removal (e.g., pruning) of unused nodes in the cost-aware code dependency graph; (iv) replacement of source code corresponding to costly subgraphs in the cost-aware code dependency graph with generated microservices, where the generated microservices can be implemented by virtual machines on the target cloud platform that are different from the application to be migrated; and / or (v) use of the generated microservices for other subgraphs in the cost-aware code dependency graph that are similar to the costly subgraph for which the generated microservices were originally created. These features, collectively, enable automated application remediation, where the remediated application achieves reduced resource utilization (e.g., reduced memory and processor utilization) and / or reduced maintenance costs for applications migrated to the target cloud platform.
[0026] 1, an exemplary computing environment 100 for application migration is shown, according to some embodiments of the present disclosure. The computing environment 100 can include a migration engineer manager device 104, a source cloud infrastructure 106, and a target cloud infrastructure 108 communicatively coupled to each other by a network 102. The engineer manager device 104 can be a laptop, tablet, desktop, server, or another configuration of hardware or software, or both, capable of managing the migration of an application 110 to be migrated from the source cloud infrastructure 106 to the target cloud infrastructure 108 (e.g., according to user input from a migration engineer).
[0027] The source cloud infrastructure 106 includes a current hosting computing platform of the application 110 to be migrated. Similarly, the target cloud infrastructure 108 includes a future hosting computing platform of the application 110 to be migrated. Both the source cloud infrastructure 106 and the target cloud infrastructure 108 include components suitable for electronic data processing, such as, but not limited to, memory resources, processing resources, network connection resources, other resources, or virtual machines (VMs) provisioned from any of the above-mentioned resources, or both, and the types, quantities, and configurations of the components or VMs or both may differ. Furthermore, the source cloud infrastructure 106 and the target cloud infrastructure 108 may utilize different operating systems, different network connection protocols, or different program configurations, or combinations thereof. For example, the source cloud infrastructure 106 may be on-premise hardware, a private cloud, a hybrid cloud, or a public cloud. Similarly, the target cloud infrastructure 108 may be a private cloud, a hybrid cloud, or a public cloud. When both the source cloud infrastructure 106 and the target cloud infrastructure 108 are similar types of cloud infrastructures (e.g., each is a hybrid cloud configuration), the source cloud infrastructure 106 may be provided by a first vendor, while the target cloud infrastructure 108 may be provided by a second vendor. In such a situation, the first and second vendors may introduce different schemes, protocols, and configurations that may facilitate modification of the application 110 to be migrated so that the application 110 functions efficiently and effectively on the target cloud infrastructure 108.
[0028] The application 110 to be migrated can be any application, service, workload, or other computer-implemented process or function. In some embodiments, the application 110 to be migrated can be packaged within a system image (not shown) that includes peripheral software, firmware, operating systems, etc. that support the implementation of the application 110 to be migrated.
[0029] The target cloud infrastructure 108 may include functionality to modify the application 110 to be migrated for efficient and effective deployment on the target cloud infrastructure 108. For example, the target cloud infrastructure 108 may include a cloud resource selection handler 112, an application structure analyzer 114, an application decomposition handler 116, and a workload analyzer 118. The cloud resource selection handler 112 may be configured to select and evaluate a set of candidate cloud resources available on the target cloud infrastructure 108 for use with the application 110 to be migrated. The cloud resources may include memory resources, processing resources, network connectivity resources, etc. In some embodiments, the cloud resources may be packaged as predefined or customized VMs with separate configurations of memory resources, processing resources, network connectivity resources, or other resources, or combinations thereof, that may be adapted collectively for efficient implementation of a particular type of workload or microservice.
[0030] The application structure analyzer 114 can be configured to perform source code analysis and system calls of the application 110 to be migrated for the purpose of developing a cost-aware code dependency graph 120 for the application 110 to be migrated. For example, the application structure analyzer 114 can implement tracing, log analysis, or other functionality to understand program execution. Additionally, the application structure analyzer 114 can analyze the source code itself to identify the structure, dependencies, components, functions, or other features of the source code, or a combination thereof. In some embodiments, the cost-aware code dependency graph 120 is formatted similarly to a call graph, call multigraph, control flow graph, or another graphical representation of the calling relationships, subroutines, functions, or execution characteristics, or a combination thereof, of the application 110 to be migrated. The cost-aware code dependency graph 120 can further include information regarding the usage (e.g., used nodes vs. unused nodes) of different components (e.g., nodes) of the application 110 to be migrated. Additionally, the cost-aware code dependency graph 120 can include information regarding the resource costs of different components (e.g., nodes) of the application 110 to be migrated.
[0031] The application decomposition handler 116 can be configured to decompose the application 110 to be migrated for the purpose of modifying the application 110 to be migrated for improved implementation on the target cloud infrastructure 108. For example, the application decomposition handler 116 can be configured to remove (e.g., prune) source code corresponding to unused nodes according to the cost-aware code dependency graph 120. As another example, the application decomposition handler 116 can be configured to replace source code corresponding to a costly subgraph of the cost-aware code dependency graph 120 with a generated microservice (not shown). Furthermore, in some embodiments, the application decomposition handler 116 can reuse the generated microservice to replace another subgraph of the cost-aware code dependency graph 120 that exhibits a similarity above a threshold to the original costly subgraph from which the generated microservice was originally created.
[0032] The workload analyzer 118 can be configured to evaluate the performance of components of the application 110 to be migrated to identify candidates for decomposition, or evaluate the performance once modifications are made (e.g., pruning unused nodes, replacing expensive subgraphs with generated microservices, etc.), or both. In some embodiments, the workload analyzer 118 can provide feedback to the cloud resource selection handler 112 to modify cloud resources provided as VMs to aspects of the application 110 to be migrated to improve the performance or efficiency, or both, of the application 110 to be migrated.
[0033] Although the cloud resource selection handler 112, the application structure analyzer 114, the application decomposition handler 116, the workload analyzer 118, and the cost-aware code dependency graph 120 are shown on the target cloud infrastructure 108, one or more of these components may be located elsewhere in other embodiments. For example, in some embodiments, the above-mentioned components may be located on the migration engineer manager device 104. Furthermore, in some embodiments, the above-mentioned components are downloaded as software from a remote data processing device (not shown) to either the migration engineer manager device 104 or the target cloud infrastructure 108. Alternatively, the above-mentioned components may not be downloaded at all, but may be housed as a service in a remote data processing system (not shown) capable of provisioning the functionality of the above-mentioned components, such that the application 110 to be migrated may first be provided to the remote data processing system (not shown), which may then provide an updated version of the application 110 to be migrated to the target cloud infrastructure 108, where the updated version of the application 110 to be migrated, when deployed on the target cloud infrastructure 108, achieves improved resource utilization compared to the original application 110 to be migrated.
[0034] 2, a flowchart of an example method 200 for application migration using a cost-aware code dependency graph is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the method 200 may be implemented by, for example, the target cloud infrastructure 108, the migration engineer manager device 104, a remote data processing system, a computer, a processor, or another configuration of hardware or software or both.
[0035] Operation 202 includes migrating an application (e.g., application to be migrated 110 of FIG. 1 ) to a target cloud infrastructure (e.g., target cloud infrastructure 108 of FIG. 1 ). In some embodiments, operation 202 includes deploying the application on the target cloud infrastructure. In some embodiments, the application is migrated to the target cloud infrastructure as part of a system image.
[0036] Operation 204 includes generating a cost-aware code dependency graph (e.g., cost-aware code dependency graph 120 of FIG. 1 ) during execution of the application on the target cloud infrastructure. In some embodiments, the cost-aware code dependency graph is generated using a trace function on the application during execution of the application or a source code analysis thereof, or both. In some embodiments, generating the cost-aware code dependency graph includes determining a cost associated with each node in the cost-aware code dependency graph, the cost being representative of an amount of resources utilized during node execution. The resources utilized during node execution may include one or more selected from the group consisting of memory utilized during node execution, processor (CPU) usage during node execution, input / output (I / O) operations implemented during node execution, frequency of node utilization over a predefined time period, or duration of node execution, or a combination thereof.
[0037] Operations 206 and 208 relate to modifying the application to achieve improved performance of the application on the target cloud infrastructure. Operation 206 includes removing unused source code that corresponds to unused nodes in the cost-aware code dependency graph. In some embodiments, a node in the cost-aware code dependency graph is identified as unused if it has not been executed for a predetermined amount of time (e.g., 5 minutes, 15 minutes, 1 hour, 1 day, etc.).
[0038] Operation 208 includes replacing the identified source code of the costly subgraph of the cost-aware code dependency graph with a call to the generated microservice. In some embodiments, the generated microservice can be created according to the nodes in the costly subgraph, the interrelationships between the nodes in the costly subgraph, and the source code corresponding to the costly subgraph. In some embodiments, the generated microservice can be configured to run on a different VM from the one or more VMs that run the application. In some embodiments, the different VM can include virtualized resources that are beneficial to the resource requirements of the generated microservice (e.g., increased processing resources for a computationally intensive microservice, etc.).
[0039] Operation 210 includes implementing the modified application on one or more VMs of the target cloud infrastructure. The modified application may exhibit improved performance compared to the application originally migrated as a result of the unused source code removed (corresponding to the unused nodes) or the identified source code replaced with the generated microservices (corresponding to the high-cost subgraphs), or both.
[0040] 3, a flowchart of an example method 300 of reusing generated microservices for similar subgraphs of a cost-aware code dependency graph is shown, according to some embodiments of the present disclosure. In some embodiments, the method 300 can be implemented by, for example, the target cloud infrastructure 108, the migration engineer manager device 104, a remote data processing system, a computer, a processor, or another configuration of hardware or software or both. In some embodiments, the method 300 is a sub-method of operation 208 of FIG. 2.
[0041] Operation 302 includes converting node costs in the cost-aware code dependency graph to edge costs. In some embodiments, the node costs can be converted to edge costs by applying a respective node cost to each edge leading to a respective node.
[0042] Act 304 includes computing cost paths between nodes in the cost-aware code dependency graph. In some embodiments, act 304 utilizes the edge costs of act 302 to compute the cost paths. In some embodiments, act 304 utilizes the Dijkstra algorithm, which uses a Fibonacci heap as a priority queue, to compute the cost paths. Advantageously, the Fibonacci heap has asymptotically amortized constant time complexity, reducing the time complexity of Dijkstra's shortest path algorithm to O(|V| 2 ) to (which scales linearly in sublinear time in the number of edges and number of vertices)
number
number
number
[0043] Operation 306 includes creating a generated microservice based on a highest-cost subgraph of the cost-aware code dependency graph. Operation 308 includes replacing a first source code associated with the highest-cost subgraph with a call to the generated microservice.
[0044] Operation 310 includes identifying a second subgraph in the cost-aware code dependency graph that has a similarity to the highest-cost subgraph that exceeds a threshold. In some embodiments, the graph similarity is determined based on an approximate graph isomorphism algorithm, such as an approximate random walk based algorithm, or a graph neural network.
[0045] Operation 312 includes replacing the second source code associated with the second subgraph with calls to the generated microservices. In other words, method 300 enables similar components (e.g., subgraphs) of an application to reuse previously generated microservices. Reusing previously generated microservices improves efficiency by (i) avoiding the recreation of similar microservices; and (ii) utilizing microservices configured to run on specialized VMs for more than one component of the application.
[0046] 4, a flowchart of another example method 400 for application migration using a cost-aware code dependency graph is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the method 400 may be implemented by, for example, the target cloud infrastructure 108, the migration engineer manager device 104, a remote data processing system, a computer, a processor, or another configuration of hardware or software or both.
[0047] Operation 402 includes defining a migration environment. Operation 402 may include, for example, defining an image for analysis. The image may include the application to be migrated and any underlying software infrastructure required to run it. The image may be used to start virtualization components such as containers and virtual machines. Operation 402 may further include defining metrics and / or parameters to be considered in the analysis. Example metrics may include frequency of usage of each component of the image, data input / output (I / O) patterns, resource utilization, time spent on each component, etc. In some embodiments, the defined metrics and / or parameters may be converted into an objective function that may be reduced (e.g., minimized) below a threshold, increased (e.g., maximized) above a threshold, or otherwise optimized.
[0048] Operation 404 includes deploying the defined image. Operation 404 may include deploying the defined image in operation 402 on a cloud environment configured using the metrics and / or parameters defined in operation 402. Operation 406 includes running the application to be migrated for purposes of analyzing the application to be migrated.
[0049] Act 408 includes scanning the executed components of the application to be migrated. In some embodiments, act 408 may utilize tracing, source code analysis, or system calls, or a combination thereof, to scan the executed components of the application to be migrated, or any other components used by the application upon launch, or a combination thereof.
[0050] Act 410 includes characterizing the components identified in act 408. Act 410 may include generating a list of libraries and / or packages used by each identified component.
[0051] Act 412 includes analyzing and pruning components. Act 412 can identify elements to be reorganized and / or pruned based on the evaluation from act 410. Act 412 is discussed in more detail below with respect to FIG.
[0052] Act 414 includes evaluating feedback. Act 414 may, for example, collect feedback from data input by a migration engineer into a migration engineer device. The feedback may be evaluated to refine the decomposition, reorganization, or pruning strategy, or a combination thereof, utilized in act 412.
[0053] Act 416 includes constructing a new image, which may decompose, reorganize, or prune, or any combination thereof, the elements of the application to be migrated as analyzed in act 412 and refined in act 414.
[0054] Operation 418 determines whether the process should be repeated. If so (418: yes), the system returns to operation 404 and restarts the process by redeploying a new image to troubleshoot, improve, and / or refine the modified to-be-migrated application. If not (418: no), method 400 ends.
[0055] 5, a flow chart of an example method 500 for analyzing and pruning an application to be migrated is shown, according to some embodiments of the present disclosure. In some embodiments, the method 500 may be implemented by, for example, the target cloud infrastructure 108, the migration engineer manager device 104, a remote data processing system, a computer, a processor, or another configuration of hardware or software or both. In some embodiments, the method 500 is a sub-method of operation 412 of FIG. 4.
[0056] Operation 502 includes pruning unused nodes. Pruning unused nodes can involve removing unused portions of the source code. For example, operation 502 can take into account portions of the source code that have not been accessed during a user-defined period of time. An example of operation 502 is discussed below with respect to FIG. 6A.
[0057] Operation 504 includes calculating a cost metric for each node. The cost metric may be based on, for example, resource utilization (e.g., memory utilization, processing utilization, etc.), data input / output (I / O) patterns, frequency of utilization, or other cost metrics, or combinations thereof. An example of operation 504 is discussed below with respect to FIG. 6B.
[0058] Act 506 includes identifying costly paths in a call graph (e.g., a cost-aware code dependency graph) associated with the application to be migrated based on the cost metric calculated in act 504. In some embodiments, act 506 calculates cost paths between all nodes in the graph. Doing this can be done when using the Dijkstra algorithm with a Fibonacci heap as a priority queue:
number
[0059] Operation 508 includes using the subgraphs to build a list of potential microservices to be created. Operation 510 includes selecting the subgraph with the highest cost to convert into a microservice.
[0060] Operation 512 includes determining whether the selected subgraph is similar to another subgraph. The similarity determination may utilize an approximate graph isomorphism algorithm. If the selected subgraph is similar to another subgraph (512: yes), method 500 may proceed to operation 514, where the similar subgraph may be removed from a list of potential microservices to be created. In some embodiments, operation 514 may further cause the similar subgraph to use previously created microservices associated with the other subgraph. Method 500 may then return to operation 510. If the selected subgraph is not similar to another subgraph (512: no), method 500 may proceed to operation 516, where code may be generated to separate the subgraph from the original application (e.g., by creating a microservice). A variety of methodologies may be employed to generate the code associated with the subgraph. For example, automated creation of remaining application programming interfaces (APIs) may be used to emulate the interfaces of the original application and the newly created microservices.
[0061] Operation 518 includes determining whether the list of subgraphs in the cost-aware code dependency graph is empty or a threshold of generated microservices has been reached. If operation 518 is not satisfied (518: no), method 500 may return to operation 508 to select a new subgraph for the list of potential microservices. If operation 518 is satisfied (518: yes), method 500 may end.
[0062] 6A illustrates an example cost-aware code dependency graph 600 of an application to be migrated having used nodes 602 (shaded) and unused nodes 604 (unshaded), according to some embodiments of the present disclosure. An unused segment 606 of the cost-aware code dependency graph 600 exclusively includes unused nodes 604. Accordingly, aspects of the present disclosure are directed to pruning unused segments 606 that include all unused nodes 604 therein (e.g., by removing code from the source code that corresponds to unused nodes 604 in unused segment 606).
[0063] FIG. 6B illustrates an example cost-aware code dependency graph 610 in which each node is weighted by a node cost 612. As can be seen, the cost-aware code dependency graph 610 is similar to the cost-aware code dependency graph 600 of FIG. 6A, except that the cost-aware code dependency graph 610 of FIG. 6B removes unused segments 606 of unused nodes 604. Referring back to FIG. 6B, the node costs 612 may represent lower cost nodes as lighter shades and higher cost nodes as darker shades. The node costs 612 may represent memory resources, processing resources, network connection resources, I / O resources, or other resources consumed in implementing each respective node, or a combination thereof. As can be seen, different nodes in the cost-aware code dependency graph 610 are associated with different node costs 612.
[0064] 7 illustrates a diagram of different subgraphs in the cost-aware code dependency graph 610 of FIG. 6B. For example, aspects of the present disclosure can identify subgraph 702, subgraph 704, and subgraph 706, among other subgraphs. Additionally, aspects of the present disclosure can be configured to determine that subgraph 704 is similar to subgraph 706 (e.g., using an approximate graph isomorphism algorithm). In identifying two or more similar subgraphs, aspects of the present disclosure can generate a single microservice that can be utilized for each of the similar subgraphs.
[0065] FIG. 8 illustrates a block diagram of an example computer 800 according to some embodiments of the present disclosure. In various embodiments, the computer 800 can perform any or all of the methods described in FIGS. 2-5 or implement the functions discussed in one or more of FIGS. 1 and 6A-7, or both. In some embodiments, the computer 800 receives instructions related to the above-mentioned methods and functions by downloading processor-executable instructions from a remote data processing system over the network 850. In other embodiments, the computer 800 provides instructions for the above-mentioned methods and / or functions to a client machine, such that the client machine executes the method, or a portion of the method, based on the instructions provided by the computer 800. In some embodiments, the computer 800 is incorporated into (or functionality similar to the computer 800 is virtually provisioned on) one or more entities of the computing environment 100 (e.g., the migration engineer manager device 104, the source cloud infrastructure 106, or the target cloud infrastructure 108, or a combination thereof), or other aspects of the present disclosure, or a combination thereof.
[0066] The computer 800 includes memory 825, storage 830, an interconnect 820 (e.g., a bus), one or more CPUs 805 (also referred to herein as processors), an I / O device interface 810, I / O devices 812, and a network interface 815.
[0067] Each CPU 805 retrieves and executes programming instructions stored in memory 825 or storage 830. Interconnect 820 is used to move data, such as programming instructions, between CPU 805, I / O device interface 810, storage 830, network interface 815, and memory 825. Interconnect 820 may be implemented using one or more buses. CPU 805 may be a single CPU, multiple CPUs, or a single CPU with multiple processing cores, in various embodiments. In some embodiments, CPU 805 may be a digital signal processor (DSP). In some embodiments, CPU 805 includes one or more 3D integrated circuits (3DICs) (e.g., 3D wafer level package (3DWLP), 3D interposer based integration, 3D stacked IC (3D-SIC), monolithic 3D IC, 3D heterogeneous integration, 3D system in package (3DSiP), or package on package (PoP), or combinations thereof, of CPU configurations). Memory 825 is included generally to represent random access memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), or flash). Storage 830 is included generally to represent non-volatile memory, such as a hard disk drive, solid state device (SSD), removable memory card, optical storage, or flash memory device. In alternative embodiments, storage 830 can be replaced by a storage area network (SAN) device, cloud, or other device connected to computer 800 via I / O device interface 810 or to network 850 via network interface 815.
[0068] In some embodiments, memory 825 stores instructions 860. However, in various embodiments, instructions 860 are stored partially in memory 825 and partially in storage 830, or they are stored entirely in memory 825 or entirely in storage 830, or they are accessed over network 850 via network interface 815.
[0069] The instructions 860 may be computer readable and computer executable instructions that perform any portion or all of the methods of Figures 2-5 or implement the functions discussed in any portion of Figures 1 and 6A-7, or both. Although the instructions 860 are shown in memory 825, the instructions 860 may include program instructions stored centrally across a number of computer readable storage media and executable by one or more CPUs 805.
[0070] In various embodiments, I / O device(s) 812 include an interface capable of presenting information and receiving input. For example, I / O device(s) 812 can present information to and receive input from a user interacting with computer 800.
[0071] The computer 800 is connected to a network 850 via a network interface 815. The network 850 may include physical, wireless, cellular, or different networks.
[0072] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to a cloud computing environment. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or later developed.
[0073] Cloud computing is a model of service delivery to enable convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0074] The characteristics are as follows:
[0075] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.
[0076] Broad network access: The capabilities are available across the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, cell phones, laptops, and PDAs).
[0077] Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. There is location independence in that consumers generally have no control or knowledge over the exact location of the provided resources, but it may be possible to specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0078] Rapid Elasticity: This capacity can be rapidly and elastically provisioned, in some cases automatically, to rapidly scale out, and rapidly released to rapidly scale in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased in any amount at any point in time.
[0079] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services utilized.
[0080] The service model is as follows:
[0081] Software as a Service (SaaS): The ability offered to the consumer is to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0082] Platform as a Service (PaaS): The ability offered to a consumer is to deploy applications that the consumer has created or acquired, written using programming languages and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and, in some cases, the application hosting environment configuration.
[0083] Infrastructure as a Service (IaaS): The ability offered to consumers is to provision processing, storage, network and other basic computing resources onto which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does control the operating systems, storage, deployed applications, and possibly limited control over selected network-facing components (e.g., host firewalls).
[0084] The deployment model is as follows:
[0085] Private Cloud: This cloud infrastructure operates solely for an organization. It may be managed by that organization or a third party and may exist on-premise or off-premise.
[0086] Community Cloud: This cloud infrastructure is shared by several organizations and supports a particular community with shared concerns (e.g., mission, security requirements, policy and compliance considerations). It may be managed by those organizations or a third party and may exist on-premise or off-premise.
[0087] Public Cloud: The cloud infrastructure is made available to the general public or large industry entities and is owned by organizations that sell cloud services.
[0088] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain their own entities but are bound together by standard or proprietary technologies that allow portability of data and applications (e.g., cloud bursting for load balancing between clouds).
[0089] Cloud computing environments are service-oriented with a focus on statelessness, low coupling, modularity and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0090] 9, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 comprises one or more cloud computing nodes 10 with which local computing devices used by cloud consumers may communicate, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or a combination thereof. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or a combination thereof, as described herein above. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or a combination thereof, as a service for which the cloud consumer does not need to maintain resources on a local computing device. It will be understood that the types of computing devices 54A-54N shown in FIG. 9 are intended to be illustrative only, and that the computing node 10 and cloud computing environment 50 can communicate with any type of computerized device via any type of network, or network-addressable connection, or both (e.g., using a web browser).
[0091] Referring now to Figure 10, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 9) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 10 are intended to be merely illustrative, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0092] Hardware and software layer 60 comprises hardware and software components. Examples of hardware components include: mainframe 61; RISC (reduced instruction set computer) architecture based servers 62; servers 63; blade servers 64; storage devices 65; and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0093] The virtualization layer 70 provides an abstraction layer over which the following examples of virtual entities can be provided: virtual servers 71; virtual storage 72; virtual networks, including virtual private networks 73; virtual applications and operating systems 74; and virtual clients 75.
[0094] In one example, management layer 80 may provide the functionality described below. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangement and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0095] Workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom instructional delivery 93; data analytics processing 94; transaction processing 95; and application migration management 96.
[0096] The embodiments of the invention may be a system, a method, or a computer program product, or a combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions that cause a processor to perform aspects of the invention.
[0097] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves that record instructions, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as electric waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.
[0098] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to the respective computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network can include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to a computer-readable storage medium in the respective computing / processing device for storage.
[0099] The computer readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk, C++, etc., and procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.
[0100] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0101] These computer readable program instructions can be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, whereby the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts or block diagrams, or both. These computer readable program instructions can also be stored on a computer readable storage medium, whereby the instructions can instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, whereby the computer readable storage medium having stored thereon the instructions includes an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts or block diagrams, or both.
[0102] Also, computer readable program instructions can be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both.
[0103] 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 subset of instructions that includes one or more executable instructions that implement the specified logical function. In some alternative implementations, the functions described in the blocks may occur in a different order than that described in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, as well as combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that executes the specified functions or operations or executes a combination of dedicated hardware and computer instructions.
[0104] While it will be appreciated that the process software (e.g., any of the instructions stored in instructions 860 of FIG. 8 and / or any software configured to execute any portion of the method described with respect to FIGS. 2-5 and / or implement any portion of the functionality discussed in FIGS. 1 and 6A-7) can be deployed by manually loading it directly onto the client, server, and proxy computers via loading a storage medium such as a CD, DVD, etc., the process software can also be automatically or semi-automatically deployed to computer systems by sending the process software to a central server or group of central servers. The process software is then downloaded to the client computers that will execute the process software. Alternatively, the process software is sent directly to the client systems via email. The process software is then either detached or loaded into the directory by executing a set of program instructions that detach the process software to the directory. Another alternative is to send the process software directly to a directory on the client computer hard drive. If a proxy server is present, the process selects the proxy server code, determines on which computer the proxy server code is located, transmits the proxy server code, and then installs the proxy server code on the proxy computer. The process software is transmitted to the proxy server and then stored on the proxy server.
[0105] Embodiments of the invention can also be delivered as part of a service engagement to a client company, a non-profit organization, a government agency, an internal organizational structure, etc. These embodiments can include configuring a computer system to perform some or all of the methods described herein, and deploying software, hardware, and web services that implement some or all of the methods. These embodiments can also include analyzing client behavior, making recommendations in response to the analysis, building a system that implements a subset of the recommendations, integrating the system into existing processes and infrastructure, metering usage of the system, allocating costs to and charging users of the system, invoicing (e.g., generating invoices), or otherwise receiving payment for use of the system.
[0106] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of various embodiments. As used herein, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly dictates otherwise. It will be further understood that as used herein, the terms "includes" and / or "including" specify the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups or combinations thereof. In the foregoing detailed description of exemplary embodiments of the various embodiments, reference has been made to the accompanying drawings, which form a part hereof, in which like numerals represent like elements, and in which are shown by way of illustration specific exemplary embodiments in which the various embodiments may be practiced. These embodiments have been described in sufficient detail to enable those skilled in the art to practice the embodiments, but other embodiments may be used and logical, mechanical, electrical, and other changes may be made without departing from the scope of the various embodiments. In the foregoing description, numerous specific details have been set forth to provide a thorough understanding of the various embodiments. However, the various embodiments may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the embodiments.
[0107] As used herein, different instances of the word "embodiment" do not necessarily refer to the same embodiment, but they may also refer to the same embodiment. Any data and data structures shown or described herein are examples only, and other embodiments may use different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organization of data. Additionally, any data may be combined with logic such that a separate data structure may not be necessary. Thus, the foregoing detailed description should not be construed in a limiting sense.
[0108] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used in this specification has been selected to best explain the principles of the embodiments, practical applications, or technical improvements to the technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0109] While the present disclosure has been described with respect to specific embodiments, it is anticipated that variations and modifications thereof will become apparent to those skilled in the art, and it is therefore intended that the following claims be interpreted as covering all such variations and modifications as fall within the true scope of the present disclosure.
[0110] Any advantages discussed in this disclosure are example advantages, and there may be embodiments of the disclosure that achieve all, some, or none of any of the discussed advantages while remaining within the scope of the disclosure.
Claims
1. A computer-implemented method comprising: migrating the application to a target cloud infrastructure; generating a cost-aware code dependency graph during execution of the application on the target cloud infrastructure; The computer executes the application: removing unused source code corresponding to unused nodes according to the cost-aware code dependency graph; and replacing identified source code in a costly subgraph of the cost-aware code dependency graph with calls to generated microservices configured to provide functionality similar to the identified source code; and Implementing the modified application on one or more virtual machines of the target cloud infrastructure by the computer. A method comprising:
2. The method of claim 1 , wherein the cost-aware code dependency graph is generated using a tracing facility on the application during the execution and source code analysis of the application.
3. 3. The method of claim 1 or claim 2, wherein the generated microservices associated with the modified application run on different virtual machines of the target cloud infrastructure to the one or more virtual machines that implement the modified application.
4. 4. The method of claim 3, wherein the different virtual machines are associated with a distinct set of resources adapted for the generated microservice relative to resources of the one or more virtual machines implementing the modified application.
5. The method of claim 1 , wherein the unused nodes are nodes that have not been used for a predefined amount of execution time.
6. A method according to any one of claims 1 to 5, wherein the step of the computer replacing the identified source code in a high-cost subgraph of the cost-aware code dependency graph further comprises the computer determining a cost associated with each node in the cost-aware code dependency graph, the cost representing an amount of resources utilized during execution of a node.
7. 7. The method of claim 6, wherein the resources include one or more selected from the group consisting of: memory utilized during execution of the node, processor (CPU) usage during execution of the node, input / output (I / O) operations implemented during execution of the node, frequency of node utilization over a predefined period of time, and duration of execution of the node.
8. A method according to any one of claims 1 to 7, wherein the step of the computer replacing the identified source code in a high-cost subgraph of the cost-aware code dependency graph further comprises the step of the computer converting node costs in the cost-aware code dependency graph to edge costs by assigning a respective cost of each node to each edge pointing to the respective node.
9. The method of claim 8, wherein the step of the computer replacing the identified source code in a high-cost subgraph of the cost-aware code dependency graph further comprises the step of the computer calculating cost paths between nodes in the cost-aware code dependency graph using a shortest path graph algorithm.
10. The step of the computer replacing the identified source code of a costly subgraph of the cost-aware code dependency graph with calls to the generated microservices comprises: The computer creating the generated microservices based on a highest cost subgraph; The computer replaces a first source code associated with the highest cost subgraph with the generated microservice; the computer identifying a second subgraph having a similarity to the highest cost subgraph that exceeds a threshold; and The computer replaces a second source code associated with the second subgraph with the generated microservice. The method of claim 1 , further comprising:
11. The method of claim 10, wherein the step of the computer identifying the second subgraph having the similarity that exceeds the threshold is based on an approximate graph isomorphism algorithm.
12. The method according to claim 1 , wherein the method is performed by one or more computers in accordance with software downloaded to the one or more computers from a remote data processing system.
13. A step in which the computer measures the usage of the software; and generating an invoice based on said metering of usage. The method of claim 12 further comprising:
14. one or more processors; and When executed by the one or more processors, the one or more processors Migrating the application to the target cloud infrastructure; generating a cost-aware code dependency graph during execution of the application on the target cloud infrastructure; Said application: removing source code corresponding to unused nodes according to the cost-aware code dependency graph; replacing identified source code in a costly subgraph of the cost-aware code dependency graph with calls to generated microservices configured to provide functionality similar to the identified source code; and Implementing the modified application on one or more virtual machines of the target cloud infrastructure. One or more computer-readable storage media storing program instructions configured to cause execution of a method comprising: A system comprising:
15. The system of claim 14 , wherein the cost-aware code dependency graph is generated using a tracing facility on the application during the execution and source code analysis of the application.
16. 16. The system of claim 14 or 15, wherein the generated microservices associated with the modified application run on a different virtual machine of the target cloud infrastructure relative to the one or more virtual machines implementing the modified application, the different virtual machine being associated with a distinct set of resources adapted for the generated microservices relative to the resources of the one or more virtual machines implementing the modified application.
17. Replacing the identified source code in a costly sub-graph of the cost-aware code dependency graph comprises: converting node costs in the cost-aware code dependency graph to edge costs by assigning a respective cost of each node to each edge pointing to said each node; and calculating cost paths between nodes in the cost-aware code dependency graph using a shortest path graph algorithm; The system according to any one of claims 14 to 16, further comprising:
18. Replacing the identified source code of a costly sub-graph of the cost-aware code dependency graph with calls to the generated microservices, creating the generated microservice based on a highest cost subgraph; replacing a first source code associated with the highest cost subgraph with the generated microservice; identifying a second subgraph having a similarity to the highest cost subgraph that exceeds a threshold based on an approximate graph isomorphism algorithm; and Replacing a second source code associated with the second subgraph with the generated microservice. The system according to any one of claims 14 to 17, further comprising:
19. A computer program comprising program instructions, said program instructions including instructions arranged to cause one or more processors to carry out a method according to any one of claims 1 to 13.
Citation Information
Patent Citations
Containerized deployment of microservices based on monolithic legacy applications
JP2020518073A
System and method of cost oriented software profiling
US20120060142A1
Decoupling microservices from a monolithic application
US20200285451A1