Abstract

The microservice granularity directly affects the quality attributes and usage of computational resources of the system, determining optimal microservice granularity is an open research topic. Microservices granularity is defined by the number of operations exposed by the microservice, the number of microservices that compose the whole application, and its complexity and dependencies. This paper describes “Microservice Backlog (MB)”, a semiautomatic model for defining and evaluating the granularity of microservice-based applications; MB uses genetic programming technique to calculate at design time the granularity of each microservice from the user stories in the “product backlog” or release planning; the genetic algorithm combined coupling, cohesion, granularity, semantic similarity, and complexity metrics to define the number of microservices, and the user stories associated with each microservice. MB decomposes the candidate microservices, allowing to analyze graphically the size of each microservice, as well as its complexity, dependencies, coupling, cohesion metrics, and the number of calls or requests between microservices. The resulting decomposition (number of microservices and their granularity) performed by MB shows less coupling, higher cohesion, less complexity, fewer user stories associated with each microservice, and fewer calls among microservices. MB was validated against three existing methods, using two state-of-the-art applications (Cargo Tracking and JPet-Store), and one real-life application (Foristom Conferences). The development team and/or architect can use metrics to identify the critical points of the system and determine at design time how the microservice-based application will be implemented.

Highlights

  • The complexity involved in software development has been addressed with the use of agile methodologies and practices that were born from the agile manifesto and its principles, in contrast to traditional forms [1]

  • We took the decompositions proposed by Microservices Identification Through Interface Analysis (MITIA) and Execution traces about state-of-the-art examples, we identified the operations associated with each microservice, the operations were associated with user stories

  • Whereas the real-life project were compared against domain-driven design (DDD), and the decomposition obtained by our model

Read more

Summary

Introduction

The complexity involved in software development has been addressed with the use of agile methodologies and practices that were born from the agile manifesto and its principles, in contrast to traditional forms [1]. Software companies have been practicing agile development methods [2]; according to the 14th annual state of agile report [3], accelerating software delivery and enhancing ability to manage changing priorities remain the top reasons stated for adopting agile; the more used agile techniques were daily standup, retrospectives, sprint/iteration planning, sprint/iteration review, and short iterations; the most engineering practices employed were unit testing, coding standards, continuous integration, refactoring, and continuous delivery. Content may change prior to final publication.

Methods
Results
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call