CN114830091A - 整块应用的微服务分解策略 - Google Patents

整块应用的微服务分解策略 Download PDF

Info

Publication number
CN114830091A
CN114830091A CN202180007343.9A CN202180007343A CN114830091A CN 114830091 A CN114830091 A CN 114830091A CN 202180007343 A CN202180007343 A CN 202180007343A CN 114830091 A CN114830091 A CN 114830091A
Authority
CN
China
Prior art keywords
code
computer
application
disjoint
clusters
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.)
Pending
Application number
CN202180007343.9A
Other languages
English (en)
Inventor
黄珍镐
A.卡利亚
萧晋
M.杰克逊
M.武科维奇
J.罗弗拉诺
S.K.库马拉萨米玛尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN114830091A publication Critical patent/CN114830091A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了便于为整块应用自动推荐微服务分解策略的系统和技术。在不同实施例中,社区检测组件可基于表征整块应用的代码属性图来检测整块应用中的不相交代码集群。在各个方面,代码属性图可以基于整块应用的时间代码演进。在不同实施例中,主题建模组件可基于对应于整块应用的业务文档语料库来识别不相交代码集群的功能目的。在不同实施例中,微服务组件可基于功能目的推荐微服务来替换不相交代码集群。

Description

整块应用的微服务分解策略
背景技术
本公开涉及微服务分解,更具体地,涉及用于整块应用的自动推荐微服务分解策略。
发明内容
以下呈现概述以提供对本发明的一个或多个实施例的基本理解。本概述并不旨在标识关键或重要的要素,或描绘特定实施例的任何范围或权利要求的任何范围。其唯一的目的是以简化的形式呈现概念,作为稍后呈现的更详细描述的序言。在本文描述的一个或多个实施例中,描述了便于用于整块应用的微服务分解策略的自动推荐设备、系统、计算机实现的方法、设备和/或计算机程序产品。
根据一个或多个实施例,提供了一种系统。该系统可以包括存储器,该存储器可以存储计算机可执行部件。该系统可以进一步包括处理器,该处理器可以可操作地耦合到存储器并且可以执行存储在存储器中的计算机可执行组件。在各种实施例中,计算机可执行组件可包括社区检测组件,该社区检测组件可基于表征整块应用的代码属性图来检测该整块应用中的不相交代码集群。在各个实施例中,代码属性图可以基于整块应用的时间代码演进。在不同实施例中,计算机可执行组件可包括主题建模组件,其可基于对应于整块应用的业务文档语料库来识别不相交代码集群的功能目的。在不同实施例中,微服务组件可基于功能目的推荐微服务来替换不相交代码集群。
根据一个或多个实施例,上述系统可以实现为计算机实现的方法。
根据一个或多个实施例,上述系统可以实现为计算机程序产品,用于促进针对整块应用的微服务分解策略的自动推荐。该计算机程序产品可以包括计算机可读存储介质,该计算机可读存储介质具有嵌入其中的程序指令。程序指令可由处理组件执行,这可使处理组件执行不同动作。
根据一个或多个实施例,提供了一种设备。该设备可包括存储器,该存储器可存储计算机可执行组件。该设备可以进一步包括处理器,该处理器可以可操作地耦合到存储器并且可以执行存储在存储器中的计算机可执行组件。在不同实施例中,计算机可执行组件可包括社区检测组件,该社区检测组件可基于与整块应用相对应的代码属性图来标识该整块应用中的微服务分解的候选者。在不同实施例中,计算机可执行组件可以包括主题建模组件,该主题建模组件可以基于对应于整块应用的业务文档来识别分别由所识别的候选者执行的功能。
根据一个或多个实施例,上述设备可以实现为计算机实现的方法。
根据一个方面,提供一种系统,包括:存储器,其存储计算机可执行组件;以及处理器,其可操作地耦合到所述存储器,所述处理器执行存储在所述存储器中的所述计算机可执行组件,其中所述计算机可执行组件包括:社区检测组件,其基于表征所述整块应用的代码属性图来检测所述整块应用中的不相交代码集群;主题建模组件,其基于与所述整块应用相对应的业务文档语料库来标识所述不相交代码集群的功能目的;以及微服务组件,其基于所述功能目的推荐微服务来替换所述不相交代码集群。
根据另一方面,提供一种计算机实现的方法,包括:由操作地耦合到处理器的设备基于表征整块应用的代码属性图来检测该整块应用中的不相交代码集群;由所述设备基于对应于所述整块应用的业务文档语料库来识别所述不相交代码集群的功能目的;以及由所述设备基于所述功能目的推荐微服务来替换所述不相交代码集群。
根据另一方面,提供了一种用于促进针对整块应用的微服务分解策略的自动推荐的计算机程序产品,所述计算机程序产品包括计算机可读存储器,所述计算机可读存储器具有随其包含的程序指令,所述程序指令可由处理组件执行以使处理组件:基于表征整块应用的代码属性图,检测整块应用中的不相交代码集群;基于与所述整块应用相对应的业务文档语料库,识别所述不相交代码集群的功能目的;以及基于所述功能目的,推荐微服务来替换所述不相代码集群。
根据另一方面,提供了一种设备,包括:可操作地耦合到存储器的处理器,其执行存储在所述存储器中的计算机可执行组件,其中,所述计算机可执行组件包括:社区检测组件,其基于与整块应用相对应的代码属性图来标识所述整块应用中的微服务分解的候选者;以及主题建模组件,所述主题建模组件基于对应于所述整块应用的业务文档来识别分别由所识别的候选者执行的功能。
根据另一方面,提供了一种计算机实现的方法,包括:由通信地耦合到处理器的设备基于对应于整块应用的代码属性图来标识该整块应用中的微服务分解的候选者;以及由所述设备基于对应于所述整块应用的业务文档来识别分别由所识别的候选者执行的功能。
附图说明
现在将参考附图仅通过示例的方式来描述本发明的实施例,在附图中:
图1示出了根据本文描述的一个或多个实施例的促进整块应用的微服务分解策略的自动推荐的示例非限制性系统的框图。
图2示出了根据本文描述的一个或多个实施例的促进用于整块应用的微服务分解策略的自动推荐的示例非限制性计算机实现方法的高级流程图。
图3示出根据本文描述的一个或多个实施例的包括代码属性图的示例非限制性系统的框图,所述代码属性图便于为整块应用自动推荐微服务分解策略。
图4示出根据本文描述的一个或多个实施例的包括社区检测算法的示例非限制性系统的框图,所述社区检测算法促进针对整块应用的微服务分解策略的自动推荐。
图5示出了根据本文所述的一个或多个实施例的促进整块应用的微服务分解策略的自动推荐的示例非限制性代码属性图中的示例非限制性不相交代码集群的框图。
图6示出了根据本文所述的一个或多个实施例的包括便于为整块应用自动推荐微服务分解策略的主题建模算法的示例非限制性系统的框图。
图7示出了根据本文描述的一个或多个实施例的包括推荐微服务的示例非限制性系统的框图,所述推荐微服务促进整块应用的微服务分解策略的自动推荐。
图8示出了根据本文描述的一个或多个实施例的高级框图,其描绘了用于促进整块应用的微服务分解策略的自动推荐的示例性工作流程。
图9示出了根据本文描述的一个或多个实施例的包括反馈组件的示例非限制性系统的框图,该反馈组件有助于整块应用的微服务分解策略的自动推荐。
图10示出了根据本文描述的一个或多个实施例的包括相关性模式存储部件的示例非限制性系统的框图,所述相关性模式存储部件便于为整块应用自动推荐微服务分解策略。
图11示出根据本文描述的一个或多个实施例的促进整块应用的微服务分解策略的自动推荐的示例非限制性计算机实现的方法的流程图。
图12示出了根据本文描述的一个或多个实施例的示例、非限制性计算机实现的方法的流程图,该方法包括扩充有助于微服务分解策略的自动推荐的用于整块应用的代码属性图。
图13示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现的方法的流程图,该方法包括接收有助于微服务分解策略的自动推荐的用于整块应用的用户反馈。
图14示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现的方法的流程图,该方法包括存储有助于微服务分解策略的自动推荐的用于整块应用的依赖关系模式。
图15示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现方法的流程图,所述方法包括替换便于针对整块应用自动推荐微服务分解策略的不相交代码集群。
图16示出了根据本文描述的一个或多个实施例的有助于微服务分解策略的自动推荐的用于整块应用的示例非限制性计算机实现的方法的流程图。
图17示出了根据本文描述的一个或多个实施例的示例非限制性计算机实现的方法的流程图,该方法包括修改有助于微服务分解策略的自动推荐的用于整块应用的代码属性图。
图18示出了可以促进本文描述的一个或多个实施例的示例非限制性操作环境的框图。
具体实施方式
以下详细说明仅是说明性的并且不旨在限制实施例和/或实施例的应用或使用。此外,无意受前述背景或摘要部分或详细说明部分中提供的任何明示或暗示信息的约束。
现在参考附图描述一个或多个实施例,其中相同的附图标记在全文中用于指代相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对一个或多个实施例的更透彻理解。然而,明显的是,在各种情况下,可以在没有这些具体细节的情况下实施一个或多个实施例。
遗留应用可为被认为是旧的、过时的和/或需要更新的软件(例如,计算机可执行程序和/或计算机可执行应用),但出于许多原因(例如,因为遗留应用提供满意的结果,因为替换遗留应用和/或重新训练遗留应用的用户/运营商所涉及的成本非常高,等等)仍然处于使用中。传统应用通常构建为整块架构。整块应用可以是独立于其他计算应用并且将有助于特定功能所需的所有和/或基本上所有计算机可执行组件和/或计算机可执行指令组合成单个计算机程序和/或计算机平台的自包含应用。这些整块应用通常太大和/或繁琐以至于无法适应云原生环境,并且它们通常没有展现出云原生应用所提供的益处(例如,可扩展性、持续部署、无状态部署、灵活性等)。在不同情形中,将整块应用(例如,无论是否是传统应用)完全和/或部分地分解成一个或多个微服务可能是有益的。微服务可以是执行特定功能和/或业务任务的可独立开发和/或可部署的子应用。例如,如果整块应用是执行动作A、B和C的计算机程序,则该整块应用可被完全分解成三个微服务:执行动作A的第一微服务、执行动作B的第二微服务和执行动作C的第三微服务。在一些情况下,整块应用可被部分地分解,使得整块应用的仅一部分被微服务替换,并且整块应用的剩余部分被保留和/或仍然被使用(例如,将上述示例性整块应用分解成仅一个或两个微服务而不是三个)。在不同示例中,微服务可以是基于云的。在不同情形中,整块应用的微服务分解可以提高整块应用的的性能(例如,解耦的组件、增加的复杂性、不可变的架构、更快的计算、更短的开发时间框架、最小化的依赖性和/或共享的关注、更小和/或更集中的应用程序、数据合同、和/或在相关实体之间的没有这些等等)。
然而,将整块应用分解成一个或多个微服务可能是艰巨的任务。通常,这种分解过于复杂和/或耗时而无法有效地手动进行。由此,用于促进微服务分解的自动化系统/技术是有益的。
尽管存在一些微服务分解的自动化系统/技术,但是它们通常仅基于整块应用的调用图,利用简单的启发法来对代码类和方法进行聚类和合并。其他现有的系统/技术仅仅利用过程挖掘和过程日志文件来推荐替代的切片解决方案。还有其他现有系统/技术仅利用源代码的自然语言处理来标识分解的候选者,这可能是不是最理想的,因为自然语言处理依赖于良好的编程风格和最佳实践,而这在整块应用的源代码中并不常见。
这样的现有系统/技术存在许多缺点。例如,此类现有系统/技术不使用统计方法来确定整块应用的语义结构(例如,应用的源代码的结构),不考虑整块应用的数据依赖性和/或控制依赖性,并且不利用整块应用的时间代码演进(例如,应用代码随时间的改变)来标识微服务分解的候选者。此外,这样的系统/技术仅集中于整块应用的源代码;当推荐合适的微服务来替换所标识的代码集群时,这些系统/技术不利用与整块应用相关联的业务文档来确定和/或推断与所标识的代码集群相关联的功能主题和/或功能目的。本发明的各个实施例可以解决这些问题中的一个或多个。
注意,尽管本发明的一个或多个实施例对现代化传统整块应用特别有用,但是本发明的不同实施例可以用于为非传统整块应用(例如,不被认为是旧的、过时的和/或需要更新的整块应用)推荐和/或实现微服务分解策略。
本文描述的实施例包括有助于针对整块应用的微服务分解策略的自动推荐和/或实现的系统、计算机实现的方法、设备和/或计算机程序产品。在各个实施例中,整块应用可以与技术文档语料库(例如,源代码、二进制代码、部署脚本、关于运行实例的统计信息、不同变体/配置、代码储存库等)和业务文档语料库(例如,设计文档、用户指南/手册、训练指南/手册、故障排除指南/手册、README页面、维基页面、GitHub页面等)相关联。
在各个实施例中,图组件可以基于技术文档语料库来生成表征整块应用的代码属性图(例如,图组件可以分析源代码和/或对应于整块应用的脚本以便构造代码属性图)。代码属性图可以是由与整块应用相对应的抽象语法树、与整块应用相对应的控制流程图、以及与整块应用相对应的程序依赖图的组合产生的联合数据结构。即,代码属性图可以是同时提供整块应用的结构、控制流和数据依赖性的全面视图的多图。这样的联合数据结构可以用于分析整块应用。
在各个实施例中,图组件可以基于整块应用的时间代码演进来增强和/或修改代码属性图(例如,增强和/或修改代码属性图中的边权重和/或边属性、增强和/或修改代码属性图中的节点权重和/或节点属性、添加和/或减去代码属性图中的边和/或节点等)。在各个实施例中,时间代码演进可以是对整块应用的源代码的改变的时间线和/或时序,如在与整块应用相对应的代码储存库中记录和/或存储的。在各种情况下,在相同和/或基本上类似时间改变的代码部分/集群可被推断为比在基本上不同时间改变的代码部分/集群彼此更密切相关和/或更紧密地耦合。
例如,假设整块应用的源代码包含代码分组A、代码分组B和代码分组C。然后,整块应用的代码属性图可以包含对应于代码分组A的节点、对应于代码分组B的其他节点、以及对应于代码分组C的其他节点。假设代码储存库示出代码分组A和代码分组C由用户/操作者在给定时间段中的相同和/或基本相同的时间被改变/更新(例如,对于给定两周时间段,代码分组A和代码分组C两者都被分别改变五次,每一次在基本相同的时间和/或在同一天)。进一步,假设代码储存库示出代码分组B根本不改变和/或在与代码分组A和代码分组C基本上不同的时间(例如,在不同的天)改变。对整块应用的源代码的此类时间改变可指示代码分组A和代码分组C比它们要对代码分组B更紧密地彼此相关。因此,图组件可增强/修改代码属性图以演示该相关性(例如,通过增加表示代码分组A的节点与表示代码分组C的节点之间的边权重、通过增加表示代码分组A的节点与表示代码分组C的节点之间的更多边、通过降低表示代码分组B的节点与表示代码分组A和C的节点之间的边权重、通过减去表示代码分组B的节点与表示代码分组A和C的节点之间的边,等等)。这种扩充可反映以下事实:代码分组A和代码分组C具有足够的内聚性,使得其应一起视为单个代码集群,且代码分组B与其他代码分组足够无关,使得其应单独视为其自身的独立代码集群。
在不同实施例中,社区检测组件可通过任何合适的图论技术来检测代码属性图中的不相交代码集群(例如,在代码属性图基于时间代码演进被增强之后)。在各种情况下,不相交代码集群可被认为是微服务分解的候选者(例如,源代码中潜在地可被微服务替换的部分)。在不同实施例中,不相交代码集群可为整块应用的源代码的任何部分,其表现出预定内聚性水平(例如,使得表示代码属性图中的不相交代码集群的节点彼此充分相关和/或附着以便值得一起视为单个集群)和预定耦合水平(例如,使得表示代码属性图中的不相交代码集群的节点与表示整块应用中的其他码集群的其他节点充分断开、隔离和/或独立,以便与其他集群分开对待)的任何部分。在多种实施例中,这种预定阈值/内聚性和/或耦合水平可由用户/操作者根据需要选择。
如上所述,在不同情况下,整块应用的时间代码演进可提供有关整块应用的源代码的各个部分的相互关系的有价值的信息。通过基于这样的信息扩充代码属性图,代码属性图的社区检测可被更准确地和/或有效地执行(例如,当代码属性图基于时间代码演进时,代码属性图可更准确地指示源代码的哪些部分彼此更密切地和/或紧密地相关,这可导致更准确的社区检测和/或社区集群)。
在各种实施例中,主题建模组件可基于整块应用的业务文档语料库通过任何合适的主题建模技术来标识不相交代码集群的功能目的(例如,业务任务、业务功能、业务能力、和/或由不相交代码集群执行和/或促进的业务动作)。例如,主题建模组件可分析与整块应用相关的设计文档、用户指南/手册、README文件、Wiki文件、GitHub文件等,以便确定不相交代码集群执行什么任务、功能、能力和/或动作。例如,业务文档语料库可包括自然语言文本,该自然语言文本解释和/或建议整块应用的源代码的各个部分做什么(例如,一个代码集群可认证用户,另一代码集群可执行推荐功能,又一代码集群可促进计费信息的收集等)。在不同情况下,主题建模组件可分析此类信息以便确定由检测到的不相交代码集群执行的功能(例如,不相交代码集群的功能目的)。
在不同实施例中,微服务组件可基于功能目的推荐微服务来替换不相交代码集群(例如,不相交代码集群可由促成/执行与不相交代码集群相同和/或相似的任务、功能、能力和/或动作的微服务来替换)。在各种情况下,微服务组件的推荐可被认为是微服务分解策略(例如,微服务组件可为用户/操作者突出显示可被替换的整块应用的源代码的部分,并可进一步建议应获得哪些微服务来替换源代码的那些部分)。在不同实施例中,微服务组件可实际执行和/或实现此类分解策略(例如,微服务组件可诸如通过在源代码中的自动删除和/或评论来使不相交代码集群无法运行,并且可调度、排序和/或以其他方式获取推荐的微服务)。
如上所述,促进微服务分解和/或推荐微服务分解策略的现有系统/技术简单地不考虑整块应用的数据依赖性(例如,它们仅使用应用的调用图,而不是代码属性图),不考虑整块应用的源代码如何随时间而改变(例如,它们根本不基于时间代码演进来增强代码属性图),并且不通过分析与整块应用相关联的业务文档来标识和/或推断检测到的代码集群的功能目的/主题(例如,它们不尝试通过利用用户指南、GitHub文件、代码注释等来推断由所标识的代码集群执行的功能)。
本发明的各个实施例可用于帮助对大量未主动维护但对用户/运营商具有商业重要性的遗留应用程序进行现代化改造。本发明的各个实例可用于帮助加快向云本地环境的迁移以及为用户/运营商带来成本节省和/或性能改进。本发明的各个实施例可以用作帮助促进根据需要的连续代码优化和/或分解的应用管理工具的一部分。在不同情况下,本发明的实施例可以被认为是现代化分析引擎,其能够识别传统源代码中能够被云本地微服务替换和/或应当被云本地微服务替换的潜在部分,并且能够推荐和/或识别哪些微服务应当被选作替换。
本发明的各个实施例可用于使用硬件和/或软件来解决本质上技术性高(例如,便于自动化推荐整块应用的微服务分解策略)、不抽象并且不能由人作为一组心理行为来执行的问题。进一步,所执行的处理中的一些可由专用计算机(例如,代码属性图生成器、社区检测器、主题建模器等)执行,以执行与针对整块应用的微服务分解策略的自动推荐有关的已定义任务(例如,基于整块应用的源代码来生成表征整块应用的代码属性图,基于整块应用的时间代码演进来增强代码属性图,基于代码属性图来检测整块应用的源代码中的不相交代码集群,基于对应于整块应用的业务文档语料库来标识不相交代码集群的功能目的等)。在不同情况下,本发明的实施例可用于将图生成、社区检测和主题建模技术实现到实际应用中,其可提供对于整块应用的微服务分解策略的自动推荐领域中出现的问题的技术改进并解决这些问题。通过利用技术和业务文档源,以及通过考虑数据依赖性和代码随时间的改变,本发明的实施例可向整块应用的用户/操作者提供比现有微服务分解系统可提供的改进的分解推荐/策略。因此,这种实施例构成现有技术中的具体且有形的技术改进。
图1示出了根据本文描述的一个或多个实施例的可促进整块应用的微服务分解策略的自动推荐的示例非限制性系统100的框图。如图所示,微服务分解策略系统102可以分析整块应用104,并且作为结果可以输出关于整块应用104应当如何被分解成微服务的推荐。更具体地,在各个实施例中,微服务分解策略系统102可以检测整块应用104的源代码中的一个或多个不相交代码集群(例如,通过分析表征整块应用104的代码属性图),可识别分别对应于所述一个或一个以上不相交代码集群的一个或一个以上功能目的(例如,由所述一个或一个以上不相交代码集群促进的一个或一个以上任务、功能、能力和/或动作),并且可基于一个或多个功能目的推荐一个或多个微服务来分别替换那些一个或多个不相交代码集群(例如,有利于特定任务、功能、能力和/或动作的不相交代码群可被基本上有利于相同的任务、功能、能力和/或动作的微服务替换)。
在不同实施例中,整块应用104可以是展现整块架构的任何合适的计算机软件程序,无论它是否有资格作为传统应用。
在各个实施例中,整块应用104可以对应于和/或关联于技术文档语料库106和业务文档语料库108。尽管附图将技术文档语料库106和业务文档语料库108描绘为存储在整块应用104内部,但是应当意识到,这是示例性的、非限制性的,并且仅为了便于说明。在各个实施例中,技术文档语料库106和/或业务文档语料库108可以根据需要以整块应用104的外部和/或内部的任何合适的中央和/或分布式方式分开地和/或一起存储。
在各个实施例中,技术文档语料库106可以是表示和/或包含关于整块应用104的技术和/或编码信息的文档集合。例如,在一个或多个实施例中,技术文档语料库106可以包括与整块应用104相对应的源文件和/或源代码文件、与整块应用104相对应的二进制文件和/或二进制代码文件、整块应用104的运行实例的统计、与整块应用104相对应的部署脚本、存储在与整块应用104相对应的代码储存库中的信息、整块应用104的时间代码演进(例如,源代码随时间的改变)等等。
在各个实施例中,业务文档语料库108可以是表示和/或包含关于整块应用104的业务信息、训练信息、故障排除信息、解释/说明信息和/或非技术信息等的文档(例如,自然语言文档等)的集合。例如,在一个或多个实施例中,业务文档语料库108可以包括与整块应用104对应的设计文档、与整块应用104对应的用户指南和/或用户手册、与整块应用104对应的训练/故障排除指南和/或训练/故障排除指南、与整块应用104对应的README文件和/或页面、与整块应用104对应的GitHub文件和/或页面、与整块应用104对应的Wiki文件和/或页面等等。
在不同实施例中,微服务分解策略系统102可包括处理器110(例如,计算机处理单元、微处理器等)和可操作地连接到处理器110的计算机可读存储器112。存储器112可存储计算机可执行指令,所述计算机可执行指令在被处理器110执行时可使得处理器110和/或微服务分解系统102的其他组件(例如,图形组件114、社区检测组件116、主题建模组件118、微服务组件120等)执行一个或多个动作。在不同实施例中,存储器112可以存储计算机可执行组件(例如,图形组件114、社区检测组件116、主题建模组件118、微服务组件120等),并且处理器110可以执行计算机可执行组件。
在不同实施例中,微服务分解系统102可包括图形组件114。在各个实施例中,图形组件114可以分析技术文档语料库106(例如,分析整块应用104的源代码和/或脚本等),并且可以基于技术文档语料库106(例如,基于整块应用104的源代码和/或脚本)相应地生成表征整块应用104的代码属性图。在各种情况下,图形组件114可以从整块应用104的源代码生成抽象语法树、控制流程图、和程序依赖图,每个都封装了整块应用104的结构和/或信息流的不同方面。在不同情况下,图形组件114可以将抽象语法树、控制流程图和程序依赖图组合成单个联合数据结构(例如,代码属性图)。在不同实施例中,代码属性图可以是同时描绘整块应用104的结构、控制流和数据依赖性的多图。在不同示例中,图形组件114还可以基于整块应用104的时间代码演进(例如,基于来自代码储存库的时间记录,详述整块应用104的源代码的哪些部分经历了随时间的一致改变)来扩充和/或修改代码属性图。在不同情况下,扩充/修改的代码属性图(例如,扩充/修改的代码属性图中的节点和边)可被分析以确定整块应用104的源代码的哪些部分可以和/或应当被微服务取代。
在不同实施例中,微服务分解策略系统102可包括社区检测组件116。在各个实施例中,社区检测组件116可分析经扩充/修改的代码属性图并且可检测和/或标识整块应用104的源代码中的一个或多个不相交代码集群。更具体来说,社区检测组件116可利用图理论技术以便检测经扩充/修改的代码属性图中的一个或一个以上不相交节点集群(例如,图中的经由边缘密度展示彼此足够高的内聚性和/或与节点的其他集群足够低的耦合的节点集群)。由于代码属性图的节点和边可对应于和/或表示整块应用104的源代码中的实际部分和/或代码行,因此代码属性图中的不相交节点集群的检测可对应于源代码本身中的不相交代码集群的检测。在不同情况下,社区检测组件116可便于通过任何合适的数学和/或统计技术(例如,Louvain算法、标签传播算法、连通分量算法、强连通分量算法、三角形计数算法、集群系数算法、平衡三元组算法等)来检测不相交代码集群。
在不同实施例中,微服务分解策略系统102可包括主题建模组件118。在各个实施例中,主题建模组件118可以分析业务文档语料库108(例如,分析设计文档、用户指南/手册和/或GitHub文件等),并且可以相应地标识分别对应于整块应用104的源代码中的一个或多个检测到的不相交代码集群的一个或多个功能目的。更具体地,主题建模组件118可以分析业务文档业务文档语料库108中包含的自然语言文本,以便确定由社区检测组件116检测到的每个不相交代码集群中的执行和/或促进的特定任务、功能、能力和/或动作。例如,如果社区检测组件116在整块应用104的源代码中检测到三个不相交代码集群A、B和C,则主题建模组件118可分析业务文档语料库108以便确定这三个不相交代码集群A、B和C中的每一个做什么。在非限制性示例中,基于分析与整块应用104对应的用户手册、README文件等,主题建模组件118可以确定和/或推断不相交代码集群A促进用户认证功能,不相交代码集群B促进容错、验证和/或防呆功能,以及不相交代码集群C促进安全筛选功能。在不同情况下,主题建模组件118可以经由任何合适的数学和/或统计技术(例如,潜在狄利克雷分配算法等)来促进对所检测到的不相交代码集群的功能目的的此类标识、确定、和/或推断。
在不同实施例中,微服务分解策略系统102可包括微服务组件120。在不同实施例中,微服务组件120可基于主题建模组件118所标识的一个或多个功能目的,推荐一个或多个微服务来替换社区检测组件116所检测的一个或多个不相交代码集群。在不同情况下,执行和/或促进特定任务、功能、能力和/或动作的不相交代码集群可由执行和/或促进基本上相同的特定任务、功能、能力和/或动作的微服务替换(例如,分解)。为了继续以上示例,其中主题建模组件118确定不相交代码集群A促进用户认证功能,微服务组件120可推荐不相交代码集群A被促进用户认证的微服务替换。此外,由于主题建模组件118确定不相交代码集群B促进容错、验证和/或防呆功能,因此微服务组件120可推荐将不相交代码集群B替换为促进防呆的微服务。此外,由于主题建模组件118确定不相交代码集群C促进安全筛选功能,因此微服务组件120可推荐不相交代码集群C被促进安全筛选的微服务替换。在不同实施例中,微服务组件120不仅可以向整块应用104的用户/操作者推荐分解策略,而且可以实现这样的分解策略。为了继续以上示例,在不同实例中,微服务组件120可使得整块应用104的源代码中的不相交代码集群A不可操作(例如,通过自动删除和/或注释掉包括不相交代码集群A的源代码行),并且可自动与微服务的提供者/供应商通信以订购、购买、租用和/或以其他方式获得促进用户认证的微服务。在不同实施例中,微服务组件120可执行与其他不相交代码集群有关的类似动作(例如,可使得不相交代码集群B和C不可操作,并且可因此自动地与微服务的提供者/供应商通信以订购、购买、租用和/或以其他方式获得促进防呆和/或安全性筛选的微服务)。
作为图1的高级、非限制性和示例性概述,整块应用104可以是与技术文档语料库106(例如,源代码文件等)和业务文档语料库108(例如,用户指南/手册、README文件等)相关联的计算机软件程序。在不同例子中,微服务分解策略系统102可以接收技术文档语料库106和业务文档语料库108作为输入,并且可以产生识别一个或多个微服务并且识别整块应用104的源代码的特定行和/或部分的推荐作为输出,所述整块应用104的源代码的特定行和/或部分可以和/或应当被那些识别的微服务替换。微服务分解策略系统102可以通过以下操作来促进这样的推荐:(i)生成描述/表征整块应用104的代码属性图;(ii)通过对代码属性图执行社区检测来在源代码中检测用于微服务分解的候选者(例如,不相交代码集群);(iii)识别由那些所检测的候选者执行的任务/动作(例如,功能目的),以及(iv)识别和/或获得执行/促进那些所识别的任务/动作的微服务。更具体地,微服务分解策略系统102可以通过图形组件114生成描述整块应用104的结构、控制流和数据依赖性的代码属性图。如上所述,可以基于技术文档语料库106的自动分析(例如,基于源代码)来生成代码属性图。基于该代码属性图,微服务分解策略系统102可通过社区检测组件116来检测整块应用104的源代码中的一个或多个不相交代码集群。如上所述,代码属性图的节点和边可对应于和/或表示整块应用104的源代码中的代码线和/或代码部分。由此,通过社区检测组件116来检测代码属性图中的不相交节点集群可对应于在源代码本身中检测不相交代码集群。微服务分解策略系统102可通过主题建模组件118标识由整块应用104的一个或多个不相交代码集群执行的一个或多个功能目的。如上所述,这可以基于对业务文档语料库108的自动分析。最后,微服务分解策略系统102可由微服务组件120基于一个或多个功能目的推荐一个或多个微服务来替换一个或多个不相交代码集群(例如,执行动作X的不相交代码集群可由执行动作X的微服务来替换)。
图2示出了根据本文描述的一个或多个实施例的示例的、非限制性计算机实现方法200的高级流程图,该计算机实现方法200可便于为整块应用自动推荐微服务分解策略。在不同实施例中,计算机实现的方法200可以由系统100执行。
在各个实施例中,动作202可以包括通过操作耦合到处理器的设备(例如,通过图形组件114)收集整块应用(例如,整块应用104)的技术数据(例如,技术文档语料库106)。在各种情况下,技术数据可以例如包括源代码、二进制代码、部署脚本、关于运行实例的统计、应用的不同变体/配置等。
在不同示例中,动作204可包括由设备(例如,由图形组件114)基于技术数据生成代码属性图。
在各个实施例中,动作206可包括由设备(例如,由图形组件114)基于整块应用的时间代码演进(例如,基于源代码随时间推移的一致改变)来扩充代码属性图。
在各实施例中,动作208可包括由设备(例如,由社区检测组件116)对代码属性图执行社区检测,以检测整块应用的源代码中的不相交代码集群。在不同情况下,不相交代码集群可被认为是微服务分解的候选者(例如,源代码中可能被微服务替换的部分)。
在不同示例中,动作210可以包括由设备(例如,由主题建模组件118)收集整块应用的业务数据(例如,业务文档语料库108)。在不同情况下,业务数据可以例如包括设计文档、用户指南、代码注释、README文件、Wiki文件、GitHub文件等。
在不同实施例中,动作212可包括由设备(例如,由主题建模组件118)基于业务数据执行主题建模以标识不相交代码集群的功能目的(例如,由不相交代码集群不相交代码集群执行的任务、功能、能力和/或动作)。
在不同实施例中,动作214可包括由设备(例如,由微服务组件120)推荐可基于功能目的而替换不相交代码集群的微服务(例如,促进任务Y的不相交代码集群可被促进任务Y的微服务替换)。
图3示出根据本文描述的一个或多个实施例的包括代码属性图的示例非限制性系统300的框图,所述代码属性图可便于为整块应用自动推荐微服务分解策略。如图所示,在不同实施例中,系统300可以包括与系统100相同的组件,并且还可以包括代码属性图306。
如图所示,在各个实施例中,技术文档语料库106可以包括源代码302和/或时间代码演进304。在不同情况下,源代码302可以是任何合适的计算机代码集合,带有和/或不带注释,以任何合适的、人类可读的编程语言(例如,C、C++、Python等)编写,特定由整块应用104执行的计算机化动作/功能。在不同实施例中,源代码302可以是定义整块应用104的编程脚本(例如,包含对于循环、如果循环、当循环、函数定义、变量定义和/或初始化、计算等)。
在不同实施例中,图形组件114可通过本领域已知的任何合适的技术来接收和/或分析源代码302,并且可相应地通过本领域已知的任何合适的技术来基于源代码302来生成代码属性图306。在不同实施例中,代码属性图306可以是抽象语法树308、控制流程图310和程序依赖图312的组合,每个对应于和/或表征整块应用104的源代码302。在不同实例中,抽象语法树308可以是具有表示运算符(例如,加法、分配等)的内部节点和表示操作数(例如,常数、标识符等)的叶节点的有序树。抽象语法树308可以编码和/或显示源代码302中的语句和/或表达式是如何嵌套的。在不同实例中,控制流程图310可明确地描述和/或显示代码语句被执行的顺序以及源代码302中的计算条件需要被满足的顺序。在不同实施例中,控制流程图310可具有表示语句和/或谓词的节点,其可由边连接以展示控制的转移。在不同示例中,程序依赖图312可以明确地表示语句和谓词之间的依赖关系,并且可以描绘和/或示出源代码302内的影响在指定语句处的任何给定变量的值的所有语句和/或谓词。在各种实施方式中,程序依赖图312可具有表示数据依赖关系的边线以及表示控制依赖关系的边线。在不同实施例中,使用本领域已知的任何合适的技术,图形组件114可以基于源代码302生成抽象语法树308,可以基于抽象语法树308生成控制流程图310,并且可以基于控制流程图310生成程序依赖图312。在不同实施例中,图形组件114可以通过本领域已知的任何合适的技术将抽象语法树308、控制流程图310和程序依赖图312组合成单个联合数据结构(例如,代码属性图306)。
即,在不同实施例中,图形组件114可接收源代码302作为输入并且可产生代码属性图306作为输出,该代码属性图306可同时描绘源代码302的结构、控制流和数据依赖性。在各实施例中,代码属性图306可包含表示源代码302中代码的不同线、部分和/或片段的节点和/或边。在不同情况下,可分析(例如,经由图理论技术)代码属性图306以便标识源代码302中感兴趣的代码的行、部分和/或片段(例如,以检测用于微服务分解的候选者)。
如以上所解释的,在各个实施例中,图形组件114可以基于时间代码演进304来修改和/或扩充代码属性图306的边权重和/或属性。在不同实例中,时间代码演进304可以是记录、存储和/或以其他方式指示源代码302随时间的推移改变的任何合适的文档、时间线和/或时序。例如,假设源代码302包含代码部分X(例如,源代码302中的代码行的第一分组)、代码部分Y(例如,源代码302中的代码行的第二分组)和代码部分Z(例如,源代码302中的代码行的第三分组)。然后,时间代码演进304可以是指示当源代码302在过去被修改/更新时,代码部分X和代码部分Y历史上在相同、基本上相同和/或相似的时间被改变(例如,在同一天被改变)的文档。根据该信息,可以推断代码部分X和代码部分Y是高度内聚的和/或紧密耦合在一起的,或者至少,如果在历史上通常在不同的时间发生变化,它们彼此更密切相关。因此,在后续社区检测期间,在不同情况下,将代码部分X和代码部分Y视为一个不相交代码集群而非两个单独的不相交代码集群是有意义的。类似地,时间代码演进304可以指示:当源代码302在过去被修改/更新时,代码部分Y和代码部分Z在历史上已经在基本上不同的时间被改变(例如,在不同的日期被改变)。根据该信息,可以推断代码部分Y和代码部分Z不是高度内聚的和/或不紧密地耦合在一起,或者至少,如果在历史上通常同时发生改变,则它们彼此较不密切相关。因此,在后续社区检测期间,在不同情况下,将代码部分Y和代码部分Z分组成单独的不相交代码集群中而不是分组成相同的不相交代码集群中是有意义的。在各实施例中,图形组件114可增强代码属性图306的边权重以反映这样的相关性(例如,增加表示代码部分X的节点与表示代码部分Y的节点之间的边权重以反映它们的较高相关性,并且减少表示代码部分Y的节点与表示代码部分Z的节点之间的边权重以反映它们的较低相关性)。在一些情况下,图形组件114可以从代码属性图306一起添加和/或减去整个边。在不同实例中,随后的社区检测可通过对代码属性图306的此类增强和/或修改来改进和/或增强(例如,来自时间代码演进304的信息可帮助确保源代码302被社区检测组件116准确和/或敏感地聚集)。在不同示例中,时间代码演进304可被存储在对应于整块应用104的一个或多个代码储存库中和/或从对应于整块应用104的一个或多个代码储存库获得。
图4示出根据本文描述的一个或多个实施例的包括社区检测算法的示例非限制性系统400的框图,该社区检测算法可以促进针对整块应用的微服务分解策略的自动推荐。如图所示,在不同实施例中,系统400可以包括与系统300相同的组件,并且还可以包括社区检测算法402。
在不同实施例中,社区检测算法402可以是任何合适的机器学习、深度学习和/或模式识别算法,其可分析代码属性图306并相应地基于连接代码属性图306中的节点的边来确定代码属性图306中的节点的不相交和/或连接性。由于代码属性图306中的不同节点可以对应于源代码302中的代码的不同部分,因此确定代码属性图306中的节点的不相交和/或连接性可以对应于确定源代码302中的代码的各个部分的不相交和/或连接性。换言之,社区检测组件116可经由社区检测算法402分析代码属性图306,这可导致检测和/或识别代码属性图306中的节点的各个不相交社区,这些节点的不相交社区表示源代码302中的代码的对应不相交社区。在不同情况下,不相交代码集群404可被视为源代码302中的检测/识别的代码社区之一。在不同情况下,不相交代码集群404(和/或检测/识别的代码的不相交社区/集群中的任何其他不相交社区/集群)可被认为是微服务分解的候选者(例如,作为可潜在地被微服务替换的源代码302的一部分)。
在不同实施例中,社区检测算法402可以采取诸如下限程度、社区大小等参数。在不同实施例中,检测/识别的社区可潜在地分解为具有定制参数的更细粒度社区。在不同实例中,社区检测算法402可以评估组(例如,代码属性图306中的表示源代码302中的相应代码组的节点组)如何被聚类和/或分区,以及其加强和/或分开的趋势。在不同实施例中,社区检测算法402可包括用于促进社区检测的任何合适的数学和/或统计技术(例如,Louvain算法、标签传播算法、连接分量算法、强连接分量算法、三角计数算法、集群系数算法、平衡三角算法等)。
在不同实施例中,可以实现其他机器学习和/或人工智能技术。本发明的不同实施例在此可以采用人工智能(AI)来促进使本发明的一个或多个特征自动化。组件可以采用各种基于AI的方案来执行本文公开的各种实施例/示例。为了提供或帮助本发明的多种确定(例如,确定、断定、推断、计算、预测(predict)、推测、估计、导出、预测(forecast)、检测、计算等),本发明的组件可以检查其被授权访问的数据的全部或子集,并且可以根据统改事件和/或数据捕捉的一组观察结果来推理或确定系统、环境等的状态。例如,确定可用于识别特定上下文或动作,或可产生状态上的概率分布。确定可以是概率性的;即,基于对数据和事件的考虑来计算感兴趣的状态上的概率分布。确定还可以指用于从一组事件和/或数据组成更高级事件的技术。
这样的确定可以导致从一组观察到的事件和/或存储的事件数据构造新的事件或动作,无论事件是否在时间上紧密接近地相关,以及事件和数据是来自一个还是若干事件和数据源。本文公开的组件可以结合执行与所要求保护的主题有关的自动和/或确定的动作而采用不同分类(显式训练(例如,经由训练数据)以及隐式训练(例如,经由观察行为、偏好、历史信息、接收外部信息等))方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎等)。由此,分类方案和/或系统可用于自动学习和执行多个功能、动作和/或确定。
分类器可以将输入属性向量z=(z1,z2,z3,z4,zn)映射到该输入属于类的置信度,如通过f(z)=置信度(类)。这样的分类可以采用基于概率和/或统计的分析(例如,分解成分析效用和成本)来确定将要自动执行的动作。支持向量机(SVM)可以是可以采用的分类器的示例。SVM通过在可能输入的空间中找到超表面来操作,其中超表面试图将触发标准与非触发事件分离。直观地,这使得分类对于接近训练数据但不与训练数据相同的测试数据是正确的。其他有向和无向模型分类方法包括例如朴素贝叶斯、贝叶斯网络、决策树、神经网络、模糊逻辑模型和/或提供不同独立模式的概率分类模型,可以采用它们中的任何一种。如本文所使用的分类也包括用于开发优先级模型的统计回归。
图5示出了根据本文所述的一个或多个实施例的可促进针对整块应用的微服务分解策略的自动推荐的示例非限制性代码属性图中的示例非限制性不相交代码集群的框图。
图5描绘了代码属性图306的示范性视觉表示。如图所示,代码属性图306可包括多个节点(例如,图5中的小圆)和连接节点的多条边(例如,连接图5中的小圆的直线和/或曲线)。如上所述,社区检测算法402可检测和/或标识代码属性图306中的不相交节点集群,这些不相交节点集群可分别对应于源代码302中不相交代码集群。不相交的节点集群可以是表现出足够高的内部内聚性和足够低的外部耦合(例如,如通过边缘密度测量的)的那些节点社区。如图所示,图5描述了至少两个不相交的节点集群:节点分组502和节点分组504。分组502为显示高内部内聚性(例如,分组502中的所有节点直接和/或间接地彼此连接)和低外部耦合(例如,分组502中的节点不显著地直接和/或间接地连接到分组502外部的节点)的节点社区。出于类似原因,分组504中的节点也可被认为是不相交的节点集群。如上所述,这些不相交节点集群可对应于和/或表示源代码302中的不相交代码集群(例如,代码属性图306中的分组502可表示源代码302中的不相交代码集群404)。相反,节点506的分组在一些情况下可不被认为是不相交节点集群(并且因此源代码302中与分组506相对应的代码分组将可能不被认为是不相交代码集群和/或微服务分解的候选)。这是因为,尽管分组506中的节点表现出高的内部内聚性(例如,它们彼此显著地直接连接和/或间接连接),但它们也表现出高的外部耦合(例如,它们显著地连接到分组506之外的节点)。
应当理解,内聚性性和/或耦合阈值可以由用户/操作者根据需要设置。由此,在不同实施例中,尽管分组中的一些节点与分组外部的节点具有连接(例如,在一些情况下,如果定义最大耦合速率的阈值足够高,则分组506可被认为是不相交节点集群,并因此可表示对应的不相交代码集群),但节点的分组可被确定为展现足够低的耦合。
图6示出根据本文描述的一个或多个实施例的示例、非限制性系统600的框图,系统600包括主题建模算法,该主题建模算法可有利于针对整块应用的微服务分解策略的自动推荐。如图所示,在不同实施例中,系统600可以包括与系统400相同的组件,并且还可以包括主题建模算法610。
如图所示,在各个实例中,业务文档语料库108可以包括设计文档602、用户指南604、代码注释606、README文件608、和/或包含关于整块应用104的信息的任何其他合适的文档和/或文件(例如,Wiki文件、GitHub文件、训练/故障排除手册等)。在不同实施例中,主题建模算法610可以是可分析业务文档语料库108并相应地识别对应于不相交代码集群404的功能目的612的任何合适的机器学习、深度学习和/或模式识别算法。在不同情况下,功能目的612可被认为是由源代码302中的不相交代码集群404执行和/或促进的主要任务、功能、能力和/或动作。例如,功能目的612可以是用户认证,意味着不相交代码集群404是对整块应用104的用户进行认证的源代码302的一部分。作为另一示例,功能目的612可以是对象检测,意味着不相交代码集群404是源代码302的为整块应用104执行对象检测的部分。在各个实施例中,主题建模算法610可以包括本领域已知的用于确定功能主题/目的的任何合适的数学和/或统计技术(例如,潜在狄利克雷分配算法(LDA)等)。
LDA是文档语料库的生成性概率模型,其中文档被表示为潜在主题(例如,业务功能)上的随机混合,其中每个主题的特征在于数据上的分布。在实现LDA的情况下,可以通过如下方式执行特征提取:通过在停用词移除和标志化之后连接每个属性,可以将每个数据单元表示为文档;历史结构可用于训练LDA模型;并且来自代码属性图306和业务文档语料库108的推断特征向量可用于找出不相交代码集群404的业务函数。作为高级、非限制性概述,LDA是用于从代码属性图306和业务文档语料库108提取特征以便确定和/或推断在代码属性图306中标识的社区/集群执行的业务功能的算法。在不同实例中,可以在发现的功能目的(例如,主题)和业务描述(例如,发现的主题和类之间的相似性)之间建立相似性度量。
图7示出了根据本文描述的一个或多个实施例的包括推荐微服务的示例非限制性系统700的框图,推荐微服务可以促进整块应用的微服务分解策略的自动推荐。如图所示,在不同实施例中,系统700可包括与系统600相同的组件,并且还可包括推荐微服务702。
如图7所示和以上所解释的,在主题建模组件118标识由社区检测组件116检测到的不相交代码集群404的功能目的612之后,微服务组件120能标识能够执行和/或促进功能目的612的特定微服务(例如,从可用微服务的数据库、目录和/或列表)。在各种示例中,微服务组件120可推荐(例如,通过与用户/操作者的电子通信)标识的微服务(例如,所推荐的微服务702)以替换不相交代码集群404。换言之,由于推荐微服务702可执行与相交代码集群404相同的任务、功能、能力和/或动作,因此不相交代码集群404可被推荐微服务702成功替换。在不同情况下,微服务组件120可被视为向用户提供用于分解整块应用104的推荐策略(例如,建议用推荐微服务702替换/替换不相交代码集群404)。在不同实施例中,微服务组件120可实际地实现推荐的分解策略,诸如通过使得不相交代码集群404不可操作(例如,通过在源代码302中删除和/或评论)和通过调度、订购、购买、租赁和/或以其他方式获得推荐的微服务702(例如,从微服务供应商)。在不同情况下,微服务组件120可用推荐的微服务702来替换不相交代码集群404。
图8示出了根据本文描述的一个或多个实施例的高级框图,其描绘了用于促进整块应用的微服务分解策略的自动推荐的示例性工作流程。
如图所示,图8描述了本发明的各种实施方式的高级概述。总体目标可以是将整块应用104的至少一部分分解成微服务。为此,可以利用技术文档语料库106(例如,源代码302、时间代码演进304等)来创建代码属性图306,该代码属性图306可以示例/展示整块应用104中固有的结构、控制流和数据依赖性。代码属性图306可被用来标识/检测不相交代码集群404,该不相交代码集群404可被认为是微服务分解的候选者(例如,源代码302中可潜在地被微服务替换的一部分)。可利用业务文档语料库108来识别对应于不相交代码集群404的功能目的612(例如,不相交代码集群404执行的动作/功能)。在不同情况下,可推荐执行/促进功能目的612的微服务以代替不相交代码集群404(例如,所推荐的微服务702执行与不相交代码集群404相同的工作,并因此可替换不相交代码集群404)。
以此方式,可以快速且高效地生成用于分解大型、笨重、整块计算机程序(例如,整块应用104)的推荐/策略。如上所述,用于促进微服务分解的现有系统/技术简单地不采用代码属性图(例如,它们改为仅使用调用图),不采用时间代码演进来通知不同代码集群的相关性,并且不采用业务文档的主题建模来标识和/或推断所标识的代码集群的功能目的/主题。
图9示出了根据本文描述的一个或多个实施例的示例、非限制性系统900的框图,该系统900包括可以促进针对整块应用的微服务分解策略的自动推荐的反馈组件。如图所示,在不同实施例中,系统900可以包括与系统700相同的组件,并且还可以包括反馈组件902。
在不同实施例中,反馈组件902可以是允许用户/操作者(例如,主题专家、代码开发人员等)评分、评级(rate)、评级(grade)和/或以其他方式提供关于由微服务分解策略系统102输出的推荐功效的反馈的任何合适的人机接口。在不同情况下,反馈可用于量化微服务分解策略系统102对源代码302进行聚类的好坏程度和/或对功能目的612进行识别/推断的程度。在不同示例中,反馈组件902可以修改社区检测算法402的参数(例如,权重、偏置、激活函数等)和/或主题建模算法610的参数。以此方式,社区检测组件116和/或主题建模组件118可以从来自用户/操作者的实时和/或准实时反馈中学习。这可被认为是启用对人类知识的捕捉的主动学习方法(例如,捕捉来自主题专家的实时聚类、主题建模、和/或其他分解洞察,可学习该反馈以改善由微服务分解策略系统102产生的推荐的准确性和/或有用性)。换言之,反馈组件902可以促进微服务分解策略系统102的受监督学习/训练的形式。
图10示出了根据本文描述的一个或多个实施例的示例、非限制性系统1000的框图,该系统1000包括依赖关系模式存储组件,该依赖关系模式存储组件可有利于整块应用的微服务分解策略的自动推荐。如图所示,在不同实施例中,系统1000可包括与系统900相同的组件,并且可进一步包括依赖性模式存储组件1002。
在不同实施例中,依赖性模式存储组件1002可存储从其他整块应用的代码属性图中学习的依赖性模式,使得社区检测组件116和主题建模组件118可从依赖性模式中学习(例如,可利用依赖性模式来更快速和/或更准确地标识不相交代码集群404和/或功能目的612)。在不同情况下,可在依赖关系模式存储组件1002中捕捉依赖关系模式并且随后可使用其收集可重复模式以标识正确的社区和/或正确的功能目的/话题。即,当微服务分解策略系统102接收到反馈并相应地学习给定输入代码属性图(和/或输入代码属性图的一部分)的适当的社区检测和主题建模结果时,可从该输入结果对中提取依赖关系模式并将其存储在依赖关系模式存储组件1002中。然后,微服务分解策略系统102可在尝试对未来应用进行聚类和/或主题建模时利用这种存储的依赖模式。在一些情况下,这可以提高和/或改善系统的性能。如果当前代码属性图和依赖关系模式之间(例如,或者当前代码属性图中的当前社区和依赖关系模式之间)的匹配水平足够高(例如,如用户/操作者所期望的那样定义的阈值),则微服务分解策略系统102可以简单地输出存储在依赖关系模式存储组件1002中的结果,而不是从头开始花费时间和资源来执行社区检测和/或主题建模。在不同实施例中,可以基于当前代码属性图或代码属性图中的社区的当前边密度与所存储的依赖模式所呈现的边密度相比较来将匹配水平表示为概率值和/或相似度值。在不同实施例中,可以使用比较当前和存储的相关性模式的任何合适的数学和/或统计技术。
在各个实施例中,可以使用任何合适的广度优先搜索和/或深度优先搜索算法去探索始于某个根节点(例如,RESTAPI在代码中开始的地方)的图(例如,代码属性图)的所有节点,以便促进学习/捕获依赖性模式。在不同实施例中,可以实现用于在代码属性图中寻找基于类别的组(例如,依赖性模式)任何本领域已知的合适的算法。在各实施例中,学习依赖模式可通过任何合适的算法来促进,该算法通过基于损耗降低的预测方法训练多标签支持向量机(和/或任何其他合适的分类器)以标识图形中的分类群组。
图11示出根据本文描述的一个或多个实施例的可促进整块应用的微服务分解策略的自动推荐的示例非限制性计算机实现方法1100的流程图。
在不同实施例中,动作1102可包括由操作地耦合到处理器(例如,116)的设备基于表征整块应用的代码属性图(例如,306)来检测整块应用(例如,104)中的不相交代码集群(例如,404),其中代码属性图基于整块应用的时间代码演进(例如,304)。
在不同实施例中,动作1104可包括通过设备(例如,118)基于对应于整块应用的业务文档语料库(例如,108)来识别不相交代码集群的功能目的(例如,612)。
在不同示例中,动作1106可包括通过设备(例如,120)基于功能目的推荐微服务(例如,702)来替换不相交代码集群。
图12示出了根据本文描述的一个或多个实施例的示例、非限制性计算机实现方法1200的流程图,该方法包括增强代码属性图,所述代码属性图可促进针对整块应用的微服务分解策略的自动推荐。如图所示,在不同实例中,计算机实现的方法1200可以包括与计算机实现的方法1100相同的动作,并且还可以包括动作1202和1204。
在不同实施例中,动作1202可以包括由设备(例如,114)基于整块应用的源代码(例如,302)来生成代码属性图,其中代码属性图包括表征整块应用的抽象语法树(例如,308)、控制流程图(例如,310)和程序依赖图(例如,312)的组合。
在不同示例中,动作1204可以包括由设备(例如,114)基于时间代码演进来增强代码属性图的边权重,其中时间代码演进包括整块应用的源代码随时间的改变。
图13示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现的方法1300的流程图,该方法包括接收可促进整块应用的微服务分解策略的自动推荐的用户反馈。如图所示,在不同实例中,计算机实现的方法1300可以包括与计算机实现的方法1100相同的动作,并且还可以包括动作1302和1304。
在不同实施例中,动作1302可包括由设备(例如,902)收集与推荐的微服务和不相交代码集群相关联的用户反馈。
在不同实施例中,动作1304可包含由设备(例如,902)修改促进检测不相交代码集群的算法(例如,402)参数或促进基于所收集的用户反馈识别功能目的的算法(例如,610)参数。
图14示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现的方法1400的流程图,该方法包括存储可促进整块应用的微服务分解策略的自动推荐的依赖关系模式。如图所示,在不同实例中,计算机实现的方法1400可以包括与计算机实现的方法1100相同的动作,并且还可以包括动作1402。
在不同实施例中,动作1402可包括由设备(例如,1002)存储从其他整块应用的代码属性图学习的依赖性模式,其中这些依赖性模式促进不相交代码集群的检测和功能目的的识别。
图15示出根据本文描述的一个或多个实施例的示例、非限制性计算机实现方法1500的流程图,该方法包括替换可促进整块应用的微服务分解策略的自动推荐的不相交代码集群。如图所示,在不同实例中,计算机实现的方法1500可以包括与计算机实现的方法1100相同的动作,并且还可以包括动作1502。
在不同实施例中,动作1502可包括由设备(例如,120)用推荐的微服务替换不相交代码集群。
图16示出了根据本文描述的一个或多个实施例的可促进用于整块应用的微服务分解策略的自动推荐的示例非限制性计算机实现方法1600的流程图。
在不同实施例中,动作1602可包括由通信地耦合到处理器(例如,116)的设备基于对应于整块应用的代码属性图(例如,306)来识别整块应用(例如,104)中的微服务分解(例如,404)的候选者。
在不同实施例中,动作1604可包括由设备(例如,118)基于对应于整块应用的业务文档(例如,108)来识别分别由所识别的候选执行的功能(例如,612)。
图17示出了根据本文描述的一个或多个实施例的示例非限制性计算机实现方法1700的流程图,该方法包括修改代码属性图,所述代码属性图可促进对整块应用的微服务分解策略的自动推荐。如图所示,在不同实例中,计算机实现的方法1700可以包括与计算机实现的方法1600相同的动作,并且还可以包括动作1702和1704。
在不同实施例中,动作1702可包括由设备(例如,114)基于整块应用的源代码(例如,302)来生成代码属性图。
在不同实施例中,动作1704可包括由设备(例如,114)基于整块应用的时间代码演进(例如,302)来修改代码属性图。
为了提供用于本文描述的各种实施方式的附加上下文,图18和以下讨论旨在提供其中可以实现本文描述的实施方式的各种实施方式的合适的计算环境1800的简要概括描述。虽然上文已经在可以在一个或多个计算机上运行的计算机可执行指令的一般上下文中描述了实施例,但是本领域技术人员将认识到,实施例也可以结合其他程序模块和/或作为硬件和软件的组合来实现。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员将认识到,本发明的方法可以用其他计算机系统配置来实践,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、物联网(IoT)设备、分布式计算系统、以及个人计算机、手持式计算设备、基于微处理器或可编程消费电子产品等,其中的每一个可以可操作地耦合到一个或多个相关联的设备。
本文实施例的所示实施例也可在分布式计算环境中实现,其中某些任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算设备通常包括各种介质,其可以包括计算机可读存储介质、机器可读存储介质和/或通信介质,这两个术语在本文中如下彼此不同地使用。计算机可读存储介质或机器可读存储介质可以是可由计算机访问的任何可用存储介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,可以结合用于存储诸如计算机可读或机器可读指令、程序模块、结构化数据或非结构化数据之类的信息的任何方法或技术来实现计算机可读存储介质或机器可读存储介质。
计算机可读存储介质可以包括但不限于:随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CDROM)、数字通用盘(DVD)、蓝光盘(BD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、固态驱动器或其他固态存储设备、或可以用于存储所需信息的其他有形的和/或非瞬态介质。就这一点而言,在此应用于存储、存储器或计算机可读介质的术语“有形的”或“非瞬态的”应理解为仅排除传播瞬态信号本身作为修饰语,并且不放弃对不仅传播瞬态信号本身的所有标准存储、存储器或计算机可读介质的权利。
计算机可读存储介质可由一个或多个本地或远程计算设备访问,例如经由访问请求、查询或其他数据检索协议,用于相对于介质所存储的信息的各种操作。
通信介质通常将计算机可读指令、数据结构、程序模块或其他结构化或非结构化数据具体化为诸如经调制数据信号(例如,载波或其他传输机制)之类的数据信号,并且包括任何信息递送或传输介质。术语“调制数据信号”是指以对一个或多个信号中的信息进行编码的方式设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外和其他无线介质。
再次参考图18,用于实施本文所描述的实施方式的各种实施方式的示例性环境1800包括计算机1802,计算机1802包括处理单元1804、系统存储器1806以及系统总线1808。系统总线1808将系统组件(包括但不限于系统存储器1806)耦合至处理单元1804。处理单元1804可以是不同市售处理器中的任何处理器。双微处理器和其他多处理器架构也可以用作处理单元1804。
系统总线1808可以是能够使用各种可商购的总线架构中的任一种进一步互连到存储器总线(具有或不具有存储器控制器)、外围总线、和局部总线的若干类型的总线结构中的任一种。系统存储器1806包括ROM 1810和RAM 1812。基本输入/输出系统(BIOS)可以存储在诸如ROM、可擦可编程只读存储器(EPROM)、EEPROM的非易失性存储器中,BIOS包含诸如在启动期间帮助在计算机1802内的元件之间传输信息的基本例程。RAM1812还可包含高速RAM,例如用于高速缓存数据的静态RAM。
计算机1802进一步包括内部硬盘驱动器(HDD)1814(例如,EIDE、SATA)、一个或多个外部存储设备1816(例如,磁软盘驱动器(FDD)1816、存储棒或闪存驱动器读取器、存储卡读取器等)以及驱动器1820,例如,诸如固态驱动器、光盘驱动器,其可从诸如CD-ROM盘、DVD、BD等的盘1822读取或写入。可替代地,在涉及固态驱动器的情况下,除非是分开的,否则将不会包括盘1822。尽管内HDD1814被示为位于计算机1802内,但内HDD1814也可被配置成在合适的机箱(未示出)中外部使用。另外,尽管未在环境1800中示出,但固态驱动器(SSD)可被用作HDD1814的补充或替换。HDD1814、外部存储设备1816和驱动器1820可以分别通过HDD接口1824、外部存储接口1826和驱动接口1828连接到系统总线1808。用于外部驱动器实现的接口1824可以包括通用串行总线(USB)和电气与电子工程师协会(IEEE)1394接口技术中的至少一个或两者。其他外部驱动器连接技术在本文描述的实施例的预期内。
驱动器及其相关联的计算机可读存储介质提供数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1802,驱动器和存储介质适应以合适的数字格式存储任何数据。尽管以上对计算机可读存储介质的描述涉及相应类型的存储设备,但本领域技术人员应当理解,可由计算机读取的其他类型的存储介质(不管是当前存在的还是将来开发的)也可用于示例操作环境中,并且进一步地,任何这样的存储介质可包含用于执行本文所描述的方法的计算机可执行指令。
多个程序模块可存储在驱动器和RAM1812中,包括操作系统1830、一个或多个应用程序1832、其他程序模块1834和程序数据1836。操作系统、应用程序、模块和/或数据的全部或部分也可高速缓存在RAM1812中。本文所述的系统和方法可利用不同市售操作系统或操作系统的组合来实现。
计算机1802可以任选地包括仿真技术。例如,管理程序(未示出)或其他中介可以模拟操作系统1830的硬件环境,并且模拟的硬件可以可选地与图18中示出的硬件不同。在这种实施例中,操作系统1830可以包括托管在计算机1802处的多个VM中的一个虚拟机(VM)。此外,操作系统1830可为应用1832提供运行时环境,诸如Java运行时环境或.NET框架。运行时环境是允许应用1832在包括该运行时环境的任何操作系统上运行的一致执行环境。类似地,操作系统1830可支持容器,并且应用1832可以是容器的形式,所述容器是轻量的、独立的、可执行的软件包,包括例如代码、运行时、系统工具、系统库和用于应用的设置。
进一步,计算机1802可以启用安全模块,如可信处理模块(TPM)。例如,对于TPM,在加载下引导组件之前,引导组件在时间上散列下引导组件,并且等待结果与安全值的匹配。此过程可在计算机1802的代码执行栈中的任何层进行,例如,在应用执行级或在操作系统(OS)内核级应用,由此实现在任何代码执行级的安全性。
用户可通过一个或多个有线/无线输入设备(例如,键盘1838、触摸屏1840和诸如鼠标1842之类的定点设备)将命令和信息输入到计算机1802中。其他输入设备(未示出)可包括话筒、红外(IR)遥控器、射频(RF)遥控器、或其他遥控器、操纵杆、虚拟现实控制器和/或虚拟现实耳机、游戏手柄、手写笔、图像输入设备(例如,相机)、姿势传感器输入设备、视觉移动传感器输入设备、情绪或面部检测设备、生物计量输入设备(例如,指纹或虹膜扫描仪)、或诸如此类。这些和其他输入设备常常通过可耦合到系统总线1808的输入设备接口1844连接到处理单元1804,但可通过其他接口连接,诸如并行端口、IEEE1394串行端口、游戏端口、USB端口、IR接口、
Figure BDA0003702223690000241
接口等。
监视器1846或其他类型的显示设备还可经由诸如视频适配器1848之类的接口连接到系统总线1808。除了监视器1846之外,计算机通常包括其他外围输出设备(未示出),诸如扬声器、打印机等。
计算机1802可以使用经由到一个或多个远程计算机(如一个或多个远程计算机1850)的有线和/或无线通信的逻辑连接在联网环境中操作。远程计算机1850可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他公共网络节点,并且通常包括相对于计算机1802描述的许多或所有元件,但是为了简洁起见,仅示出了存储器/存储设备1852。所描绘的逻辑连接包括到局域网(LAN)1854和/或更大的网络(例如,广域网(WAN)1856)的有线/无线连接。这样的LAN和WAN联网环境在办公室和公司中是常见的,并且促进企业范围的计算机网络,诸如内联网,所有这些可以连接到全球通信网络,例如互联网。
当在LAN联网环境中使用时,计算机1802可以通过有线和/或无线通信网络接口或适配器1858连接到局域网1854。适配器1858可以促进到LAN1854的有线或无线通信,LAN1854还可以包括部署在其上用于以无线模式与适配器1858通信的无线接入点(AP)。
当在WAN联网环境中使用时,计算机1802可包括调制解调器1860或可经由用于在WAN1856上建立通信的其他设备(诸如通过互联网)连接到WAN1856上的通信服务器。可以是内部或外部的和有线或无线设备的调制解调器1860可经由输入设备接口1844连接至系统总线1808。在联网环境中,相对于计算机1802或其部分所描绘的程序模块可以存储在远程存储器/存储设备1852中。应当理解,所示的网络连接是示例,并且可以使用在计算机之间建立通信链路的其他设备。
当在LAN或WAN联网环境中使用时,计算机1802可访问云存储系统或其他基于网络的存储系统,作为如上所述的外部存储设备1816的补充或替代,诸如但不限于提供信息的存储或处理的一个或多个实施例的网络虚拟机。通常,计算机1802与云存储系统之间的连接可以例如通过适配器1858或调制解调器1860分别在LAN1854或WAN1856上建立。在将计算机1802连接至相关联的云存储系统时,外部存储接口1826可以在适配器1858和/或调制解调器1860的帮助下管理由云存储系统提供的存储,如同其他类型的外部存储一样。例如,外部存储接口1826可以被配置成用于提供对云存储源的访问,如同那些源在物理上连接到计算机1802上。
计算机1802可以可操作用于与可操作地布置在无线通信中的任何无线设备或实体通信,例如,打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何一件设备或位置(例如,自助服务终端、新闻台、商店货架等)和电话。这可包括无线保真(Wi-Fi)和
Figure BDA0003702223690000251
无线技术。由此,通信可以是如传统网络的预定义结构,或者仅仅是至少两个设备之间的自组织通信。
本发明可以是在任何可能的技术细节集成度上的系统、方法、设备和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表还可以包括以下各项:便携式计算机盘、硬盘、随机存取存储器(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)、离散门或晶体管逻辑、离散硬件组件或其任何组合。进一步,处理器可以利用纳米级架构,诸如但不限于基于分子和量子点的晶体管、开关和门,以便优化空间使用或增强用户设备的性能。处理器还可以被实现为计算处理单元的组合。在本公开中,诸如与组件的操作和功能相关的“存储”(store)、“存储”(storage)、“数据存储”(data store)、“数据存储”(data storage)、“数据库”和基本上任何其他信息存储组件的术语用于指“存储器组件”、“体现在“存储器”中的实体、或包括存储器的组件。应当理解,本文所描述的存储器和/或存储器部件可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为示例而非限制,非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)、闪存、或非易失性随机存取存储器(RAM)(例如,铁电RAM(FeRAM))。易失性存储器可包括例如可充当外部高速缓冲存储器的RAM。作为说明而非限制,RAM可以以许多形式获得,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步连接DRAM(SLDRAM)、直接RambusRAM(DRRAM)、直接Rambus动态RAM(DRDRAM)和Rambus动态RAM(RDRAM)。另外,本文所揭示的系统或计算机实施的方法的存储器组件既定包含(但不限于)这些和任何其他合适类型的存储器。
以上描述的内容仅包括系统和计算机实施的方法的示例。当然,为了描述本公开的目的,不可能描述组件的每一种可想象的组合或计算机实现的方法,但是本领域普通技术人员可以认识到,本公开的许多进一步的组合和排列是可能的。此外,在详细描述、权利要求、附录以及附图中使用术语“包括”、“具有”、“拥有”等而言,这些术语是包括性的,类似于术语“包含”,在权利要求中将“包含”作为过渡词,来解释“包含”。
已经出于说明的目的呈现了不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。

