A Metrics Framework for Evaluating Microservices Architecture Designs
Keywords:microservices, software metrics, lack of cohesion, service granularity, service complexity
Microservices are becoming a more popular software architecture among companies and developers. Therefore, there is a need to develop methods for quantifying the process of measuring the quality of microservices design. This paper has created a novel set of metrics for microservices architecture applications. The proposed metrics are the Service Granularity Metric “SGM”, the Lack of Cohesion Metric “LCOM”, and the Number of Operations “NOO”. The proposed metrics measure the granularity, cohesion, and complexity of individual microservices through analyzing the application programming interface “API”. Using these metrics, it is possible to evaluate the overall quality of the design of microservices applications. The proposed metrics were measured on 5 applications with different sizes and business cases. This research found that the value for the SGM metric needs to be between 0.2 and 0.6. Besides, the value of LCOM metric for a microservice needs to be between 0 and 0.8 with less than ten operations per microservice. These findings can be applied in the decomposition process of monolithic applications as well.
R. Chen, S. Li, and Z. Li, ‘From Monolith to Microservices: A Dataflow-Driven Approach’, in 2017 24th Asia-Pacific Software Engineering Conference (APSEC), 2017, pp. 466–475.
P. D. Francesco, I. Malavolta, and P. Lago, ‘Research on Architecting Microservices: Trends, Focus, and Potential for Industrial Adoption’, in 2017 IEEE International Conference on Software Architecture (ICSA), Gothenburg, Sweden, 2017, pp. 21–30.
D. Kansal, T. Aher, and R. K. Joshi, ‘Sensitivity and Monotonicity in Class Cohesion Metrics’, in Proceedings of the 12th Innovations on Software Engineering Conference (formerly known as India Software Engineering Conference) - ISEC’19, Pune, India, 2019, pp. 1–5.
A. AbuHassan and M. Alshayeb, ‘A metrics suite for UML model stability’, Softw. Syst. Model., vol. 18, no. 1, pp. 557–583, Feb. 2019.
S. Newman, Building microservices: designing fine-grained systems, First Edition. Beijing Sebastopol, CA: O’Reilly Media, 2015.
D. Shadija, M. Rezai, and R. Hill, ‘Microservices: Granularity vs. Performance’, in Companion Proceedings of the10th International Conference on Utility and Cloud Computing - UCC ’17 Companion, Austin, Texas, USA, 2017, pp. 215–220.
N. Kaur, A. Negi, and H. Singh, ‘Object Oriented Dynamic Coupling and Cohesion Metrics: A Review’, in Proceedings of 2nd International Conference on Communication, Computing and Networking, 2019, pp. 861–869.
M. Glöckner, A. Ludwig, and B. Franczyk, ‘How low Should You Go? - Conceptualization of the Service Granularity Framework’, in ECIS, 2016.
M. P. Papazoglou and W.-J. V. D. Heuvel, ‘Service-Oriented Design and Development Methodology’, Int J Web Eng Technol, vol. 2, no. 4, pp. 412–442, Jul. 2006.
A. A. M. Elhag and R. Mohamad, ‘Metrics for evaluating the quality of service-oriented design’, in 2014 8th. Malaysian Software Engineering Conference (MySEC), 2014, pp. 154–159.
M. Perepletchikov, C. Ryan, and K. Frampton, ‘Cohesion Metrics for Predicting Maintainability of Service-Oriented Software’, in Seventh International Conference on Quality Software (QSIC 2007), 2007, pp. 328–335.
L. C. Briand, S. Morasca, V. R. Basili, Inputr, E-E, and Outputr, ‘Property-based Software Engineering Measurement 2 . Basic Definitions Definition 1: Representation of Systems and Modules’, 1996.
D. Athanasopoulos, A. V. Zarras, G. Miskos, V. Issarny, and P. Vassiliadis, ‘Cohesion-Driven Decomposition of Service Interfaces without Access to Source Code’, IEEE Trans. Serv. Comput., vol. 8, no. 4, pp. 550–562, Jul. 2015.
B. Heinrich and S. Zimmermann, ‘GRANULARITY METRICS FOR IT SERVICES’, p. 19.
S. Alahmari, E. Zaluska, and D. C. D. Roure, ‘A Metrics Framework for Evaluating SOA Service Granularity’, in 2011 IEEE International Conference on Services Computing, 2011, pp. 512–519.
T. Gyimothy, R. Ferenc, and I. Siket, ‘Empirical validation of object-oriented metrics on open source software for fault prediction’, IEEE Trans. Softw. Eng., vol. 31, no. 10, pp. 897–910, Oct. 2005.
K. E. Bennin, J. Keung, P. Phannachitta, A. Monden, and S. Mensah, ‘MAHAKIL: Diversity Based Oversampling Approach to Alleviate the Class Imbalance Issue in Software Defect Prediction’, IEEE Trans. Softw. Eng., vol. 44, no. 6, pp. 534–550, Jun. 2018.
A. Ampatzoglou et al., ‘Applying the Single Responsibility Principle in Industry: Modularity Benefits and Trade-offs’, in Proceedings of the Evaluation and Assessment on Software Engineering - EASE ’19, Copenhagen, Denmark, 2019, pp. 347–352.
S. R. Chidamber and C. F. Kemerer, ‘A metrics suite for object oriented design’, IEEE Trans. Softw. Eng., vol. 20, no. 6, pp. 476–493, Jun. 1994.
B. Henderson-Sellers, Object-oriented Metrics: Measures of Complexity. Upper Saddle River, NJ, USA: Prentice-Hall, Inc., 1996.
Multi-user Kanban board built using Eventuate, DDD, microservices, event sourcing, CQRS, and Spring Boot: eventuate-examples/es-kanban-board. eventuate-examples, 2019.
C. Richardson, Example code for my building and deploying microservices with event sourcing, CQRS and Docker presentation: cer/event-sourcing-examples. 2019.
‘Galileo v2.0.0 Docs — Mashape Dev API’. [Online]. Available: https://galileo.gelato.io/docs/versions/2.0.0. [Accessed: 26-Jul-2019].
‘Get Started - PayPal Developer’. [Online]. Available: https://developer.paypal.com/docs/api/overview/. [Accessed: 26-Jul-2019].
‘Amazon API Gateway’, Amazon Web Services, Inc. [Online]. Available: https://aws.amazon.com/api-gateway/. [Accessed: 26-Jul-2019].
K. P. Srinivasan and T. Devi, ‘Software Metrics Validation Methodologies in Software Engineering’, Int. J. Softw. Eng. Appl., vol. 5, no. 6, pp. 87–102, Nov. 2014.