CN115151897A - 基于运行时跟踪从单体式应用程序生成微服务 - Google Patents
基于运行时跟踪从单体式应用程序生成微服务 Download PDFInfo
- Publication number
- CN115151897A CN115151897A CN202180016299.8A CN202180016299A CN115151897A CN 115151897 A CN115151897 A CN 115151897A CN 202180016299 A CN202180016299 A CN 202180016299A CN 115151897 A CN115151897 A CN 115151897A
- Authority
- CN
- China
- Prior art keywords
- computer
- monolithic
- monolithic application
- processor
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 116
- 238000012360 testing method Methods 0.000 claims abstract description 85
- 230000015654 memory Effects 0.000 claims abstract description 65
- 238000004590 computer program Methods 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 82
- 230000000694 effects Effects 0.000 claims description 34
- 230000003068 static effect Effects 0.000 claims description 32
- 238000003860 storage Methods 0.000 claims description 32
- 230000002123 temporal effect Effects 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 23
- 238000012549 training Methods 0.000 claims description 21
- 230000001364 causal effect Effects 0.000 claims description 16
- 238000007670 refining Methods 0.000 claims description 13
- 238000010801 machine learning Methods 0.000 description 35
- 238000012545 processing Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 30
- 238000004364 calculation method Methods 0.000 description 19
- 238000013459 approach Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000012706 support-vector machine Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 229910052802 copper Inorganic materials 0.000 description 2
- 239000010949 copper Substances 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000005295 random walk Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Medical Informatics (AREA)
- Evolutionary Computation (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Micro-Organisms Or Cultivation Processes Thereof (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
提供了用于促进基于运行时跟踪从单体式应用程序生成微服务的系统、计算机实现的方法和计算机程序产品。根据实施例,系统可以包括存储计算机可执行组件的存储器和执行存储在存储器中的计算机可执行组件的处理器。计算机可执行组件可包括基于执行的测试用例的运行时跟踪来学习单体式应用程序中的类的聚类分配的模型组件。计算机可执行组件还可以包括聚类组件,其采用模型组件来基于聚类分配生成类的聚类以识别单体式应用程序的一个或多个微服务。
Description
背景技术
本发明涉及从单体式应用程序生成微服务,并且更具体地,涉及基于运行时跟踪从单体式应用程序生成微服务。
发明内容
以下给出了概述以提供对本发明的一个或多个实施例的基本理解。本概述不旨在标识关键或重要元素,或描述特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式呈现概念,作为稍后呈现的更详细描述的序言。在本文描述的一个或多个实施例中,描述了促进基于运行时跟踪从单体式应用程序生成微服务的系统、设备、计算机实现的方法和/或计算机程序产品。
根据一个实施例,系统可以包括存储计算机可执行组件的存储器和执行存储在存储器中的计算机可执行组件的处理器。计算机可执行组件可包括基于所执行的测试用例的运行时跟踪来学习单体式应用程序中的类的群集分配的模型组件。计算机可执行组件还可以包括聚类组件,其采用模型组件来基于聚类分配生成类的聚类,以识别单体式应用程序的一个或多个微服务。这种系统的优点在于,它可以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
在一些实施例中,所执行的测试用例包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。这种系统的优点在于,它可以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
根据另一实施例,一种计算机实现的方法可包括由操作地耦合到处理器的系统训练模型以基于所述执行的测试用例的运行时跟踪来学习在单体式应用程序中的类的聚类分配。所述计算机实现的方法还可以包括由所述系统采用所述模型来基于所述聚类分配生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。这种计算机实现的方法的优点在于,其可以被实现以促进类的改进的功能分组(例如,功能聚类),以实现一个或多个微服务的更准确识别和单体式应用程序的改进的应用程序现代化。
在一些实施例中,所执行的测试用例包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。这种计算机实现的方法的优点在于,其可以被实现以促进类的改进的功能分组(例如,功能聚类),以实现一个或多个微服务的更准确识别和单体式应用程序的改进的应用程序现代化。
根据另一实施例,提供了一种计算机程序产品,其促进基于运行时跟踪从单体式应用程序生成微服务的过程。所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有包含其中的程序指令,所述程序指令可由处理器执行以使所述处理器通过所述处理器训练模型以基于执行的测试用例的运行时跟踪来学习在单体式应用程序中的类的聚类分配。所述程序指令还可由所述处理器执行以使所述处理器通过所述处理器使用所述模型来基于所述聚类分配生成类的聚类,以识别所述单体式应用程序的一个或多个微服务。这种计算机程序产品的优点在于,它可以被实现为促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
在一些实施例中,所述执行的测试用例包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。这种计算机程序产品的优点在于,它可以被实现为促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
根据实施例,系统可以包括存储计算机可执行组件的存储器和执行存储在存储器中的计算机可执行组件的处理器。计算机可执行组件可包括收集在单体式应用程序上执行的测试用例的运行时跟踪的收集组件。计算机可执行组件还可以包括模型组件,其基于运行时跟踪来学习单体式应用程序中的类的聚类分配。计算机可执行组件还可以包括聚类组件,其采用模型组件来基于聚类分配生成类的聚类,以识别单体式应用程序的一个或多个微服务。这种系统的优点在于,它可以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
在一些实施例中,测试用例包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。这种系统的优点在于,它可以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
根据另一实施例,一种计算机实现的方法可以包括由操作地耦合到处理器的系统收集在单体式应用程序上执行的测试用例的运行时跟踪。该计算机实现的方法还可以包括由系统训练模型以基于运行时跟踪来学习单体式应用程序中的类的聚类分配。所述计算机实现的方法还可以包括由所述系统采用所述模型来基于所述聚类分配生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。这种计算机实现的方法的优点在于,其可以被实现以促进类的改进的功能分组(例如,功能聚类),以实现一个或多个微服务的更准确识别和单体式应用程序的改进的应用程序现代化。
在一些实施例中,测试用例包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。这种计算机实现的方法的优点在于,其可以被实现以促进类的改进的功能分组(例如,功能聚类),以实现一个或多个微服务的更准确识别和单体式应用程序的改进的应用程序现代化。
附图说明
图1示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性系统的框图。
图2示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性系统的框图。
图3示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法的流程图。
图4示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性模型的示意图。
图5示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法的流程图。
图6示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法的流程图。
图7示出了根据本文所述的一个或多个实施例的可以促进基于运行时踪迹从单体式应用程序生成微服务的示例非限制性计算机实现的方法的流程图。
图8示出了其中可便于此处所描述的一个或多个实施例的示例、非限制性操作环境的框图。
图9示出了根据本发明的一个或多个实施例的示例性、非限制性云计算环境的框图。
图10示出了根据本发明的一个或多个实施例的示例、非限制性抽象模型层的框图。
具体实施方式
以下详细描述仅是说明性的,并且不旨在限制实施例和/或实施例的应用或使用。此外,并不意图受前面的背景技术或发明内容部分或具体实施方式部分中呈现的任何明示或暗示的信息的约束。
现在参考附图描述一个或多个实施例,其中相同的附图标记始终用于表示相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对一个或多个实施例的更透彻理解。然而,在各种情况下,显然可在没有这些特定细节的情况下实践所述一个或一个以上实施例。
应用程序现代化是将单体式应用程序(也称为单体式应用程序)重构为独立微服务的过程。传统的单体企业应用程序被设计成具有复杂且相互缠绕的表示、业务过程和数据模型。它们难以维护和更换。微服务是封装一小组功能的松散耦合的独立应用程序,并且通过公开描述的接口与其它应用交互。因此,它们更容易被更新、缩放、维护和部署到云计算环境。
一些现有的应用程序现代化技术应用基于静态代码分析的方法来从单体式应用程序生成微服务。这种基于静态代码分析的方法分析提供调用关系的综合视图的源。这种基于静态代码分析的方法的问题在于,它不能捕获在特定工作负载和输入下的调用关系和交互频率。
一些现有的应用程序现代化技术应用基于元数据的方法来从单体式应用程序生成微服务。这种基于元数据的方法依赖于设计文档,例如数据流图、软件制品、代码库改变历史和/或另一设计文档。这种基于元数据的方法的问题在于,以上定义的设计文档不总是可用和可访问的。
一些现有的应用程序现代化技术应用基于动态微服务组成的方法来从单体式应用程序生成微服务。这种基于动态微服务组成的方法利用了运行数据,并在运行时产生动态自适应微服务模型。这种基于动态微服务组成的方法的问题在于难以收集操作数据。
一些现有的应用程序现代化技术应用基于工作负载数据的方法来从单体式应用程序生成微服务。这种基于工作负载数据的方法使用操作数据(例如日志文件)并在数据收集之后产生固定的微服务模型。这种基于工作负载数据的方法的问题在于难以收集操作数据。
一些现有的应用程序现代化技术应用了一种利用运行时跟踪通过实现以下步骤来学习类分组的方法:1)将所有类分配给不同的聚类;2)计算每对聚类的Jaccard相似系数,其中合并具有最大Jaccard相似度的聚类;以及3)根据一些优化目标(例如,最大化内部连接性和最小化内部连接性),应用遗传算法来改进结果。这种方法的问题在于,它没有考虑在创建具有良好业务功能内聚性的类的分组时所必需的业务上下文。这种方法的另一个问题是它没有考虑高阶时间依赖性。这种方法的另一个问题是,它将运行轨迹聚集到图中,因此丢失了丰富的时间信息,并且假定错误的传递关系。这种方法的另一个问题是它不直接最小化调用量和最小化业务上下文以提高聚类质量。
考虑到现有的应用程序现代化技术的上述问题,本公开可以被实现为以系统、计算机实现的方法和/或计算机程序产品的形式产生对这些问题的解决方案,所述系统、计算机实现的方法和/或计算机程序产品可以基于可以使用单体式应用程序执行的测试用例的运行时跟踪来训练模型以学习单体式应用程序中的类的聚类分配和/或图形嵌入;和/或采用所述模型来基于聚类分配和/或图形嵌入生成类的聚类,以识别所述单体式应用程序的一个或多个微服务。这样的系统、计算机实现的方法和/或计算机程序产品的优点在于,它们可以被实现以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。在一些实施例中,测试用例可以包括在运行时跟踪中提供单体式应用程序的业务功能测试用例。这样的系统、计算机实现的方法和/或计算机程序产品的优点在于,它们可以被实现以促进类的改进的功能分组(例如,功能聚类),以使得能够更准确地识别一个或多个微服务和改进单体式应用程序的应用程序现代化。
图1示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性系统100的框图。系统100可以包括微服务生成系统102,其可以与云计算环境相关联。例如,微服务生成系统102可以与以下参考图9描述的云计算环境950和/或以下参考图10描述的一个或多个功能抽象层(例如,硬件和软件层1060、虚拟化层1070、管理层1080和/或工作负载层1090)相关联。
微服务生成系统102和/或其组件(例如,模型组件108、聚类组件110、收集组件202、第二模型组件204、细化组件206等)可采用以下参考图9描述的云计算环境950的一个或多个计算资源和/或以下参考图10描述的一个或多个功能抽象层(例如,量子软件等)来执行根据此处描述的本发明的一个或多个实施例的一个或多个操作。例如,云计算环境950和/或这样的一个或多个功能抽象层可以包括一个或多个经典计算设备(例如,经典计算机、经典处理器、虚拟机、服务器等)、量子硬件和/或量子软件(例如,量子计算设备、量子计算机、量子处理器、量子电路模拟软件、超导电路等),其可以由微服务生成系统102和/或其组件使用以执行根据本文描述的本发明的一个或多个实施例的一个或多个操作。例如,微服务生成系统102和/或其组件可以采用这样的一个或多个经典和/或量子计算资源来执行一个或多个经典和/或量子:数学函数、计算和/或方程;计算和/或处理脚本;算法;模型(例如,人工智能(AI)模型、机器学习(ML)模型等);和/或根据在此描述的本发明的一个或多个实施例的另一操作。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是服务交付的模型,用于使得能够方便地、按需地网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池,所述可配置计算资源可以以最小的管理努力或与服务的提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可以单方面地根据需要自动地提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。
广泛的网络接入:能力可通过网络获得并且通过标准机制接入,该标准机制促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池:提供者的计算资源被池化以使用多租户模型来服务于多个消费者,其中不同的物理和虚拟资源根据需要动态地指派和重新指派。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力,在一些情况下自动地快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
测量的服务:云系统通过在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是对所部署的应用和可能的应用托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其他基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础架构被若干组织共享并支持共享了关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:使云基础架构对公众或大型行业组可用,并且由出售云服务的组织拥有。
混合云:云基础架构是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
微服务生成系统102可包括存储器104、处理器106、模型组件108、聚类组件110和/或总线112。
应当理解,本文公开的各图中所描述的本发明的实施例仅用于说明,并且因此,这些实施例的体系结构不限于其中所描述的系统、设备和/或组件。例如,在一些实施例中,系统100和/或微服务生成系统102还可以包括这里参考操作环境800和图8描述的各种计算机和/或基于计算的元件,在若干实施例中,这样的计算机和/或基于计算的元件可以结合实现结合图1或本文公开的其它附图示出和描述的系统、设备、组件和/或计算机实现的操作中的一个或多个来使用。
存储器104可以存储一个或多个计算机和/或机器可读、可写和/或可执行组件和/或指令,当由处理器106(例如,经典处理器、量子处理器等)执行时,这些组件和/或指令可以促进由可执行组件和/或指令定义的操作的执行。例如,存储器104可以存储计算机和/或机器可读、可写和/或可执行组件和/或指令,当由处理器106执行时,其可以促进执行本文描述的与微服务生成系统102、模型组件108、聚类组件110和/或与微服务生成系统102相关联的另一组件(例如,收集组件202、第二模型组件204、细化组件206等)有关的各种功能,如本文参考或不参考各附图所描述的。
存储器104可以包括易失性存储器(例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)等)和/或非易失性存储器(例如,只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)等),其可以采用一个或多个存储器架构。下面参考系统存储器816和图8描述存储器104的其它例子。存储器104的这些例子可以用于实现本发明的任何实施例。
处理器106可以包括一种或多种类型的处理器和/或电子电路(例如,经典处理器、量子处理器等),其可以实现一个或多个计算机和/或机器可读、可写和/或可执行组件和/或可以存储在存储器104的指令。例如,处理器106可以执行可以由这样的计算机和/或机器可读、可写和/或可执行组件和/或指令指定的各种操作,包括但不限于逻辑、控制、输入/输出(I/O)、算术和/或类似操作。在一些实施例中,处理器106可以包括一个或多个中央处理单元、多核处理器、微处理器、双微处理器、微控制器、片上系统(SOC)、阵列处理器、矢量处理器、量子处理器和/或另一类型的处理器。下面参考处理单元814和图8描述处理器106的其它示例,处理器106的这些示例可用于实现本发明的任何实施例。
如本文所述的微服务生成系统102、存储器104、处理器106、模型组件108、聚类组件110和/或微服务生成系统102的另一组件(例如,收集组件202、第二模型组件204、细化组件206等)可以经由总线112通信地、电气地、操作地和/或光学地彼此耦合,以执行系统100、微服务生成系统102和/或与其耦合的任何组件的功能。总线112可以包括一个或多个存储器总线、存储器控制器、外围总线、外部总线、本地总线、量子总线和/或可以采用各种总线架构的另一类型的总线。下面参考系统总线818和图8描述总线112的其它例子,总线112的这些例子可以用于实现本发明的任何实施例。
微服务生成系统102可包括任何类型的组件、机器、设备、设施、装置和/或仪器,其包括处理器和/或能够与有线和/或无线网络进行有效和/或可操作的通信。所有这些实施例都是可以预见的。例如,微服务生成系统102可以包括服务器设备、计算设备、通用计算机、专用计算机、量子计算设备(例如,量子计算机)、平板计算设备、手持设备、服务器类计算机器和/或数据库、膝上型计算机、笔记本计算机、台式计算机、蜂窝电话、智能电话、消费电器和/或仪器、工业和/或商业设备、数字助理、多媒体互联网使能电话、多媒体播放器和/或另一类型的设备。
微服务生成系统102可以经由数据电缆(例如,高清晰度多媒体接口(HDMI)、推荐标准(RS)232、以太网电缆等)耦合(例如,通信地、电气地、操作地、光学地等)到一个或多个外部系统、源和/或设备(例如,经典和/或量子计算设备、通信设备等)。在一些实施例中,微服务生成系统102可以经由网络(例如,通信地、电气地、操作地、光学地等)耦合到一个或多个外部系统、源和/或设备(例如,经典和/或量子计算设备、通信设备等)。
在一些实施例中,这样的网络可以包括有线和无线网络,包括但不限于蜂窝网络、广域网(WAN)(例如,因特网)或局域网(LAN)。例如,微服务生成系统102可以使用几乎任何期望的有线或无线技术与一个或多个外部系统、源和/或设备(例如计算设备)通信(反之亦然),包括但不限于:无线保真(Wi-Fi)、全球移动通信系统(GSM)、通用移动电信系统(UMTS)、全球微波接入互操作性(WiMAX)、增强型通用分组无线业务(增强型GPRS)、第三代合作伙伴计划(3GPP)长期演进(LTE)、第三代合作伙伴计划2(3GPP2)、超移动宽带(UMB)、高速分组接入(HSPA)、Zigbee和其它802.XX无线技术和/或传统电信技术、蓝牙会话发起协议(SIP)、RF4CE协议、无线HART协议、6LoWPAN(低功率无线局域网上的IPv6)、Z-Wave、ANT、超宽带(UWB)标准协议和/或其它专有和非专有通信协议。在这样的示例中,微服务生成系统102因此可以包括硬件(例如,中央处理单元(CPU)、收发器、解码器、量子硬件、量子处理器等)、软件(例如,线程集合、进程集合、执行中的软件、量子脉冲调度、量子电路、量子门等)或者促进在微服务生成系统102与外部系统、源和/或设备(例如,计算设备、通信设备等)之间传送信息的硬件和软件的组合。
微服务生成系统102可包括一个或多个计算机和/或机器可读、可写和/或可执行组件和/或指令,当由处理器106(例如,经典处理器、量子处理器等)执行时,这些组件和/或指令可促进由这些组件和/或指令定义的操作的执行。此外,在许多实施例中,如本文参考或不参考各附图所描述的,与微服务生成系统102相关联的任何组件可以包括一个或多个计算机和/或机器可读、可写和/或可执行组件和/或指令,当由处理器106执行时,这些组件和/或指令可以促进由这些组件和/或指令定义的操作的执行。例如,模型组件108、聚类组件110和/或与如本文所公开的微服务生成系统102相关联的任何其他组件(例如,与微服务生成系统102通信地、电子地、操作地和/或光学地耦合和/或由微服务生成系统102采用的)可以包括这样的计算机和/或机器可读、可写和/或可执行组件和/或指令。因此,根据许多实施例,如本文所公开的微服务生成系统102和/或与其相关联的任何组件可以采用处理器106来执行这样的计算机和/或机器可读、可写和/或可执行组件和/或指令,以促进参照微服务生成系统102和/或与其相关联的任何这样的组件所描述的一个或多个操作的执行。
微服务生成系统102可以促进(例如,经由处理器106)由模型组件108、聚类组件110和/或与微服务生成系统102相关联的另一组件(例如,收集组件202、第二模型组件204、细化组件206等)执行的和/或与之相关联的操作的执行。例如,如下面详细描述的,微服务生成系统102可以经由处理器106(例如,经典处理器、量子处理器等)来促进:训练模型以基于所执行的测试用例的运行时跟踪来学习在单体式应用程序中的类的聚类分配;和/或采用所述模型来基于所述聚类分配生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。如本文所引用的,聚类可以被定义为一组类,这些类可以由微服务生成系统102和/或如本文所描述的其一个或多个组件(例如,模型组件108、聚类组件110、收集组件202、第二模型组件204、细化组件206等)基于一个或多个定义的目标(例如,业务上下文、呼叫量等)而被分组在一起。更具体地,在单体到微服务重构的应用领域(也称为应用程序现代化)中,如本文所引用的,聚类可以被定义为可以被组成微服务的一组类。
在以上示例中,如下面详细描述的,微服务生成系统102还可以经由处理器106(例如,经典处理器、量子处理器等)来促进:基于所述单体式应用程序的数据依赖性或所述单体式应用程序的静态调用图中的至少一个来细化所述一个或多个微服务;基于所执行的测试用例的运行时跟踪生成一个或多个因果图,以捕获至少一个单体式应用程序的一阶时间依赖性或高阶时间依赖性或单体式应用程序中类的聚类分配中的至少一个;和/或训练模型以使用基于所执行测试用例的运行时跟踪生成的一个或多个因果图的因果序列来学习在单体式应用程序中的类的至少一个聚类分配或图嵌入。在上述示例中,所执行的测试用例可包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。
在另一示例中,如下面详细描述的,微服务生成系统102可以经由处理器106(例如,经典处理器、量子处理器等)进一步促进:收集在单体式应用程序上执行的测试用例的运行时跟踪;基于所述运行时跟踪,训练模型以学习所述单体式应用程序中的类的聚类分配;和/或采用所述模型来基于所述聚类分配生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。在该示例中,如下面详细描述的,微服务生成系统102还可以经由处理器106(例如,经典处理器、量子处理器等)来促进:基于所述单体式应用程序的数据依赖性或所述单体式应用程序的静态调用图中的至少一个来细化所述一个或多个微服务;基于所述运行时跟踪生成一个或多个因果图,以捕获所述单体式应用程序或所述单体式应用程序中的类的聚类分配中的至少一个的一阶时间依赖性或高阶时间依赖性中的至少一个;和/或训练模型,以便使用基于运行时跟踪生成的一个或多个因果关系图的因果序列,学习在单体式应用程序中类的至少一个聚类分配或图嵌入。在该示例中,测试用例可以包括在运行时跟踪中提供单体式应用程序的业务功能的业务功能测试用例。
模型组件108可基于所执行的测试用例的运行时跟踪来学习单体式应用程序中的类的聚类分配。例如,模型组件108可包括人工智能(AI)和/或机器学习(ML)模型(例如,神经网络),其可被(例如,经由如下所述的微服务生成系统102)训练以基于运行时跟踪学习在单体式应用程序(例如,单体式企业应用程序)中的类的聚类分配,运行时跟踪可通过(例如,经由处理器106)采用单体式应用程序执行这样的测试用例而产生。在一些实施例中,模型组件108可以包括下面描述并在图4中示出的模型400,其中模型400可以包括神经网络,该神经网络可以被训练(例如,经由如下所述的微服务生成系统102)以基于运行时跟踪学习在单体式应用程序(例如,单体式企业应用程序)中的类的聚类分配,运行时跟踪可以通过(例如,经由处理器106)采用单体式应用程序执行这样的测试用例而产生。
在示例中,上述执行的测试用例可以包括可以使用单体式应用程序执行(例如,经由处理器106在单体式应用程序上运行)的业务功能测试用例。在该示例中,这样的业务功能测试实例可以在运行时跟踪中提供单体式应用程序的业务功能。例如,这样的业务功能测试实例可以向微服务生成系统102和/或模型组件108提供单体式应用程序的类和功能调用如何交互的顺序和频率,并且还可以(例如,经由如下所述的微服务生成系统102、模型组件108和/或聚类组件110)使微服务生成系统102和/或模型组件108能够将业务上下文与每个跟踪相关联,以提供改进的功能分组。
模型组件108可以使用基于运行时跟踪生成的一个或多个因果图的因果序列来学习在单体式应用程序中的类的聚类分配和/或在单体式应用程序中的这种类的图嵌入,其中运行时跟踪可以通过如上所述对单体式应用程序执行测试用例而产生。在一个例子中,模型组件108可以使用一个或多个因果图的因果序列同时学习上述这种聚类分配和图嵌入,所述因果图可以(例如,由下面参考图2描述的第二模型组件204)基于上述运行时跟踪生成。在该示例中,(例如,由第二模型组件204)生成上述这种一个或多个因果图可以向微服务生成系统102和/或模型组件108提供:单体式应用程序的一阶时间依赖性和/或高阶时间依赖性;和/或在单体式应用程序中的类的聚类分配。
为了促进由上述模型组件108进行的这种学习,微服务生成系统102可以训练模型组件108。例如,模型组件108可以包括人工智能(AI)和/或机器学习(ML)模型,诸如例如神经网络(例如,模型400),其可以由微服务生成系统102训练以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。例如,微服务生成系统102可以训练模型组件108通过实现以下描述的训练过程来学习上述聚类分配和/或图嵌入。
为了说明微服务生成系统102可以实现来训练模型组件108学习上述聚类分配和/或图嵌入的训练过程,在一个实施例中,上述单体式应用程序可以包括示例Java 2平台企业版(J2EE)应用程序,例如可以用于在一个或多个金融市场中交易安全资产的示例交易应用程序。在该实施例中,示例交易应用程序可以包括用于在线股票交易系统的J2EE应用程序,其允许用户登录、查看他们的投资组合、查找股票报价和/或买卖股票。在该实施例中,可以通过在示例交易应用程序上执行测试用例(例如,业务功能测试用例)而产生的运行时跟踪可以包括多线程运行时跟踪,其可以表示三层体系结构表示层、业务逻辑和持久层。在该实施例中,可以(例如,经由处理器106)通过在示例交易应用程序上执行测试用例(例如,业务功能测试用例)来产生这样的运行时跟踪,所述测试用例包括但不限于初始化、登录、注销、交易账户、交易账户更新简档、市场概要词汇表、交易报价购买、交易组合出售和/或另一测试用例。在该实施例中,类及其对其它类的调用可以涉及多个业务上下文。在该实施例中,可通过在示例交易应用上执行以上定义的这种测试用例而产生的运行时跟踪可包括以下运行时跟踪:
1567027540073,init,Root calls MarketSummarySingleton
1567027540074,init,MarketSummarySingleton calls Log
1567027540075,init,Log calls TradeConfig
1567027540076,init,TradeConfig returns to Log
1567027540077,init,Log calls TradeConfig
1567027540078,init,TradeConfig returns to Log
1567027540079,init,Log returns to MarketSummarySingleton
……
1567027743085,trade-quotes-buy,Root calls OrdersAlertFilter
1567027743086,trade-quotes-buy,OrdersAlertFilter calls TradeConfig
1567027743087,trade-quotes-buy,TradeConfig returns toOrdersAlertFilter
Root–MarketSummarySingleton–Log–TradeConfig–(TradeConfig-Log)--log–MarketSummarySingleton init
Root–OrdersAlertFilter–TradeConfig–(TradeConfig-OrdersAlertFilter)--OrdersAlertFilter trade-quotes-buy
在该示例实施例中,在单体式应用程序包括示例交易应用程序的情况下,微服务生成系统102可以基于上面定义的运行时跟踪生成包括因果序列的一个或多个因果图。在该实施例中,微服务生成系统102可以生成这样的一个或多个因果图以捕获单体式应用程序的一阶时间依赖性和/或高阶时间依赖性和/或单体式应用程序中的类的聚类分配。在该实施例中,为了便于生成这样的一个或多个因果图,微服务生成系统102可以采用可以包括神经网络(例如,高阶时间神经网络)的第二模型组件(例如,下面参考图2描述的第二模型组件204)来生成上述的这样的因果图。在这个实施例中,微服务生成系统102可以采用这样的第二模型组件(例如,下面参考图2描述的第二模型组件204)来捕获(例如,通过生成包括上述因果序列的因果图)路径的时间关系,并推断高度相关的调用序列。
在该示例实施例中,在单体式应用程序包括示例交易应用程序的情况下,微服务生成系统102可以训练模型组件108以使用上述一个或多个因果图的因果序列(在此也称为运行时因果序列和/或运行时序列)作为输入来学习上述聚类分配和/或图嵌入,其中输出可以包括节点嵌入(例如,映射f:V→Rd))和聚类分配。在该实施例中,微服务生成系统102可以训练模型组件108以从运行时因果序列直接采样相邻节点。在该实施例中,给定运行时序列S,包含节点v的窗口的集合可被表示为Ns(v)。在该实施例中,微服务生成系统102可以通过实现以下示例例程来训练模型组件108从因果序列生成一个或多个正样本对:
给定运行时间序列“root,MarketSummarySington,Log,TradeConfig,TradeConfig返回到Log,Log”和大小为3的观察窗。
节点“MarketSummarySington”具有邻域窗口Ns(v=MarketSummarySingleton)。
[Root,MarketSummarySingleton,Log]
[MarketSummarySingleton,Log,TradeConfig]
提取正样品对:
(MarketSummarySingleton,Root)
(MarketSummarySingleton,Log)
(MarketSummarySingleton,TradeConfig)
在该示例实施例中,其中单体式应用程序包括示例交易应用程序,模型组件108可以包括神经网络,例如图4中所示的模型400。在该实施例中,微服务生成系统102可以训练模型组件108(例如,模型400)以学习以上通过训练模型组件108针对以下任务描述的聚类分配和/或图嵌入:给定运行时序列中的特定类A,微服务生成系统102可以训练模型组件108来预测每一类是运行时序列中A的“相邻”类的概率。在该实施例中,如果两个Java类具有非常相似的“上下文”,则可以意味着这两个类可能在相同的业务上下文下在相同的上下文窗口内同时出现,并且微服务生成系统102可以训练模型组件108来输出这两个类的相似嵌入。在利用基于序列的嵌入的这个实施例中,可以使用诸如随机游走之类的方法(例如,经由微服务生成系统102和/或模型组件108)从因果图中采样相邻节点的序列,并且目标可以是最小化观察节点邻域的负对数似然性。
在该示例实施例中,其中单体式应用程序包括示例交易应用程序,微服务生成系统102可以训练模型组件108以实现上述目标,以通过采用下面定义的公式(1)最小化在节点嵌入的条件下观察这些节点邻域的负对数似然性。
公式(1):
其中f(v)表示节点v的嵌入,P表示概率函数,并且Ns(i)表示节点v周围的相邻节点的集合。
在该示例实施例中,其中单体式应用程序包括示例交易应用程序,根据条件独立性假设和特征空间中的对称性,上面定义的公式(1)可以由微服务生成系统102和/或模型组件108公式化为下面定义的公式(2)。
公式(2):
其中Lh表示用于嵌入的优化函数,u表示节点u,f(u)表示节点u的嵌入,以及f(ni)表示节点ni的嵌入。
在该示例实施例中,其中单体式应用程序包括示例交易应用程序,微服务生成系统102可以训练模型组件108同时学习上述聚类分配和/或图嵌入。例如,为了促进这样的同时学习,微服务生成系统102可以训练模型组件108以扩展目标函数(例如,等公式(2))以包括下面定义为公式(3)的k均值成本函数。
公式(3):
其中Lc表示用于嵌入和聚类的总体优化函数,γ表示确定聚类成本的权重系数的超参数,并且uc表示cth聚类的聚类均值。注意,它们是可训练的参数。
在一些实施例中,微服务生成系统102可包括和/或采用一个或多个人工智能(AI)模型和/或一个或多个机器学习(ML)模型来训练模型组件108使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。例如,微服务生成系统102可以包括和/或采用一个或多个AI和/或ML模型来训练模型组件108,以使用上述一个或多个因果图的因果序列并使用一个或多个无监督学习方法(例如,诸如例如上述训练过程的无监督聚类方法)来学习上述聚类分配和/或图嵌入。
在一些实施例中,微服务生成系统102可以基于与人工智能的原理相关联的分类、相关、推断和/或表达式,使用上述一个或多个因果图的因果序列来训练模型组件108以学习上述聚类分配和/或图嵌入。例如,微服务生成系统102可以采用自动分类系统和/或自动分类过程来训练模型组件108,以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。在一个实施例中,微服务生成系统102可以采用基于概率和/或统计的分析(例如,分解成分析效用和成本)来训练模型组件108,以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。
在一些实施例中,微服务生成系统102可以采用任何合适的基于机器学习的技术、基于统计的技术和/或基于概率的技术来训练模型组件108,以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。例如,微服务生成系统102可以采用专家系统、模糊逻辑、支持向量机(SVM)、隐马尔可夫模型(HMM)、贪婪搜索算法、基于规则的系统、贝叶斯模型(例如,贝叶斯网络)、神经网络、其他非线性训练技术、数据融合、基于效用的分析系统、采用贝叶斯模型的系统、和/或另一模型。在一些实施例中,微服务生成系统102可以执行与训练模型组件108相关联的一组机器学习计算,以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入。例如,微服务生成系统102可以执行一组聚类机器学习计算、一组逻辑回归机器学习计算、一组决策树机器学习计算、一组随机森林机器学习计算、一组回归树机器学习计算、一组最小二乘机器学习计算、一组基于实例的机器学习计算、一组回归机器学习计算、一组支持向量回归机器学习计算、一组k均值机器学习计算、一组谱聚类机器学习计算、一组规则学习机器学习计算、一组贝叶斯机器学习计算、一组深度波尔兹曼机器计算、一组深度置信网络计算和/或一组不同机器学习计算,以训练模型组件108来学习上述使用一个或多个因果图的因果序列的聚类分配和/或图嵌入。
聚类组件110可以采用模型组件108来基于单体式应用程序中的聚类分配生成单体式应用程序中的类的聚类,以识别单体式应用程序的一个或多个微服务。例如,基于微服务生成系统102训练模型组件108使用如上所述的一个或多个因果图的因果序列来学习单体式应用程序的聚类分配和/或图嵌入,聚类组件110可以采用模型组件108的训练版本,以基于已由模型组件108学习的单体式应用程序的这种聚类分配和/或图嵌入来生成单体式应用程序中的类的聚类。在该示例中,如上所述(例如,经由采用模型组件108)可由聚类组件110生成的类的聚类可指示单体式应用程序的一个或多个微服务(例如,单体式应用程序的一个或多个潜在微服务候选),这些微服务由此可由聚类组件110标识和/或由细化组件206进一步细化,如下文参考图2所述。
图2示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性系统200的框图。系统200可以包括微服务生成系统102,其可以进一步包括收集组件202、第二模型组件204和/或细化组件206。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
收集组件202可收集在单体式应用程序上执行的测试用例的运行时跟踪。例如,收集组件202可收集可通过使用单体式应用程序(例如,经由处理器106)执行测试用例而产生的运行时跟踪,其中这样的测试用例可包括以上参考图1描述的业务功能测试用例。
为了便于收集上述这些运行时跟踪,收集组件202可采用基于人工智能(AI)和自然语言处理(NLP)和/或命名实体识别(NER)的机器学习(ML)模型,包括但不限于浅或深神经网络模型、支持向量机(SVM)模型、决策树分类器、或可便于提取通过使用单体式应用程序执行上述这些测试用例而产生的运行时跟踪的任何有监督或无监督的机器学习模型。例如,收集组件202可以采用监视应用程序,该监视应用程序可以从单体式应用程序的经插装的源代码生成运行时日志。在另一示例中,收集组件202可以采用基于Python的工具来从单体式应用程序的源代码中提取信息,例如类名、属性、方法名、方法自变量、返回类型和/或其他信息,其中这种基于Python的工具可以进一步将代码插入单体式应用程序中以用于运行时跟踪生成。在另一示例中,收集组件202可以采用Java前端工具,该工具使得能够基于业务上下文来生成跟踪。在另一示例中,收集组件202可以采用提取应用程序,该提取应用程序可以提取继承关系、数据依赖性、属性、方法自变量、返回类型和/或其它关系。
第二模型组件204可以基于在单体式应用程序上执行的测试用例的运行时跟踪来生成一个或多个因果图,以捕获单体式应用程序的一阶时间依赖性和/或高阶时间依赖性和/或单体式应用程序中的类的聚类分配。例如,第二模型组件204可以基于通过在单体式应用程序上执行业务功能测试用例而产生的运行时跟踪来生成以上参考图1描述的一个或多个因果图,以捕获单体式应用程序的一阶时间依赖性和/或高阶时间依赖性和/或单体式应用程序中的类的聚类分配。
第二模型组件204可以包括神经网络。在一个示例中,第二模型组件204可以包括高阶时间神经网络,该高阶时间神经网络可以基于以上参考图1定义的运行时跟踪来生成包括因果序列的一个或多个因果图,以捕捉上述这种一阶时间依赖性和/或高阶时间依赖性。例如,第二模型组件204可以包括高阶时间神经网络,高阶时间神经网络可以基于以上参考图1定义的运行时跟踪生成包括因果序列的一个或多个因果图,以捕捉路径的时间关系并推断高度相关的调用序列。在一个示例中,这样的因果图和/或可以由第二模型组件204生成的因果序列可以由微服务生成系统102用来训练模型组件108以学习如上参考图1所述的单体式应用程序的聚类分配和/或图嵌入。
细化组件206可以基于(例如,使用)单体式应用程序的数据依赖性和/或单体式应用程序的静态调用图来细化单体式应用程序的一个或多个微服务。例如,如上所述(例如,经由采用模型组件108)可由聚类组件110生成的类的聚类可指示单体式应用程序的一个或多个微服务(例如,单体式应用程序的一个或多个潜在微服务候选),其可由如下所述的细化组件206基于(例如,使用)单体式应用程序的数据依赖性和/或单体式应用程序的静态调用图来进一步细化。
在以上参考图1描述的示例交易应用实施例中,为了促进基于(例如,使用)单体式应用程序的数据依赖性和/或单体式应用程序的静态调用图来细化单体式应用程序的这样的一个或多个微服务,细化组件206可以增强成本函数(例如,公式(3))以添加附加的正则化项。例如,在上面参考图1描述的示例交易应用实施例中,细化组件206可以增强成本函数(例如,公式(3))以添加附加的正则化项,产生下面定义的公式(4)。在以上参考图1描述的示例交易应用程序实施例中,细化组件206可以利用以下定义的公式(4)来基于(例如,使用)单体式应用程序的数据依赖性和/或单体式应用程序的静态调用图来细化单体式应用程序的一个或多个微服务,其中,这样的数据依赖性和/或静态调用图可以由如上所述的收集组件202收集(例如,从通过使用单体式应用程序执行业务功能测试用例而产生的运行时跟踪收集)。
公式(4):
λ2*∑(u,v)∈c2ω2(u,v)*||f(u)-f(v)||
其中ω(u,v)表示正则化权重,并且λi表示正则化系数(例如,确定惩罚的严重性)。
在上述实例中c2:u,v属于不同的聚类,但具有运行时调用依赖性,并且ω2(u,v)计算归一化的调用频率。在以上示例中,如果两个类具有频繁的函数调用,则它们的表示应当接近(例如,聚类间调用量)。
图3示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法300的流程图。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
在302,计算机实现的方法300可以包括(例如,经由微服务生成系统102和/或收集组件202)收集输入数据。例如,如上参考图2所述,收集组件202可收集运行时跟踪,该运行时跟踪可通过(例如,经由处理器106)使用单体式应用程序执行测试用例(例如,业务功能测试用例)来产生。
在一个示例中,如图3中的302所示,收集组件202可以使用监控应用程序,该监控应用程序可以从单体式应用程序的经插装的源代码生成运行时日志。在该示例中,如图3中的302所示,这样的监控应用程序可以生成被格式化为日志文件和/或文本文件的运行时日志。
在另一示例中,如图3中在302处所示,收集组件202可以采用运行时上下文生成器,诸如例如可以生成运行时上下文(例如,业务上下文)的Java前端工具。在该示例中,如图3中的302所示,这样的运行时上下文生成器可以生成包括上下文标签(例如,业务上下文标签)的运行时上下文,所述上下文标签被格式化为JavaScript对象符号(JSON)文件和/或逗号分隔值(CSV)文件。在该示例中,实现微服务生成系统102的实体(例如,人、客户端、用户、计算设备、软件应用、代理、机器学习(ML)模型、人工智能(AI)模型等)可以使用微服务生成系统102的接口组件(图中未示出)(例如,应用编程接口(API)、代表性状态转移API、图形用户接口(GUI)等)来定义这样的上下文标签(例如,业务上下文标签)。
在另一个示例中,如图3中的302所示,收集组件202可以使用数据依赖性生成器,例如基于python的工具,来从可以用于生成数据依赖图的单体式应用程序的源代码中提取信息,其中,这样的信息可以包括类名、属性、方法名、方法自变量、返回类型和/或其它信息。在该示例中,如图3中的302所示,这样的数据依赖性生成器可以生成包括符号表(在图3中表示为symTable)和/或引用表(在图3中表示为refTable)的数据依赖性图,其可以被格式化为JSON文件。
在另一示例中,如图3中在302处所示,收集组件202可以采用静态调用图生成器,诸如例如可以提取继承关系、数据依赖性、属性、方法自变量、返回类型和/或其他关系的提取应用来生成静态调用图。在该示例中,如图3中的302所示,这种静态调用图生成器可以生成格式化为JSON文件的静态调用图。在该示例中,如图3中的302所示,微服务生成系统102和/或收集组件202可从静态调用图中过滤出非应用类,其中这种过滤后的静态调用图可被用于细化类的聚类和/或可被提供给用户界面(UI),如下所述。
在304,计算机实现的方法300可以包括(例如,经由微服务生成系统102和/或第二模型组件204)生成运行时跟踪。例如,如图3中在304处所示,基于如上所述在302处从所插装的源收集运行时日志和/或生成运行时上下文(例如,业务上下文和/或业务上下文标签),在304处,微服务生成系统102和/或第二模型组件204可以生成流(例如,因果序列、数据流等)并将上下文标签附加到通过使用单体式应用程序执行上述测试用例(例如,业务功能测试用例)而生成的相应跟踪,从而产生可以被格式化为JSON文件的运行时跟踪。
在306,计算机实现的方法300可以包括(例如,经由微服务生成系统102、模型组件108、群集组件110和/或第二模型组件204)将单体式应用程序的类聚类以生成聚类A、B和/或C,如图3中所描绘的,例如,为了促进在306的类的这种聚类,计算机实现的方法300可以包括(例如,经由微服务生成系统102、模型组件108、群集组件110和/或第二模型组件204)将聚类分配到单体式应用程序的类以产生聚类A、B和/或C,如图3中所描绘的。例如,如图3中在306所图示的,计算机实现的方法300可以包括:a)(例如,经由微服务生成系统102和/或第二模型组件204)生成和/或应用因果关系图以获得时间依赖性,从而产生聚类A;b)(例如,经由微服务生成系统102、模型组件108和/或第二模型组件204)生成和/或应用因果图以训练模型组件108学习单体式应用程序的聚类分配和/或图嵌入(例如,如上参考图1和2所述)以使用因果图获得每个类的划分,从而产生聚类B;和/或c)(例如,经由微服务生成系统102、模型组件108和/或群集组件110)应用如上所述在304生成的运行时跟踪,以训练模型组件108学习单体式应用程序的聚类分配和/或图嵌入(例如,如上参考图1和2所述),以使用运行时跟踪获得每个类的划分,从而产生聚类C。
在308,计算机实现的方法300可以包括基于如上所述在302生成的数据依赖图并使用来自实体(例如,人、客户端、用户、计算设备、软件应用、代理、机器学习(ML)模型、人工智能(AI)模型等)的输入(例如,经由微服务生成系统102和/或细化组件206)来细化如图3中所示的聚类A、B和/或C。例如,如图3中的308所示,细化组件206和/或上面定义的实体可以(例如,向聚类A、B和/或C)添加运行时跟踪中缺失的类,其中这些类具有数据依赖性(例如,如使用数据依赖图所确定的,与聚类A、B和/或C中的一个或多个类的数据依赖性)。在该示例中,如图3中的308所示,细化组件206和/或上面定义的实体可以进一步合并具有跨聚类数据依赖性(例如,聚类A、B和/或C的类之间的跨聚类数据依赖性)的聚类(例如,聚类A、B和/或C)。在该示例中,如图3中308处所示,可以实现上述这种细化操作以生成自然接缝。
在310,计算机实现的方法300可以包括基于如上所述在302生成的静态调用图(例如,经过滤的静态调用图)并且使用来自实体(例如,人、客户端、用户、计算设备、软件应用、代理、机器学习(ML)模型、人工智能(AI)模型等)的输入(例如,经由微服务生成系统102和/或细化组件206)来细化如图3中所描绘的聚类A、B和/或C。例如,如图3中310处所示,细化组件206和/或上面定义的实体可以(例如,向聚类A、B和/或C)添加运行时跟踪中缺失的类,其中这些类具有静态调用依赖性(例如,如使用静态调用图所确定的,与聚类A、B和/或C中的一个或多个类的静态调用依赖性)。在该示例中,如图3中的310所示,细化组件206和/或上面定义的实体还可以向聚类(例如,向聚类A、B和/或C添加)添加没有调用依赖性(例如,如使用静态调用图所确定的,与聚类A、B和/或C中的一个或多个类没有静态调用依赖性)的类。在该示例中,如图3中的310所示,可以实现上述这些细化操作以生成业务逻辑。
在一个示例中,如图3所示,可以将如上所述在302处生成的数据依赖图和/或静态调用图(例如,经过滤的静态调用图)作为JSON文件提供给用户界面(UI)。在一个示例中,如图3所示,如上所述在304生成的运行时跟踪可以被以运行时图的形式提供给用户界面(UI),该运行时图可以被格式化为JSON文件。在一个示例中,如图3所示,如上所述,可以将在308和310处生成的自然接缝和/或业务逻辑分别作为JSON文件提供给用户界面(UI)。
图4示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制模型400的图。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
在一些实施例中,模型组件108和/或第二模型组件204可以包括模型400。例如,如上参考图1所述,模型组件108可包括模型400,它可包括(例如,经由如上所述的微服务生成系统102)可被训练以使用上述一个或多个因果图的因果序列来学习上述聚类分配和/或图嵌入的神经网络。
如图4所示,模型400可以包括输入层402、嵌入层404和/或输出层406。在以上参考图1描述的示例交易应用程序实施例中,输入层402可以以图4中描绘的输入向量的形式向嵌入层404提供单体式应用程序的Java类(在图4中表示为“MarketSummarySingleton”),嵌入层404可以产生输入Java类的一个或多个嵌入,其中这样的一个或多个嵌入可以包括输入Java类的一个或多个向量表示。基于输入Java类的这种向量表示,可以包括如图4所示的softmax分类器的输出层406可以预测单体式应用程序的另一个类是否在预定义窗口中(例如,如以上参照图1所述的示例交易应用程序实施例中表示的窗口大小为3)。例如,输出层406可以预测在单体式应用程序中的一对Java类是否属于相同的窗口(在图4中表示为“邻域”)。例如,在以上参考图1描述的示例交易应用程序实施例中,并且如图4所示,基于产生在图4中表示为“MarketSummarySingleton”的输入Java类的向量表示的嵌入层404,输出层406可以预测:a)类“Log”在邻域中(例如,在相对于输入Java类“MarketsumarySingleton”的窗口大小3内)的概率;b)类“TradeConfig”在邻域中(例如,在相对于输入Java类“MarketsumarySingleton”的窗口大小3内)的概率;c)类“QuoteDataBeam”在邻域中(例如,在相对于输入Java类“MarketSummarySingleton”的窗口大小3内)的概率;和/或d)类“TradeSLSSBBeam”在邻域(例如,在相对于输入Java类“MarketSummarySingleton”的窗口大小3之内)的概率。
微服务生成系统102可与各种技术相关联。例如,微服务生成系统102可以与应用程序现代化技术、单体式应用程序技术、单体式企业应用技术、应用编程技术、云计算技术、机器学习技术、人工智能技术和/或其他技术相关联。
微服务生成系统102可向与以上标识的各种技术相关联的系统、设备、组件、操作步骤、和/或处理步骤提供技术改进。例如,微服务生成系统102可以训练模型以基于可以使用单体式应用程序执行的业务功能测试用例的运行时跟踪来学习单体式应用程序中的类的聚类分配和/或图嵌入;和/或可以进一步采用所述模型来基于所述聚类分配和/或图嵌入生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。使用单体式应用程序执行这种业务功能测试用例可产生对应于每个这种业务功能测试用例的运行时跟踪。微服务生成系统102可以利用对应于各个业务功能测试用例的这种运行时跟踪来生成包括也对应于这种各个业务功能测试用例的因果序列的因果图。对应于相应业务功能测试用例的这种因果图和/或因果序列向微服务生成系统102提供单体式应用程序的一阶时间依赖性和/或高阶时间依赖性和/或单体式应用程序中的类的聚类分配,其中这种依赖性对应于相应业务功能测试用例。这些一阶时间依赖性和/或高阶时间依赖性为微服务生成系统102提供了单体式应用程序的各种业务功能,例如单体式应用程序的类和函数调用如何交互的顺序和频率。一阶时间依赖性和/或高阶时间依赖性还可以使微服务生成系统102能够将业务上下文与每个跟踪相关联,以提供在单体式应用程序中的类的改进的功能分组(例如,功能聚类)。单体式应用程序中的类的这种改进的功能分组可以使得微服务生成系统102能够更准确地识别单体式应用程序的一个或多个微服务,由此促进微服务生成系统102对单体式应用程序的改进的应用程序现代化。
微服务生成系统102可以向与经典计算设备相关联的处理单元(例如,处理器106)和/或与微服务生成系统102相关联的量子计算设备(例如,量子处理器、量子硬件、超导电路等)提供技术改进。例如,通过改进单体式应用程序中的类的功能分组(例如,功能聚类),这可以使得微服务生成系统102能够如上所述更准确地识别单体式应用程序的一个或多个微服务,微服务生成系统102可以减少用来执行单体式应用程序的应用程序现代化的处理器(例如,处理器106)的工作负载(例如,通过减少这样的处理器执行以完成应用程序现代化过程的处理循环的数目)。这种处理器(例如,处理器106)的这种减少的工作负荷可以提高这种处理器的处理性能和/或处理效率,和/或可以进一步减少这种处理器的计算成本。
微服务生成系统102的实际应用是它可以被实现为在单体式应用程序上执行改进的应用程序现代化过程。例如,微服务生成系统102的实际应用是它可以由单体式应用程序(例如,单体式企业应用程序)的所有者实现以快速且准确地识别单体式应用程序的微服务,由此实现单体式应用程序上的改进的应用程序现代化过程。
应当理解,微服务生成系统102提供由相对新的应用程序现代化技术驱动的新方法,该相对新的应用程序现代化技术当前涉及作出与单体式应用程序相关联的特定设计或编程模型的假设和/或涉及来自人的手动密集输入以对单体式应用程序执行应用程序现代化过程。例如,微服务生成系统102提供了一种新的自动化方法,以在没有来自人的手动密集输入的情况下在单体式应用程序上执行应用程序现代化:定义与单体式应用程序相关联的特定设计或编程模型的这种假设;识别所述单体式应用程序中的能够构成所述单体式应用程序的潜在微服务候选的类和/或类的聚类;和/或细化这样的潜在微服务候选以识别可以包括和/或被实现为单体式应用程序的独立应用程序的单体式应用程序的微服务。
微服务生成系统102可以使用硬件或软件来解决本质上是高度技术性的、非抽象的、且不能作为人类的一组精神动作来执行的问题。在一些实施方案中,本文所述的过程中的一个或多个可由一个或多个专用计算机(例如,专用处理单元、专用经典计算机、专用量子计算机等)执行以执行与上文所识别的各种技术相关的定义的任务。微服务生成系统102和/或其组件可用于解决由于上述技术的进步、量子计算系统、云计算系统、计算机体系结构、和/或另一技术的使用而引起的新问题。
应当理解,微服务生成系统102可以利用不能在人类的头脑中复制或由人类执行的电气部件、机械部件和电路的各种组合,因为如本文所述的可以由微服务生成系统102和/或其部件执行的各种操作是大于人类头脑的能力的操作。例如,在某个时间段上由微服务生成系统102处理的数据量、处理这样的数据的速度或处理的数据类型可以大于、快于或不同于在相同时间段上可以由人类思想处理的量、速度或数据类型。
根据若干实施例,微服务生成系统102还可以完全可操作用于执行一个或多个其它功能(例如完全通电、完全执行等),同时还执行本文描述的各种操作。应当理解,这种同时多操作执行超出了人类头脑的能力。还应当理解,微服务生成系统102可以包括不可能由诸如人类用户之类的实体手动获得的信息。例如,包括在微服务生成系统102、模型组件108、聚类组件110、收集组件202、第二模型组件204、细化组件206和/或模型400中的信息的类型、数量和/或种类可以比由人类用户手动获得的信息更复杂。
图5示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法500的流程图。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
在502,计算机实现的方法500可以包括由操作地耦合到处理器(例如,处理器106、量子处理器等)的系统(例如,经由微服务生成系统102)训练模型(例如,模型组件108、模型400等),以基于所执行的测试用例(例如,使用单体式应用程序执行的业务功能测试用例)的运行时跟踪(例如,以上参考图1和图3描述的运行时跟踪),学习单体式应用程序(例如,单体式企业应用程序)中的类的聚类分配(例如,Java类的聚类分配和/或图嵌入)。
在504,计算机实现的方法500可以包括由系统(例如,经由微服务生成系统102和/或聚类组件110)采用模型来基于聚类分配生成类的聚类,以识别单体式应用程序的一个或多个微服务。
图6示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法600的流程图。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
在602,计算机实现的方法600可以包括由操作地耦合到处理器(例如,处理器106、量子处理器等)的系统(例如,经由微服务生成系统102和/或收集组件202)收集在单体式应用程序上执行的测试用例(例如,使用单体式应用程序(例如,单体式企业应用程序)执行的业务功能测试用例)的运行时跟踪(例如,以上参考图1和图3描述的运行时跟踪)。
在604,计算机实现的方法600可以包括由系统(例如,经由微服务生成系统102)训练模型(例如,模型组件108、模型400等)以基于运行时跟踪来学习在单体式应用程序中的类的聚类分配(例如,Java类的聚类分配和/或图嵌入)。
在606,计算机实现的方法600可以包括由系统(例如,经由微服务生成系统102和/或聚类组件110)采用模型来基于聚类分配生成类的聚类,以识别单体式应用程序的一个或多个微服务。
图7示出了根据本文所述的一个或多个实施例的可以促进基于运行时跟踪从单体式应用程序生成微服务的示例非限制性计算机实现的方法700的流程图。为了简洁,省略了在各个实施例中采用的相同元件和/或过程的重复描述。
在702,计算机实现的方法700可以包括(例如,经由微服务生成系统102)训练模型(例如,模型组件108、模型400等),以基于使用单体式应用程序执行的业务功能测试用例的运行时跟踪(例如,以上参考图1和图3描述的运行时跟踪)来学习该单体式应用程序(例如,单体企业应用)中的Java类的聚类分配和/或图嵌入。
在704,计算机实现的方法700可以包括(例如,经由微服务生成系统102和/或聚类组件110)采用模型来基于聚类分配和/或图嵌入生成Java类的聚类。
在706,计算机实现的方法700可以包括(例如,经由微服务生成系统102、模型组件108和/或聚类组件110)确定是否识别出单体式应用程序的一个或多个潜在的微服务候选。例如,参考图1和上述示例交易应用程序,聚类组件110可以采用模型组件108的训练版本来从因果序列生成一个或多个正样本对,其中这样的一个或多个正样本对可以构成单体式应用程序的一个或多个潜在微服务候选。
如果在706确定识别出了单体式应用程序的一个或多个潜在的微服务候选,则在708,计算机实现的方法700可以包括基于单体式应用程序的数据依赖图和/或静态调用图(例如,上面参考图1、图2和/或图3描述的数据依赖图和/或静态调用图)(例如,经由细化组件206)来细化一个或多个潜在的微服务候选,以识别单体式应用程序的微服务。
如果在706确定未识别出单体式应用程序的一个或多个潜在的微服务候选,则在710,计算机实现的方法700可以包括(例如,经由微服务生成系统102和/或模型组件108)修改模型所使用的窗口大小(例如,上面参考图1描述的可以用于生成可以构成单体式应用程序的一个或多个潜在的微服务候选的一个或多个正样本对的窗口大小)和/或(例如,经由微服务生成系统102和/或收集组件202)使用单体式应用程序执行不同的业务功能测试用例(例如,不同于上面参考图1描述的业务功能测试用例)。例如,在710,计算机实现的方法700可以包括将模型使用的窗口大小从例如3的窗口大小修改为例如4的窗口大小。
在712,计算机实现的方法700可以包括(例如,经由微服务生成系统102)重新训练模型,以基于在710执行的不同业务功能测试用例的运行时跟踪和/或修改的窗口大小来学习在单体式应用程序中的Java类的聚类分配和/或图嵌入。
为了解释的简单起见,将计算机实现的方法描绘和描述为一系列动作。可以理解和明白,本发明不受所示动作和/或动作次序的限制,例如,动作可以按各种次序和/或并发地发生,并且可以与本文未呈现和描述的其它动作一起发生。此外,并非所有示出的动作都是实现根据所公开的主题的计算机实现的方法所必需的。另外,本领域技术人员将理解和明白,计算机实现的方法可以替换地经由状态图或事件被表示为一系列相互关联的状态。另外,还应当理解,下文中以及贯穿本说明书所公开的计算机实现的方法能够被存储在制品上,以便于将这些计算机实现的方法传输和转移到计算机。如本文所使用的术语制品旨在涵盖可从任何计算机可读设备或存储介质访问的计算机程序。
为了提供所公开的主题的各个方面的上下文,图8以及以下讨论旨在提供对其中可实现所公开的主题的各个方面的合适环境的一般描述。图8示出了其中可便于此处所描述的一个或多个实施例的示例、非限制性操作环境的框图。为了简洁,省略了在这里描述的其它实施例中采用的类似元件的重复描述。
参考图8,用于实现本公开的各方面的合适的操作环境800还可包括计算机812。计算机812还可以包括处理单元814、系统存储器816和系统总线818。系统总线818将包括但不限于系统存储器816的系统组件耦合到处理单元814。处理单元814可以是各种可用处理器中的任一种。双微处理器和其它多处理器体系结构也可用作处理单元814。系统总线818可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用任何各种可用总线体系结构的局部总线,这些总线体系结构包括但不限于工业标准体系结构(ISA)、微通道体系结构(MSA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、火线(IEEE 1394)、和小型计算机系统接口(SCSI)。
系统存储器816还可以包括易失性存储器820和非易失性存储器822。基本输入/输出系统(BIOS)包含诸如在启动时在计算机812内的元件之间传输信息的基本例程,它被存储在非易失性存储器822中。计算机812还可以包括可移动/不可移动、易失性/非易失性计算机存储介质。例如,图8示出了磁盘存储器824。磁盘存储器824还可以包括但不限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或记忆棒之类的设备。磁盘存储器824还可以包括单独的存储介质或与其它存储介质结合的存储介质。为了便于将磁盘存储器824连接到系统总线818,通常使用可移动或不可移动接口,诸如接口826。图8还描绘了充当用户和在合适的操作环境800中描述的基本计算机资源之间的中介的软件。这样的软件还可以包括例如操作系统828。操作系统828可以存储在磁盘存储器824上,用于控制和分配计算机812的资源。
系统应用程序830利用操作系统828通过例如存储在系统存储器816或盘存储824中的程序模块832和程序数据834对资源的管理。应当理解,本公开可以用各种操作系统或操作系统的组合来实现。用户通过输入设备836向计算机812输入命令或信息。输入设备836包括但不限于诸如鼠标、跟踪球、指示笔、触摸垫等定点设备、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、数码摄像机、web相机等等。这些和其它输入设备通过系统总线818经由接口端口838连接到处理单元814。接口端口838包括,例如,串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备840使用与输入设备836相同类型的端口中的一些。因此,例如,USB端口可用于向计算机812提供输入,并从计算机812向输出设备840输出信息。提供输出适配器842以说明在其它输出设备840中存在一些需要特殊适配器的输出设备840,如监视器、扬声器和打印机。作为示例而非限制,输出适配器842包括提供输出设备840与系统总线818之间的连接手段的视频卡和声卡。应当注意,其它设备和/或设备的系统提供输入和输出能力,诸如远程计算机844。
计算机812可以使用到一个或多个远程计算机,如远程计算机844的逻辑连接在网络化环境中操作。远程计算机844可以是计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或其它常见的网络节点等,并且通常还可包括相对于计算机812所描述的许多或所有元件。为了简洁起见,仅存储器存储设备846与远程计算机844一起示出。远程计算机844通过网络接口848逻辑连接到计算机812,然后通过通信连接850物理连接。网络接口848包括有线和/或无线通信网络,例如局域网(LAN)、广域网(WAN)、蜂窝网络等。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环等。WAN技术包括,但不限于,点对点链路、像综合业务数字网(ISDN)及其变体那样的电路交换网络、分组交换网络、以及数字用户线(DSL)。通信连接850是指用于将网络接口848连接到系统总线818的硬件/软件。虽然为了清楚地说明,通信连接850被示出在计算机812内部,但是它也可以在计算机812外部。仅出于示例性目的,用于连接到网络接口848的硬件/软件还可以包括内部技术和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
现在参考图9,示出了说明性云计算环境950。如图所示,云计算环境950包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点910,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话954A、台式计算机954B、膝上型计算机954C和/或汽车计算机系统954N。尽管在图9中未示出,但是云计算节点910还可以包括量子平台(例如,量子计算机、量子硬件、量子软件等),云消费者使用的本地计算设备可以与该量子平台通信。节点910可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境950提供云消费者不需要为其维护本地计算设备上的资源的基础设施、平台和/或软件即服务。应当理解,图9中所示的计算设备954A-N的类型仅旨在说明,并且计算节点910和云计算环境950可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图10,示出了由云计算环境950(图9)提供的一组功能抽象层。应当预先理解,图10中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层1060包括硬件和软件组件。硬件组件的示例包括:主机1061;基于RISC(精简指令集计算机)架构的服务器1062;服务器1063;刀片服务器1064;存储装置1065;以及网络和联网组件1066。在一些实施例中,软件组件包括网络应用服务器软件1067、数据库软件1068、量子平台路由软件(图10中未示出)和/或量子软件(图10中未示出)。
虚拟化层1070提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器1071;虚拟存储器1072;虚拟网络1073,包括虚拟专用网络;虚拟应用程序和操作系统1074;以及虚拟客户端1075。
在一个示例中,管理层1080可以提供以下描述的功能。资源供应1081提供对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价1082在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户1083为消费者和系统管理员提供对云计算环境的访问。服务水平管理1084提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行1085提供根据SLA预期未来需求的云计算资源的预安排和采购。
工作负载层1090提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的非限制性示例包括:地图和导航1091;软件开发和生命周期管理1092;虚拟课堂教育交付1093;数据分析处理1094;交易处理1095;以及微服务生成软件1096。
本发明可以是任何可能的技术细节集成水平的系统、方法、装置和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储媒质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储媒质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储媒质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储媒质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
尽管以上在运行在一个和/或多个计算机上的计算机程序产品的计算机可执行指令的一般上下文中描述了本主题,但是本领域的技术人员将认识到,本公开也可以结合其它程序模块来实现或可以结合其它程序模块来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员可以理解,本发明的计算机实现的方法可以用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及计算机、手持式计算设备(例如,PDA、电话)、基于微处理器的或可编程的消费或工业电子产品等。所示的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。然而,本公开的一些方面,如果不是所有方面,可以在独立计算机上实践。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。例如,在一个或多个实施例中,计算机可执行组件可以从存储器执行,该存储器可以包括一个或多个分布式存储器单元或由一个或多个分布式存储器单元组成。如本文所用,术语“存储器”和“存储器单元”可互换。此外,本文描述的一个或多个实施例可以以分布式方式执行计算机可执行组件的代码,例如,多个处理器组合或协同工作以执行来自一个或多个分布式存储器单元的代码。如本文所使用的,术语“存储器”可以包含在一个位置处的单个存储器或存储器单元或者在一个或多个位置处的多个存储器或存储器单元。
如本申请中所使用的,术语“组件”、“系统”、“平台”、“接口”等可以指代和/或可以包括计算机相关的实体或与具有一个或多个特定功能的操作机器相关的实体。这里公开的实体可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。在另一示例中,相应组件可从其上存储有各种数据结构的各种计算机可读介质执行。这些组件可以经由本地和/或远程进程进行通信,例如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件经由该信号与本地系统、分布式系统中的另一个组件进行交互和/或通过诸如因特网之类的网络与其它系统进行交互)。作为另一个示例,组件可以是具有由电气或电子电路操作的机械部件提供的特定功能的装置,该电气或电子电路由处理器执行的软件或固件应用程序操作。在这种情况下,处理器可以在装置的内部或外部,并且可以执行软件或固件应用的至少一部分。作为又一示例,组件可以是通过电子组件而不是机械部件来提供特定功能的装置,其中电子组件可以包括处理器或其他装置以执行至少部分地赋予电子组件的功能的软件或固件。在一方面,组件可经由虚拟机来仿真电子组件,例如在云计算系统内。
此外,术语“或”旨在表示包含性的“或”而不是排他性的“或”。也就是说,除非另外指定,或者从上下文中清楚,否则“X采用A或B”旨在表示任何自然的包含性排列。也就是说,如果X使用A;X采用B;或者X采用A和B两者,则在任何前述实例下都满足“X采用A或B”。此外,除非另外指定或从上下文中清楚是指单数形式,否则如在本说明书和附图中使用的冠词“一个(a)”和“一个(an)”一般应被解释为表示“一个或多个”。如本文所使用的,术语“示例”和/或“示例性的”用于表示用作示例、实例或说明。为了避免疑惑,本文公开的主题不受这些示例限制。此外,本文中描述为“示例”和/或“示例性的”的任何方面或设计不一定被解释为比其它方面或设计优选或有利,也不意味着排除本领域普通技术人员已知的等效示例性结构和技术。
如在本说明书中所采用的,术语“处理器”可以指基本上任何计算处理单元或设备,包括但不限于单核处理器;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;平行平台;以及具有分布式共享存储器的并行平台。另外,处理器可以指被设计为执行本文描述的功能的集成电路、专用集成电路(ASIC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑控制器(PLC)、复杂可编程逻辑器件(CPLD)、分立门或晶体管逻辑、分立硬件组件或其任意组合。此外,处理器可以采用纳米级架构,例如但不限于基于分子和量子点的晶体管、开关和门,以便优化空间使用或增强用户设备的性能。处理器也可以实现为计算处理单元的组合。在本公开中,诸如“存储”、“数据库”以及与组件的操作和功能相关的基本上任何其他信息存储组件之类的术语被用来指代“存储器组件”、在“存储器“中包含的实体”或包括存储器的组件。应了解,本文所描述的存储器和/或存储器组件可为易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。作为说明而非限制,非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)、闪存或非易失性随机存取存储器(RAM)(例如,铁电RAM(FeRAM))。易失性存储器可包括RAM,RAM可用作外部高速缓存存储器,例如。作为说明而非限制,RAM可以许多形式获得,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus RAM(DRRAM)、直接Rambus动态RAM(DRDRAM)和Rambus动态RAM(RDRAM)。此外,本文所公开的系统或计算机实现的方法的存储器组件旨在包括但不限于包括这些和任何其他合适类型的存储器。
以上描述的内容仅包括系统和计算机实现的方法的示例。当然,不可能为了描述本公开而描述组件或计算机实现的方法的每个可想到的组合,但是本领域的普通技术人员可以认识到,本公开的许多进一步的组合和置换是可能的。此外,就在具体实施方式、权利要求书、附录和附图中使用术语“包括(includes)”、“具有(has)”、“拥有(possesses)”等来说,这些术语旨在以与术语“包含”在权利要求书中用作过渡词时所解释的类似的方式为包含性的。
已经出于说明的目的呈现了对各种实施例的描述,但是不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
Claims (17)
1.一种系统,包括:
存储器,其存储计算机可执行组件;以及
处理器,其执行存储在所述存储器中的所述计算机可执行组件,其中所述计算机可执行组件包括:
模型组件,其基于执行的测试用例的运行时跟踪来学习单体式应用程序中的类的聚类分配;以及
聚类组件,所述聚类组件采用所述模型组件来基于所述聚类分配生成所述类的聚类,以标识所述单体式应用程序的一个或多个微服务。
2.根据权利要求1所述的系统,其中所述计算机可执行组件包括:
细化组件,所述细化组件基于所述单体式应用程序的数据依赖性或所述单体式应用程序的静态调用图中的至少一个来细化所述一个或多个微服务。
3.根据权利要求1所述的系统,其中所述计算机可执行组件包括:
第二模型组件,其基于所述执行的测试用例的运行时跟踪生成一个或多个因果图,以捕获所述单体式应用程序或所述单体式应用程序中的所述类的聚类分配中的至少一个的一阶时间依赖性或高阶时间依赖性中的至少一个。
4.根据权利要求1所述的系统,其中所述模型组件使用基于所述执行的测试用例的运行时跟踪生成的一个或多个因果图的因果序列,学习所述单体式应用程序中的所述类的聚类分配或图嵌入中的至少一个。
5.根据权利要求1所述的系统,其中所述执行的测试用例包括在运行时跟踪中提供所述单体式应用程序的业务功能的业务功能测试用例,从而在执行所述单体式应用程序的应用程序现代化时促进所述处理器或所述系统中的至少一个的改进的性能、改进的效率或降低的计算成本中的至少一个。
6.一种计算机实现的方法,包括:
由操作地耦合到处理器的系统训练模型以基于执行的测试用例的运行时跟踪来学习单体式应用程序中的类的聚类分配;以及
由所述系统基于所述聚类分配采用所述模型来生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。
7.根据权利要求6所述的计算机实现的方法,还包括:
由所述系统基于所述单体式应用程序的数据依赖性或所述单体式应用程序的静态调用图中的至少一个来细化所述一个或多个微服务。
8.根据权利要求6所述的计算机实现的方法,还包括:
由所述系统基于所述执行的测试用例的运行时跟踪生成一个或多个因果图,以捕获所述单体式应用程序或所述单体式应用程序中的类的聚类分配中的至少一个的一阶时间依赖性或高阶时间依赖性中的至少一个。
9.根据权利要求6所述的计算机实现的方法,其中所述训练包括:
由所述系统使用基于所述执行的测试用例的运行时跟踪生成的一个或多个因果图的因果序列,训练所述模型以学习所述单体式应用程序中的类的聚类分配或图嵌入中的至少一个。
10.根据权利要求6所述的计算机实现的方法,其中所述执行的测试用例包括在运行时跟踪中提供所述单体式应用程序的业务功能的业务功能测试用例,从而在执行所述单体式应用程序的应用程序现代化时促进所述处理器或所述系统中的至少一个的改进的性能、改进的效率或降低的计算成本中的至少一个。
11.一种促进基于运行时跟踪从单体式应用程序生成微服务的过程的计算机程序产品,所述计算机程序产品包括其上具有程序指令的计算机可读存储介质,所述程序指令可由处理器执行以使所述处理器:
由所述处理器基于执行的测试用例的运行时跟踪来训练模型以学习单体式应用程序中的类的聚类分配;以及
由所述处理器采用所述模型来基于所述聚类分配生成所述类的聚类,以识别所述单体式应用程序的一个或多个微服务。
12.根据权利要求11所述的计算机程序产品,其中所述程序指令还可由所述处理器执行以使所述处理器:
由所述处理器基于所述单体式应用程序的数据依赖性或所述单体式应用程序的静态调用图中的至少一个来细化所述一个或多个微服务。
13.根据权利要求11所述的计算机程序产品,其中所述程序指令还可由所述处理器执行以使所述处理器:
由所述处理器基于所述执行的测试用例的运行时跟踪生成因果关系图,以捕获所述单体式应用程序或所述单体式应用程序中的类的聚类分配中的至少一个的一阶时间依赖性或高阶时间依赖性中的至少一个。
14.根据权利要求11所述的计算机程序产品,其中所述程序指令还可由所述处理器执行以使所述处理器:
由所述处理器使用基于所述执行的测试用例的运行时跟踪生成的一个或多个因果图的因果序列,训练所述模型以学习所述单体式应用程序中的类的聚类分配或图嵌入中的至少一个。
15.根据权利要求11所述的计算机程序产品,其中所述已执行的测试用例包括在所述运行时跟踪中提供所述单体式应用程序的业务功能的业务功能测试用例。
16.根据权利要求1所述的系统,其中所述计算机可执行组件还包括收集组件,其收集在所述单体式应用程序上执行的测试实例的运行时跟踪。
17.根据权利要求6所述的计算机实现的方法,还包括由操作地耦合到处理器的系统收集在单体式应用程序上执行的测试用例的运行时跟踪。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/855,565 | 2020-04-22 | ||
US16/855,565 US11176027B1 (en) | 2020-04-22 | 2020-04-22 | Generation of microservices from a monolithic application based on runtime traces |
PCT/IB2021/052424 WO2021214569A1 (en) | 2020-04-22 | 2021-03-24 | Generation of microservices from a monolithic application based on runtime traces |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115151897A true CN115151897A (zh) | 2022-10-04 |
CN115151897B CN115151897B (zh) | 2023-11-10 |
Family
ID=78222354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180016299.8A Active CN115151897B (zh) | 2020-04-22 | 2021-03-24 | 基于运行时跟踪从单体式应用程序生成微服务 |
Country Status (10)
Country | Link |
---|---|
US (3) | US11176027B1 (zh) |
JP (1) | JP2023522604A (zh) |
KR (1) | KR20220144413A (zh) |
CN (1) | CN115151897B (zh) |
AU (1) | AU2021260154B2 (zh) |
CA (1) | CA3173078A1 (zh) |
DE (1) | DE112021000467T5 (zh) |
GB (1) | GB2610120A (zh) |
IL (1) | IL296108A (zh) |
WO (1) | WO2021214569A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311801A (zh) * | 2023-11-27 | 2023-12-29 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11242019B2 (en) * | 2018-10-10 | 2022-02-08 | GM Global Technology Operations LLC | Cooling and lubrication system for a motor vehicle drive unit |
US11960858B2 (en) * | 2019-08-29 | 2024-04-16 | Siemens Aktiengesellschaft | Performance based system configuration as preprocessing for system peformance simulation |
US11449407B2 (en) * | 2020-05-28 | 2022-09-20 | Bank Of America Corporation | System and method for monitoring computing platform parameters and dynamically generating and deploying monitoring packages |
US11467826B1 (en) * | 2020-12-03 | 2022-10-11 | Amazon Technologies, Inc. | Automated extraction of isolated nodes during source code refactoring |
US11500628B1 (en) * | 2020-12-03 | 2022-11-15 | Amazon Technologies, Inc. | Isolated code detection from application code analysis |
US11494418B2 (en) * | 2021-01-28 | 2022-11-08 | The Florida International University Board Of Trustees | Systems and methods for determining document section types |
US11853753B1 (en) * | 2021-08-23 | 2023-12-26 | Amazon Technologies, Inc. | Detection, presentation, and resolution of bottlenecks in monolith decomposition |
US20230105304A1 (en) * | 2021-10-01 | 2023-04-06 | Healtech Software India Pvt. Ltd. | Proactive avoidance of performance issues in computing environments |
US11822466B2 (en) * | 2021-12-21 | 2023-11-21 | Dspace Gmbh | Creating and testing a control-device program |
US11860980B2 (en) * | 2022-01-05 | 2024-01-02 | International Business Machines Corporation | Cognitive method to split monolithic architecture into microservice architecture |
CN114610614A (zh) * | 2022-03-08 | 2022-06-10 | 北京京航计算通讯研究所 | 一种可编程逻辑器件封装模块的安全性测试方法和系统 |
CN114866598B (zh) * | 2022-04-29 | 2023-09-19 | 安徽宝葫芦信息科技集团股份有限公司 | 基于微服务架构和usb接口的模块动态扩展、授权系统 |
CN117539433A (zh) * | 2023-11-02 | 2024-02-09 | 北京航空航天大学 | 一种基于模型驱动架构的微服务设计方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180113799A1 (en) * | 2016-10-24 | 2018-04-26 | Ca, Inc. | Model generation for model-based application testing |
CN108279926A (zh) * | 2018-01-10 | 2018-07-13 | 浙江网新恒天软件有限公司 | 一种单体应用微服务化的方法 |
US20190108067A1 (en) * | 2017-10-11 | 2019-04-11 | International Business Machines Corporation | Decomposing monolithic application into microservices |
CN109947547A (zh) * | 2019-03-14 | 2019-06-28 | 科学出版社成都有限责任公司 | 基于云计算的微服务构架方法 |
US20190334789A1 (en) * | 2018-04-26 | 2019-10-31 | EMC IP Holding Company LLC | Generating Specifications for Microservices Implementations of an Application |
CN110730951A (zh) * | 2017-04-28 | 2020-01-24 | Lz实验室有限公司 | 基于单体遗留应用的微服务的容器化部署 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843909B2 (en) | 2001-05-11 | 2014-09-23 | Ca, Inc. | Method and apparatus for transforming legacy software applications into modern object-oriented distributed systems |
US20070067756A1 (en) | 2005-09-20 | 2007-03-22 | Trinity Millennium Group, Inc. | System and method for enterprise software portfolio modernization |
US7672957B2 (en) | 2006-02-10 | 2010-03-02 | Make Technologies, Inc. | User interface configured to display mechanical fabric and semantic model of a legacy computer application generated, graphical view navigating links between mechanical nodes and semantic nodes based on relevant business rules |
WO2007098615A1 (en) | 2006-03-03 | 2007-09-07 | Christian Germano Cotichini | Legacy application modernization by capturing, processing and analysing business processes |
US20090037483A1 (en) | 2006-10-26 | 2009-02-05 | Christensen Steven J | System, Method and Apparatus for Dynamically Expanding the Functionality of Legacy Systems |
US7996413B2 (en) | 2007-12-21 | 2011-08-09 | Make Technologies, Inc. | Data modernization system for legacy software |
WO2011053729A1 (en) | 2009-10-28 | 2011-05-05 | Advanced Business Link Corporation | Role-based modernization of legacy applications |
US8930919B2 (en) | 2012-09-25 | 2015-01-06 | The Boeing Company | Modernization of legacy software systems based on modeled dependencies |
US20130219372A1 (en) * | 2013-03-15 | 2013-08-22 | Concurix Corporation | Runtime Settings Derived from Relationships Identified in Tracer Data |
US10756995B2 (en) | 2015-07-27 | 2020-08-25 | Datagrid Systems, Inc. | Method, apparatus and system for real-time optimization of computer-implemented application operations using machine learning techniques |
US10496935B2 (en) | 2016-03-17 | 2019-12-03 | Accenture Global Solutions Limited | System modernization using machine learning |
US20180088935A1 (en) * | 2016-09-27 | 2018-03-29 | Ca, Inc. | Microservices application configuration based on runtime environment |
US11194558B2 (en) | 2016-10-14 | 2021-12-07 | Accenture Global Solutions Limited | Application migration system |
US10545738B1 (en) * | 2018-07-13 | 2020-01-28 | Lzlabs Gmbh | Containerized deployment of microservices based on monolithic legacy applications |
US10503631B1 (en) | 2017-07-31 | 2019-12-10 | Cisco Technology, Inc. | Runtime intelligence within an integrated development environment |
US10996935B2 (en) | 2018-01-09 | 2021-05-04 | Hcl Technologies Ltd. | Automated technology modernization accelerator |
EP3588279B1 (en) | 2018-06-25 | 2024-02-14 | Tata Consultancy Services Limited | Automated extraction of rules embedded in software application code using machine learning |
US10644970B2 (en) * | 2018-07-11 | 2020-05-05 | Sony Interactive Entertainment LLC | Tracking application utilization of microservices |
US10936658B2 (en) * | 2018-09-28 | 2021-03-02 | International Business Machines Corporation | Graph analytics using random graph embedding |
US10831644B2 (en) * | 2018-10-01 | 2020-11-10 | Villani Analytics LLC | Automation of enterprise software inventory and testing |
CN109714358A (zh) | 2019-01-15 | 2019-05-03 | 广东工业大学 | 一种微服务化的注塑mes云平台 |
US20200285451A1 (en) * | 2019-03-05 | 2020-09-10 | Sap Se | Decoupling microservices from a monolithic application |
CN111857762A (zh) * | 2019-04-30 | 2020-10-30 | 戴尔产品有限公司 | 微服务更新系统 |
US11256604B2 (en) * | 2020-01-24 | 2022-02-22 | Splunk Inc. | Multiple modes of data collection and analysis in a microservices-based architecture |
US11042369B1 (en) * | 2020-02-03 | 2021-06-22 | Architecture Technology Corporation | Systems and methods for modernizing and optimizing legacy source code |
-
2020
- 2020-04-22 US US16/855,565 patent/US11176027B1/en active Active
-
2021
- 2021-03-24 CA CA3173078A patent/CA3173078A1/en active Pending
- 2021-03-24 CN CN202180016299.8A patent/CN115151897B/zh active Active
- 2021-03-24 AU AU2021260154A patent/AU2021260154B2/en active Active
- 2021-03-24 WO PCT/IB2021/052424 patent/WO2021214569A1/en active Application Filing
- 2021-03-24 DE DE112021000467.0T patent/DE112021000467T5/de active Pending
- 2021-03-24 GB GB2217374.4A patent/GB2610120A/en active Pending
- 2021-03-24 IL IL296108A patent/IL296108A/en unknown
- 2021-03-24 JP JP2022562371A patent/JP2023522604A/ja active Pending
- 2021-03-24 KR KR1020227034333A patent/KR20220144413A/ko unknown
- 2021-10-13 US US17/500,299 patent/US11663115B2/en active Active
-
2023
- 2023-04-13 US US18/299,846 patent/US11940904B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180113799A1 (en) * | 2016-10-24 | 2018-04-26 | Ca, Inc. | Model generation for model-based application testing |
CN110730951A (zh) * | 2017-04-28 | 2020-01-24 | Lz实验室有限公司 | 基于单体遗留应用的微服务的容器化部署 |
US20190108067A1 (en) * | 2017-10-11 | 2019-04-11 | International Business Machines Corporation | Decomposing monolithic application into microservices |
CN108279926A (zh) * | 2018-01-10 | 2018-07-13 | 浙江网新恒天软件有限公司 | 一种单体应用微服务化的方法 |
US20190334789A1 (en) * | 2018-04-26 | 2019-10-31 | EMC IP Holding Company LLC | Generating Specifications for Microservices Implementations of an Application |
CN109947547A (zh) * | 2019-03-14 | 2019-06-28 | 科学出版社成都有限责任公司 | 基于云计算的微服务构架方法 |
Non-Patent Citations (2)
Title |
---|
ANFEL SELMADJI 等: "From Monolithic Architecture Style to Microservice one Based on a Semi-Automatic Approach" * |
F. PONCE ET AL.: "Migrating from Monolithic Architecture to Microservices: A Rapid Review" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311801A (zh) * | 2023-11-27 | 2023-12-29 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
CN117311801B (zh) * | 2023-11-27 | 2024-04-09 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Also Published As
Publication number | Publication date |
---|---|
US11176027B1 (en) | 2021-11-16 |
WO2021214569A1 (en) | 2021-10-28 |
AU2021260154B2 (en) | 2024-01-18 |
AU2021260154A1 (en) | 2022-09-29 |
JP2023522604A (ja) | 2023-05-31 |
US20220035732A1 (en) | 2022-02-03 |
US20210334194A1 (en) | 2021-10-28 |
DE112021000467T5 (de) | 2022-11-17 |
KR20220144413A (ko) | 2022-10-26 |
US11663115B2 (en) | 2023-05-30 |
GB202217374D0 (en) | 2023-01-04 |
GB2610120A (en) | 2023-02-22 |
IL296108A (en) | 2022-11-01 |
CA3173078A1 (en) | 2021-10-28 |
US11940904B2 (en) | 2024-03-26 |
US20230251962A1 (en) | 2023-08-10 |
CN115151897B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115151897B (zh) | 基于运行时跟踪从单体式应用程序生成微服务 | |
CN110399983B (zh) | 图形相似度分析 | |
US20200320462A1 (en) | Calculating online social network distance between entities of an organization | |
US11924239B2 (en) | Vulnerability and attack technique association | |
US11915150B2 (en) | Refinement of a predicted event based on explainability data | |
US11544566B2 (en) | Deep learning model insights using provenance data | |
JP2021507356A (ja) | ハイブリッド・クラウドの構成のためのオーケストレーション・エンジン・ブループリント・アスペクトのためのシステム、コンピュータ実行可能な方法、コンピュータ・プログラムおよび記録媒体 | |
US20230177627A1 (en) | Contextual comparison of semantics in conditions of different policies | |
US11551145B2 (en) | Performance based switching of a model training process | |
CN114626535A (zh) | 量子电路优化例程评估和知识库生成 | |
US11551129B2 (en) | Quantum platform routing of a quantum application component | |
US11475297B2 (en) | Cross-domain homophily quantification for transfer learning | |
CN112446493A (zh) | 使用对话系统来学习和推断判断推理知识 | |
US11205048B2 (en) | Contextual disambiguation of an entity in a conversation management system | |
JP7267282B2 (ja) | ハイブリッド・クラウドの構成のためのオーケストレーション・エンジン・ブループリント・アスペクトのためのシステム、コンピュータ実行可能な方法、コンピュータ・プログラムおよび記録媒体 | |
US11526770B2 (en) | Latent computing property preference discovery and computing environment migration plan recommendation | |
CN111406383B (zh) | 用于云计算的方法、系统和计算机可读存储介质 | |
US11681501B2 (en) | Artificial intelligence enabled open source project enabler and recommendation platform | |
US11783226B2 (en) | Model transfer learning across evolving processes | |
US20220230090A1 (en) | Risk assessment of a proposed change in a computing environment | |
US11922285B2 (en) | Dividing training data for aggregating results of multiple machine learning elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |