Vera-Rivera Fredy H, Gaona Carlos, Astudillo Hernán
GIA Research Group, Universidad Francisco de Paula Santander, Cúcuta, Norte de Santander, Colombia.
GEDI Research Group, Universidad del Valle, Santiago de Cali, Valle del Cauca, Colombia.
PeerJ Comput Sci. 2021 Sep 8;7:e695. doi: 10.7717/peerj-cs.695. eCollection 2021.
Microservices are an architectural approach of growing use, and the optimal granularity of a microservice directly affects the application's quality attributes and usage of computational resources. Determining microservice granularity is an open research topic.
We conducted a systematic literature review to analyze literature that addresses the definition of microservice granularity. We searched in IEEE Xplore, ACM Digital Library and Scopus. The research questions were: Which approaches have been proposed to define microservice granularity and determine the microservices' size? Which metrics are used to evaluate microservice granularity? Which quality attributes are addressed when researching microservice granularity?
We found 326 papers and selected 29 after applying inclusion and exclusion criteria. The quality attributes most often addressed are runtime properties (, scalability and performance), not development properties (, maintainability). Most proposed metrics were about the product, both static (coupling, cohesion, complexity, source code) and runtime (performance, and usage of computational resources), and a few were about the development team and process. The most used techniques for defining microservices granularity were machine learning (clustering), semantic similarity, genetic programming, and domain engineering. Most papers were concerned with migration from monoliths to microservices; and a few addressed green-field development, but none address improvement of granularity in existing microservice-based systems.
Methodologically speaking, microservice granularity research is at a Wild West stage: no standard definition, no clear development-operation trade-offs, and scarce conceptual reuse (., few methods seem applicable or replicable in projects other than their initial proposal). These gaps in granularity research offer clear options to investigate on continuous improvement of the development and operation of microservice-based systems.
微服务是一种使用日益广泛的架构方法,微服务的最佳粒度直接影响应用程序的质量属性和计算资源的使用。确定微服务粒度是一个开放的研究课题。
我们进行了一项系统的文献综述,以分析涉及微服务粒度定义的文献。我们在IEEE Xplore、ACM数字图书馆和Scopus中进行了搜索。研究问题如下:已经提出了哪些方法来定义微服务粒度并确定微服务的大小?使用哪些指标来评估微服务粒度?在研究微服务粒度时涉及哪些质量属性?
我们找到了326篇论文,在应用纳入和排除标准后选择了29篇。最常涉及的质量属性是运行时属性(如可扩展性和性能),而非开发属性(如可维护性)。大多数提出的指标是关于产品的,包括静态指标(耦合、内聚、复杂度、源代码)和运行时指标(性能和计算资源使用情况),还有一些是关于开发团队和流程的。定义微服务粒度最常用的技术是机器学习(聚类)、语义相似度、遗传编程和领域工程。大多数论文关注从单体架构向微服务的迁移;少数涉及全新开发,但没有一篇涉及改进现有基于微服务的系统中的粒度。
从方法学角度来看,微服务粒度研究处于蛮荒阶段:没有标准定义,没有明确的开发与运营权衡,概念复用稀缺(例如,除了最初提出的项目外,很少有方法似乎适用于或可复制到其他项目)。粒度研究中的这些差距为研究基于微服务的系统的开发和运营的持续改进提供了明确的选择。