## 8 Conclusions and Future Work  
In this paper, we presented an approach to decomposing a monolithic application into microservices using a variational autoencoder (VAE)-based graph neural network (GNN) in combination with the C-means clustering algorithm (VAE-C). To train our model, we conducted static analysis on the monolith and extracted three types of data: the dependency graph, the entrypoint existence matrix, and the entrypoint co-existence matrix. We evaluated our approach using the well-established monolith-to-microservice benchmark application developed by [PERSON], which provides both monolithic and microservice implementations. We compared our VAE-C method against two baselines: Autoencoder with K-means clustering (AE-K) and Autoencoder with C-means clustering (AE-C). Our results showed that VAE-C achieved the highest match with the benchmark microservice architecture--correctly assigning 73.53% of the classes. In comparison, AE-C achieved 55.88% and AE-K significantly lagged behind at 38.24%. These findings highlight two important advantages: first, the C-means clustering algorithm's ability to assign a class to multiple services aligns more closely with real-world microservice patterns, where functional overlaps are common. Second, the latent space learned by the VAE captures richer, more semantically meaningful relationships between classes than a traditional autoencoder, enabling better clustering outcomes. Overall, our study demonstrates that VAE-C is not just an academically sound approach--it is also a practical tool that software architects can use as a guideline when decomposing monolithic systems. Unlike purely manual methods, which are time-consuming and prone to bias, our method offers a data-driven starting point that reveals potential service boundaries. It can assist practitioners in identifying cohesive groupings of classes that are candidates for microservices, while still allowing room for human judgment and domain-specific refinement. While the results are promising, we recognize that further improvements are possible. Incorporating dynamic analysis could provide deeper insights into runtime interactions and dependencies. Additionally, mining version control history--particularly the frequency of file modifications--could help inform smarter duplication strategies. For example, frequently modified classes duplicated across services could increase maintenance costs, whereas infrequently modified ones may be duplicated with minimal overhead and reduced coupling. Another promising direction is to optimize clustering by incorporating bounded contexts from domain-driven design (DDD), which could improve the semantic alignment of the resulting microservices. We leave these enhancements as directions for future research. **Author Contributions:** Conceptualization, R.M. ; methodology, R.M. and K.S. ; software, R.M. and K.S. ; validation, R.M., K.S., T.C., Y.R. and S.S.; formal analysis, R.M. and T.C. ; investigation, R.M. and T.C. ; resources, R.M., K.S., T.C., Y.R. and S.S.; data curation, R.M. ; writing--original draft preparation, R.M. ; writing--review and editing, R.M., K.S., T.C., Y.R. and S.S.; visualization, R.M., T.C., Y.R. and S.S.; supervision, R.M. and T.C. ; project administration, T.C. ; funding acquisition, T.C. All authors have read and agreed to the published version of the manuscript. All authors have read and agreed to the published version of the manuscript. **Funding:** This research was funded by the National Science Foundation under grant no. 2409933. **Data Availability Statement:** All result data and source code are available in the GitHub repository: [[https://github.com/rokinmahjan/benchmarking-monolith-to-microservices](https://github.com/rokinmahjan/benchmarking-monolith-to-microservices)]([https://github.com/rokinmahjan/benchmarking-monolith-to-microservices](https://github.com/rokinmahjan/benchmarking-monolith-to-microservices)) (accessed on 1 July 2025).