Abstract:
Microservice based application developments are becoming more and more popular and becoming the common trend in implementing large scale applications. Unlike the traditional monolith applications, microservice applications are composed of many services hence there is an immense possibility of anti-patterns introduced in to the system. To identify these design problems, detailed analysis of the architecture needs to be performed. Tracing data plays a significant role here but it is less useful on its own because of the complexity and the increased quantity of information. Diving in to this data and analysing them to identify anti-patterns exist is a burdensome task because of the lack of tools available thus it requires an immense human intervention and effort due to its complexity. The most common tools available for this kind of scenarios are focused on presenting the information visually so that they are more human readable. The dependency graph of a microservices system, generated by these tools is a good example. However, these tools are not up to performing analysis on the traced data and presenting developers with more statistical information such as metrics along with visualization techniques so that developers can take actions by evaluating metrics and visualizations both, not just by the visualizations. In this thesis we present a solution, a tool for this problem which is capable of utilizing traced data of a microservice system to generate dependency graph and thereby extract metrics using graph theory concepts and algorithms from the dependency graph. The graph theory concepts such as Degree, Clustering coefficient, Paths and distances are used to generate relevant metrices. These metrices are presented to the user in a statistical and a visualized way by the proposed solution so that developers can evaluate them and take decisions on refactoring. To build the proposed tool, we used some already available, industry well recognized tools to develop relevant applications, trace the data and store the data. We use a system which has been developed with microservice style for the analysis. The system has been introduced with anti-patterns intentionally. In this research we focus on anti-patterns specifically The Knot, Nano service, Chained service, Bottleneck service and Cyclic dependency. We analyse the microservice system we have developed with the solution tool presented to identify these anti-patterns.
Citation:
Gamage, I.U.P. (2021). Using dependency graph and graph theory concepts to identify anti-patterns in a microservices system: a tool-based approach [Master's theses, University of Moratuwa]. Institutional Repository University of Moratuwa. http://dl.lib.uom.lk/handle/123/20445