Claims (26)

1.一种系统,包括:
存储器,存储计算机可执行组件;以及
处理器,其可操作地耦合到所述存储器,所述处理器执行存储在所述存储器中的所述计算机可执行组件,其中所述计算机可执行组件包括:
社区检测组件,基于表征整块应用的代码属性图来检测所述整块应用中的不相交代码集群;
主题建模组件,基于对应于所述整块应用的业务文档语料库来识别所述不相交代码集群的功能目的;以及
微服务组件,基于所述功能目的推荐微服务来替换所述不相交代码集群。
2.根据权利要求1所述的系统,其中所述业务文档语料库包括由以下项组成的组中的至少一项:对应于所述整块应用的设计文档、用户指南、代码注释、wiki-文档、github-文档、以及readme-文档。
3.根据权利要求1所述的系统,其中,所述代码属性图基于所述整块应用的时间代码演进。
4.根据权利要求3所述的系统,进一步包括:
图形组件:
基于所述整块应用的源代码来生成所述代码属性图,其中,所述代码属性图包括表征所述整块应用的抽象语法树、控制流程图和程序依赖图的组合;以及
基于所述时间代码演进来增强所述代码属性图的边权重,其中所述时间代码演进包括随时间对所述整块应用的所述源代码的改变。
5.根据权利要求1所述的系统,其中,所述主题建模组件通过采用潜在狄利克雷(Dirichlet)分配算法来标识所述不相交代码集群的功能目的。
6.根据权利要求1所述的系统,进一步包括:
反馈组件,收集与所述推荐的微服务和所述不相交代码集群相关联的用户反馈,其中所述反馈组件基于收集的所述用户反馈来修改所述社区检测组件的参数或所述主题建模组件的参数。
7.根据权利要求1所述的系统,进一步包括:
依赖性模式存储组件,存储从其他整块应用的代码属性图学习来的依赖性模式,其中所述社区检测组件和所述主题建模组件利用所述依赖性模式来标识所述不相交代码集群和所述功能目的。
8.根据权利要求1所述的系统,其中,所述微服务组件使用所述推荐的微服务来替换所述不相交代码集群。
9.一种计算机实现的方法,包括:
由操作地耦合到处理器的设备基于表征所述整块应用的代码属性图来检测所述整块应用中的不相交代码集群;
由所述设备基于对应于所述整块应用的业务文档语料库来识别所述不相交代码集群的功能目的;以及
所述设备基于所述功能目的,推荐微服务替换所述不相交代码集群。
10.根据权利要求9所述的计算机实现的方法,其中,所述业务文档语料库包括由以下项组成的组中的至少一项:对应于所述整块应用的设计文档、用户指南、代码注释、wiki-文档、github-文档、以及readme-文档。
11.根据权利要求9所述的计算机实现的方法,其中,所述代码属性图基于所述整块应用的时间代码演进。
12.根据权利要求11所述的计算机实现的方法,进一步包括:
由所述设备基于所述整块应用的源代码来生成所述代码属性图,其中,所述代码属性图包括表征所述整块应用的抽象语法树、控制流程图和程序依赖图的组合;以及
由所述设备基于所述时间代码演进来增强所述代码属性图的边权重,其中,所述时间代码演进包括随时间对所述整块应用的所述源代码的改变。
13.根据权利要求9所述的计算机实现的方法,其中,识别所述不相交代码集群的功能目的采用潜在狄利克雷(Dirichlet)分配算法。
14.根据权利要求9所述的计算机实现的方法,进一步包括:
所述设备收集与所述推荐的微服务和所述不相交代码集群相关联的用户反馈;以及
由所述设备基于收集的所述用户反馈来修改促进检测所述不相交代码集群的算法的参数或促进识别所述功能目的的算法的参数。
15.根据权利要求9所述的计算机实现的方法,进一步包括:
由所述设备存储从其他整块应用的代码属性图学习来的依赖模式,其中所述依赖模式促进检测所述不相交代码集群和识别所述功能目的。
16.根据权利要求9所述的计算机实现的方法,进一步包括:
所述设备将所述不相交代码集群替换为所述推荐的微服务。
17.一种计算机程序产品,用于促进整块应用的微服务分解策略的自动推荐,所述计算机程序产品包括计算机可读存储器,所述计算机可读存储器具有随其包含的程序指令,所述程序指令可由处理组件执行以使处理组件:
基于表征整块应用的代码属性图来检测所述整块应用中的不相交代码集群;
基于对应于所述整块应用的业务文档语料库来识别所述不相交代码集群的功能目的;以及
基于所述功能目的,推荐微服务来替换所述不相交代码集群。
18.根据权利要求17所述的计算机程序产品,其中,所述业务文档语料库包括由以下项组成的组中的至少一项:对应于整块应用的设计文档、用户指南、代码注释、wiki-document、github-文档和readme-文档。
19.根据权利要求17所述的计算机程序产品,其中,所述代码属性图基于所述整块应用的时间代码演进。
20.根据权利要求19所述的计算机程序产品,其中,所述程序指令可进一步执行以使所述处理组件:
基于所述整块应用的源代码来生成所述代码属性图,其中,所述代码属性图包括表征所述整块应用的抽象语法树、控制流程图和程序依赖图的组合;以及
基于所述时间代码演进来增强所述代码属性图的边权重,其中所述时间代码演进包括随时间对所述整块应用的所述源代码的改变。
21.一种设备,包括:
处理器,其可操作地耦合到存储器,所述处理器执行存储在所述存储器中的计算机可执行组件,其中所述计算机可执行组件包括:
社区检测组件,基于对应于所述整块应用的代码属性图来识别所述整块应用中的微服务分解的候选者;以及
主题建模组件,基于对应于所述整块应用的业务文档来识别分别由识别的所述候选者执行的功能。
22.根据权利要求21所述的设备,其中,所述业务文档包括由以下项组成的组中的至少一项:对应于所述整块应用的设计文档、用户指南、代码注释、wiki-文档、github-文档、以及readme-文档。
23.根据权利要求21所述的设备,进一步包括:
图形组件,基于所述整块应用的源代码来生成所述代码属性图,并且基于所述整块应用的时间代码演进来修改所述代码属性图。
24.一种计算机实现的方法,包括:
通信地耦合到处理器的设备基于与所述整块应用相对应的代码属性图来识别所述整块应用中的微服务分解的候选者;以及
由所述设备基于对应于所述整块应用的业务文档来识别分别由所识别的候选者执行的功能。
25.根据权利要求24所述的计算机实现的方法,进一步包括:
由所述设备基于所述整块应用的源代码来生成所述代码属性图;以及
由所述设备基于所述整块应用的时间代码演进来修改所述代码属性图。
26.一种计算机程序,包括程序代码,当所述程序在计算机上运行时,所述程序代码适于执行根据权利要求9至16中任一项所述的方法或根据权利要求24或25所述的方法。
CN202180007343.9A 2020-01-23 2021-01-18 整块应用的微服务分解策略 Pending CN114830091A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/750,532 2020-01-23
US16/750,532 US11416243B2 (en) 2020-01-23 2020-01-23 Microservice decomposition strategy of monolithic applications
PCT/IB2021/050351 WO2021148927A1 (en) 2020-01-23 2021-01-18 Microservice decomposition strategy of monolithic applications

