Monolithic software encapsulates all functional capabilities into a single deployable unit. But managing it becomes harder as the demand for new functionalities grow. Microservice architecture is seen as an alternate as it advocates building an application through a set of loosely coupled small services wherein each service owns a single functional responsibility. But the challenges associated with the separation of functional modules, slows down the migration of a monolithic code into microservices. In this work, we propose a representation learning based solution to tackle this problem. We use a heterogeneous graph to jointly represent software artifacts (like programs and resources) and the different relationships they share (function calls, inheritance, etc.), and perform a constraint-based clustering through a novel heterogeneous graph neural network. Experimental studies show that our approach is effective on monoliths of different types.
翻译:单体软件将所有功能能力都包装成一个可部署的单元。 但是随着对新功能的需求增加,管理起来变得更加困难。 微服务架构被视为一种替代,因为它倡导通过一套松散、互不相连的小服务来建立应用程序,其中每个服务都拥有单一功能责任。 但是,与功能模块分离相关的挑战减缓了将单体代码迁移到微观服务的过程。 在这项工作中,我们提出了一个基于代表性学习的解决方案来解决这个问题。 我们使用一个混杂的图表来共同代表软件的工艺品(类似程序和资源)以及它们所共有的不同关系(功能电话、遗产等),并通过一个新型的多面形神经网络进行基于限制的组合。 实验研究表明,我们的方法对于不同种类的单体是有效的。