Distributed Architecture Reconstruction of Polyglot and Multi-Repository Microservice Projects
Oscar Manglaras, Alex Farkas, Thomas Woolford, Christoph Treude, Markus Wagner
TL;DR
The paper addresses the challenge of maintaining accurate documentation for polyglot, multi-repository microservice systems by introducing a modular static-analysis framework. It features extractors—language- and technology-specific analysis modules—that operate on a shared, JSON-based architecture model, with a reconstruction algorithm to integrate outputs and support distributed reconstruction across repositories. Key contributions include a formal API for extractors, a robust aggregation mechanism with conflict handling, and retroactive linking to express inter-service relationships without tight coupling. The approach enables up-to-date architectural views in multi-repo environments and is designed for interoperability with existing static-analysis tools, with open-source tooling under ModARO. The framework has practical potential for automated documentation, dependency graph generation, and CI/CD integration, addressing practical constraints of modern microservice ecosystems.
Abstract
Microservice architectures encourage the use of small, independently developed services; however, this can lead to increased architectural complexity. Accurate documentation is crucial, but is challenging to maintain due to the rapid, independent evolution of services. While static architecture reconstruction provides a way to maintain up-to-date documentation, existing approaches suffer from technology limitations, mono-repo constraints, or high implementation barriers. This paper presents a novel framework for static architecture reconstruction that supports technology-specific analysis modules, called \emph{extractors}, and supports \emph{distributed architecture reconstruction} in multi-repo environments. We describe the core design concepts and algorithms that govern how extractors are executed, how data is passed between them, and how their outputs are unified. Furthermore, the framework is interoperable with existing static analysis tools and algorithms, allowing them to be invoked from or embedded within extractors.