Publications (1)

Publication Number Publication Date
CN114830091A true CN114830091A (zh) 2022-07-29

Family

ID=76970068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180007343.9A Pending CN114830091A (zh) 2020-01-23 2021-01-18 整块应用的微服务分解策略

Country Status (6)

Country Link
US (1) US11416243B2 (zh)
JP (1) JP2023510951A (zh)
CN (1) CN114830091A (zh)
DE (1) DE112021000189T5 (zh)
GB (1) GB2607528A (zh)
WO (1) WO2021148927A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397576B2 (en) * 2020-03-18 2022-07-26 Hcl Technologies Limited Decomposing a monolithic application into one or more micro services
US11496610B2 (en) * 2020-06-26 2022-11-08 Verizon Patent And Licensing Inc. Network management data translation, querying, and discrepancy detection
US11500628B1 (en) * 2020-12-03 2022-11-15 Amazon Technologies, Inc. Isolated code detection from application code analysis
US11442725B1 (en) * 2020-12-03 2022-09-13 Amazon Technologies, Inc. Software modernization refactoring of local calls to network calls
EP4113939B1 (en) * 2021-07-02 2024-04-03 Tata Consultancy Services Limited Management and orchestration of heterogeneous network environment using dynamic, robust and network aware microservices
US11853753B1 (en) * 2021-08-23 2023-12-26 Amazon Technologies, Inc. Detection, presentation, and resolution of bottlenecks in monolith decomposition
US11847443B2 (en) 2021-09-07 2023-12-19 International Business Machines Corporation Constraints-based refactoring of monolith applications through attributed graph embeddings
US11726778B2 (en) 2021-09-29 2023-08-15 International Business Machines Corporation Translating clusters of a monolith application to microservices
US11836538B2 (en) * 2021-10-11 2023-12-05 International Business Machines Corporation Heterogeneous graph generation for application microservices
US11768679B2 (en) * 2021-11-30 2023-09-26 International Business Machines Corporation Identifying microservices for a monolith application through static code analysis
US11853725B2 (en) 2021-12-06 2023-12-26 International Business Machines Corporation Microservices recommendation framework
US11860980B2 (en) * 2022-01-05 2024-01-02 International Business Machines Corporation Cognitive method to split monolithic architecture into microservice architecture
US11893369B2 (en) 2022-01-21 2024-02-06 Red Hat, Inc. Determining a distributed system topology from a single application deployment
US11900087B1 (en) * 2022-03-23 2024-02-13 Amazon Technologies, Inc. Application binary replatforming as a service
US11758010B1 (en) 2022-09-14 2023-09-12 International Business Machines Corporation Transforming an application into a microservice architecture
CN117311801B (zh) * 2023-11-27 2024-04-09 湖南科技大学 一种基于网络化结构特征的微服务拆分方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8973008B2 (en) 2005-05-10 2015-03-03 Oracle America, Inc. Combining different resource types
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
US7509298B2 (en) 2006-03-31 2009-03-24 International Business Machines Corporation System and method for a logical-model based application understanding and transformation
US9886267B2 (en) 2014-10-30 2018-02-06 Equinix, Inc. Interconnection platform for real-time configuration and management of a cloud-based services exchange
US10785334B2 (en) 2015-06-03 2020-09-22 Telefonaktiebolaget Lm Ericsson (Publ) Implanted agent within a first service container for enabling a reverse proxy on a second container
US9842045B2 (en) * 2016-02-19 2017-12-12 International Business Machines Corporation Failure recovery testing framework for microservice-based applications
US20180136931A1 (en) * 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US10356214B2 (en) * 2017-03-29 2019-07-16 Ca, Inc. Composing monolithic applications based on multi-container applications
US10412154B2 (en) 2017-04-17 2019-09-10 Red Hat, Inc. Configuration recommendation for a microservice architecture
US10430250B2 (en) 2017-10-11 2019-10-01 International Business Machines Corporation Decomposing monolithic application into microservices
US10338913B2 (en) 2017-12-05 2019-07-02 Archemy, Inc. Active adaptation of networked compute devices using vetted reusable software components
US10620947B2 (en) * 2018-02-15 2020-04-14 Wipro Limited Method and system for migrating monolithic enterprise applications to microservice architecture
US10956680B1 (en) * 2018-10-01 2021-03-23 Knexus Research Corporation System and method for temporal expressions processing
US10637952B1 (en) * 2018-12-19 2020-04-28 Sap Se Transition architecture from monolithic systems to microservice-based systems
US20200285451A1 (en) * 2019-03-05 2020-09-10 Sap Se Decoupling microservices from a monolithic application
US11088914B2 (en) * 2019-07-31 2021-08-10 T-Mobile Usa, Inc. Migrating a monolithic software application to a microservices architecture

