本发明一般涉及应用迁移,并且更具体地,涉及使用成本感知代码依赖图的应用迁移。
背景技术:
1、应用迁移是将软件应用从一个计算环境迁移到另一个计算环境的过程。例如,应用程序可在数据中心之间移动,从场所内服务器移动到云供应商的环境,从公共云移动到私有云等。
2、因为应用通常被构建为在特定网络架构中的特定操作系统上运行或者被开发用于单个云平台,所以迁移应用可能造成许多挑战。这些挑战可以包括确保应用的依赖性和技术要求被维持,同时满足企业的安全性、顺应性和成本约束。
3、应用到云平台(或云平台之间)的高效和有效迁移对于应用程序所有者和云提供商两者是优先的。迁移过程包括识别可被迁移的应用部分、识别必须被适配以便被迁移的应用程序部分、以及应用的适配。此外,还必须选择云资源的适当集以高效地托管已迁移的应用。
4、当前,开发者可以手动地更新应用,使得其可以被成功地迁移到目标云环境并且由目标云环境实施。在更新应用之后,开发者可以手动测试应用。这些当前技术使得应用迁移过程易于出错、劳动密集且耗时。
技术实现思路
1、本发明的一个方面针对一种计算机实现的方法,包括将应用迁移到目标云基础设施。所述方法进一步包括在目标云基础设施上执行应用期间生成感知成本代码依赖图。所述方法进一步包括通过根据成本感知代码依赖图移除与未使用节点相对应的源代码并且用对被配置为提供与所识别的源代码的相似的功能的所生成的微服务的调用来替换所述成本感知代码依赖图的高成本子图的所识别的源代码,修改应用。
2、所述方法还包括在目标云基础设施的一个或多个虚拟机上实施经修改的应用。
3、有利地,上述方法实现自动化的即时应用分解,使得所迁移的应用一旦被部署在目标云基础设施上就可以被重新配置。此外,上述方法通过移除与未使用节点相对应的源代码并用对所生成的微服务的调用来替换高成本子图的所识别的源代码,来实现应用的自动化修改,以便实现在目标云基础设施上的应用的改进的性能。移除未使用源代码可使应用更有效且更不易出错。用所生成的微服务替换高成本子图可以实现改进的性能,一旦所生成的微服务可以在适于高效地实施所生成的微服务的目标云基础设施的另一虚拟机上被单独地实施。
4、上述方法的另外的(一个或多个)实施例进一步包括通过将相应节点的相应成本分配给指向所述相应节点的每个边,将所述成本感知代码依赖图中的节点成本转换成边成本。有利地,将节点成本转换成边成本有助于改进对被配置为识别子图成本的图搜索算法的使用。
5、上述方法的另外的(一个或多个)实施例进一步包括:基于最高成本子图,创建所述所生成的微服务;用所述所生成的微服务替换与所述最高成本子图相关联的第一源代码;识别与最高成本子图的相似性高于阈值的第二子图;以及用所述所生成的微服务替换与所述第二子图相关联的第二源代码。有利地,将所生成的微服务用于与最高成本子图的相似性高于阈值的第二子图,通过针对应用的多于一个部件重用已经生成的微服务来改善效率。
6、本发明的其它方面涉及被配置为执行上述方法的系统和计算机程序产品。本
技术实现要素:
不旨在示出本公开的每个实施例的每个方面、每个实施方式和/或每个实施例。
1.一种计算机实现的方法,包括:
2.根据权利要求1所述的方法,其中,在所述应用的执行和源代码分析期间,使用在所述应用上的跟踪函数来生成所述成本感知代码依赖图。
3.根据权利要求1或权利要求2所述的方法,其中,在所述目标云基础设施的相对于实现所述经修改的应用的所述一个或多个虚拟机的不同的虚拟机上执行与所述经修改的应用相关联的所述所生成的微服务。
4.根据前述权利要求中任一项所述的方法,其中,所述不同的虚拟机与相对于实现所述经修改的应用的所述一个或多个虚拟机的资源可区分的适用于所述所生成的微服务的资源集相关联。
5.根据前述权利要求中任一项所述的方法,其中,所述未使用节点是在预定义的执行时间量内未被使用的节点。
6.根据前述权利要求中任一项所述的方法,其中,替换所述成本感知代码依赖性图的高成本子图的所述所识别的源代码进一步包括:确定与所述成本感知代码依赖性图中的每个节点相关联的成本,其中,所述成本表示在节点执行期间利用的资源量。
7.根据权利要求6所述的方法,其中,所述资源包括从包括以下各项的组中选择的一项或多项:在所述节点执行期间利用的存储器、在所述节点执行期间的处理器(cpu)使用率,在所述节点执行期间实施的输入/输出(i/o)操作,在预定时间内的节点利用频率,以及所述节点执行的持续时间。
8.根据前述权利要求中任一项所述的方法,其中,替换所述成本感知代码依赖性图的高成本子图的所述所识别的源代码还包括:通过将相应节点的相应成本分配给指向所述相应节点的每条边,将所述成本感知代码依赖性图中的节点成本转换成边成本。
9.根据权利要求8所述的方法,其中,替换所述成本感知代码依赖图的高成本子图的所述所识别的源代码还包括:使用最短路径图算法来计算在所述成本感知代码依赖图中的节点之间的成本路径。
10.根据前述权利要求中任一项所述的方法,其中,用对所述所生成的微服务的调用来替换所述成本感知代码依赖图的高成本子图的所述所识别的源代码还包括:
11.根据权利要求10所述的方法,其中,识别所述相似性高于所述阈值的所述第二子图是基于近似图同构算法。
12.根据前述权利要求中任一项所述的方法,其中,所述方法由一个或多个计算机根据从远程数据处理系统下载到所述一个或多个计算机的软件来执行。
13.根据权利要求12所述的方法,其中,所述方法进一步包括:
14.一种系统,包括:
15.根据权利要求14所述的系统,其中,在所述应用的执行和源代码分析期间,使用在所述应用上的跟踪函数来生成所述成本感知代码依赖关系图。
16.根据权利要求14或权利要求15所述的系统,其中,在所述目标云基础设施上的相对于实现所述经修改的应用的所述一个或多个虚拟机的不同的虚拟机上执行与所述经修改的应用相关联的所述所生成的微服务,并且其中,所述不同的虚拟机与相对于实现所述经修改的应用的所述一个或多个虚拟机的资源可区分的适用于所述所生成的微服务的资源集相关联。
17.根据权利要求14至16中任一项所述的系统,其中,替换所述成本感知代码依赖性图的高成本子图的所述所识别的源代码还包括:
18.根据权利要求14至17中的任一项所述的系统,其中,用对所述所生成的微服务的调用来替换所述成本感知代码依赖性图的高成本子图的所述所识别的源代码还包括:
19.一种计算机程序产品,包括一个或多个计算机可读存储介质以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括被配置为使一个或多个处理器执行根据权利要求1至13中任一项所述的方法的指令。