The Microservice Dependency Matrix
Amr S. Abdelfattah, Tomas Cerny
TL;DR
The paper addresses hidden dependencies in microservice architectures and ripple effects when changes occur. It introduces automated EDM and DDM derived from static code analysis to capture endpoint and data dependencies, and combines them into a Service Dependency Matrix (SDM). A Java/Spring Boot prototype analyzes a real testbench, the train-ticket system with 47 microservices, to produce EDM and DDM and the integrated SDM, including heatmap visualizations that reveal ts-common centralization and endpoint bottlenecks. The work enables proactive maintenance, evolution tracking, and improved visualization, while noting limitations such as the exclusion of asynchronous messaging and language scope, with future work to incorporate runtime traces and polyglot support.
Abstract
Microservices have been recognized for over a decade. They reshaped system design enabling decentralization and independence of development teams working on particular microservices. While loosely coupled microservices are desired, it is inevitable for dependencies to arise. However, these dependencies often go unnoticed by development teams. As the system evolves, making changes to one microservice may trigger a ripple effect, necessitating adjustments in dependent microservices and increasing maintenance and operational efforts. Tracking different types of dependencies across microservices becomes crucial in anticipating the consequences of development team changes. This paper introduces the Endpoint Dependency Matrix (EDM) and Data Dependency Matrix (DDM) as tools to address this challenge. We present an automated approach for tracking these dependencies and demonstrate their extraction through a case study.