Also Published As

Publication number Publication date
WO2021148927A1 (en) 2021-07-29
JP2023510951A (ja) 2023-03-15
US20210232390A1 (en) 2021-07-29
GB2607528A (en) 2022-12-07
DE112021000189T5 (de) 2022-09-29
GB202212227D0 (en) 2022-10-05
US11416243B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
US11416243B2 (en) Microservice decomposition strategy of monolithic applications
US10515002B2 (en) Utilizing artificial intelligence to test cloud applications
Pan et al. Detecting web attacks with end-to-end deep learning
US11574186B2 (en) Cognitive data pseudonymization
Herbold et al. Calculation and optimization of thresholds for sets of software metrics
Althar et al. The realist approach for evaluation of computational intelligence in software engineering
CN114586048A (zh) 机器学习(ml)基础设施技术
CN114616560A (zh) 用于机器学习(ml)的自适应和上下文感知自动化服务组成的技术
US20210311860A1 (en) Intelligent application scenario testing and error detection
US11106801B1 (en) Utilizing orchestration and augmented vulnerability triage for software security testing
US20220374218A1 (en) Software application container hosting
US20220198266A1 (en) Using disentangled learning to train an interpretable deep learning model
US11550707B2 (en) Systems and methods for generating and executing a test case plan for a software product
JP2023549277A (ja) Paasクラウド環境における演算子の成功の蓋然性を予測する為の機械学習モデル
CN115186265A (zh) 左移安全风险分析
Do Xuan et al. A novel approach for software vulnerability detection based on intelligent cognitive computing
US11175907B2 (en) Intelligent application management and decommissioning in a computing environment
US20210149793A1 (en) Weighted code coverage
Gao et al. PANDA: facilitating usable AI development
Karakati et al. Software code refactoring based on deep neural network‐based fitness function
US11900075B2 (en) Serverless environment-based provisioning and deployment system
US20230281470A1 (en) Machine learning classification of object store workloads
Gaykar et al. Faulty Node Detection in HDFS Using Machine Learning Techniques.
Lal et al. Three-level learning for improving cross-project logging prediction for if-blocks
KR20210002305A (ko) 인공지능 기반 프로젝트 리스크 예측방법

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