Analyzing Evolution of Microservice-based Systems
Tomas Cerny, Gabriel Goulis, Samanta Perry, Malia Edmonds, Amr S. Abdelfattah, Matteo Esposito, Alexander Bakhtin, Valentina Lenarduzzi, Davide Taibi · 2025
Most leading technology companies are already on the cloud and continue investing in cloud-native systems built on microservices. Despite the trajectory, we lack guidance and best practices when coping with the evolvability of microservice-based systems. In a microservice architecture, applications are structured as a collection of loosely coupled, independently deployable services, each responsible for a specific functionality. However, despite the isolated microservice codebases managed by distinct teams, dependencies exist across microservices. When changes to the microservice code are made, we risk impacting other services with the potential for breakage when these get deployed. This compromises resilience and undermines stability throughout the distributed evolution. Unfortunately, we lack effective mechanisms to mitigate breaking changes when they are introduced. Our tool performs a comprehensive distributed codebase analysis based on robust AST-parsing tailored to component-based development typical for microservices. Such state-of-the-art static analysis is a promising instrument to effectively detect breaking changes or anti-patterns. Given the plethora of platforms, our demonstration focuses on Java and invites contributors to broaden platform support, offering unified intermediate representation to facilitate analysis with reusable search rules. Website: cloudhubs.github.io/cimet/|Video tutorial: youtu.be/mKWueuln_80