Migrating a monolith application into a microservices architecture can benefit from automation methods, which speed up the migration and improve the decomposition results. One of the current approaches that guide software architects on the migration is to group monolith domain entities into microservices, using the sequences of accesses of the monolith functionalities to the domain entities. In this paper, we enrich the sequence of accesses solution by applying code vectorization to the monolith, using the \textit{Code2Vec} neural network model. We apply \textit{Code2Vec} to vectorize the monolith functionalities. We propose two strategies to represent a functionality, one by aggregating its call graph methods vectors, and the other by extending the sequence of accesses approach with vectorization of the accessed entities. To evaluate these strategies, we compare the proposed strategies with the sequence of accesses strategy and an existing approach that uses class vectorization. We run all these strategies over a large set of codebases, and then compare the results of their decompositions in terms of cohesion, coupling, and complexity.
翻译:将单体应用迁移到微服务结构中, 自动化方法可以有利于将单体应用到微服务结构中, 加速迁移并改进分解结果。 目前指导软件建筑师迁移的方法之一是将单体域实体分组到微服务中, 使用单体功能的存取序列到域实体中。 在本文件中, 我们通过对单体应用编码矢量序列, 使用 \ textit{Code2Vec} 神经网络模型, 来丰富存取解决方案的顺序。 我们应用\ textit{Code2Vec} 来将单体功能矢量化。 我们提出两种战略来代表功能, 一种是汇总其调用图方法矢量的矢量, 另一种是将存取方式的序列与被存取实体的矢量进行扩展。 为了评估这些战略, 我们将这些拟议战略与存取策略的序列和使用分类矢量法的现有方法进行比较。 我们用大量的代码库来管理所有这些策略, 然后比较它们解析的结果。