Performance Impact of Microservices Granularity: An Evaluation with the Service Weaver Framework
Abstract
The Service Weaver framework enables the development of distributed applications in Go as modular monoliths, with the flexibility to deploy monolith components in different environments and at various levels of granularity without code changes. This work evaluates the performance of an open-source microservice application using Service Weaver, considering multiple service granularities in environments of one and two virtual machines under various workloads. The results indicate that service decoupling, while beneficial to modularity and maintenance, can significantly increase communication overhead between processes and virtual machines, negatively affecting the application’s performance and scalability. These findings highlight the importance of balancing service granularity and communication costs in the design and deployment of microservices applications.References
Campbell, M. (2023). Google Service Weaver Enables Coding as a Monolith and Deploying as Microservices. [link]. [Último acesso em 19 de abril de 2024].
Costa, L. and Ribeiro, A. N. (2021). Performance Evaluation of Microservices Featuring Different Implementation Patterns. In International Conference on Intelligent Systems Design and Applications (ISDA), pages 165–176. Springer.
Cui, J., Chen, P., and Yu, G. (2020). A Learning-based Dynamic Load Balancing Approach for Microservice Systems in Multi-cloud Environment. In IEEE 26th International Conference on Parallel and Distributed Systems (ICPADS), pages 334–341. IEEE.
Dragoni, N., Giallorenzo, S., Lafuente, A. L., Mazzara, M., Montesi, F., Mustafin, R., and Safina, L. (2017). Microservices: Yesterday, Today, and Tomorrow. In Present and Ulterior Software Engineering. Springer.
Ghemawat, S., Grandl, R., Petrovic, S., Whittaker, M., Patel, P., Posva, I., and Vahdat, A. (2023). Towards Modern Development of Cloud Applications. In Proceedings of the 19th Workshop on Hot Topics in Operating Systems, pages 110–117.
Google (2024). Service Weaver: A Programming Framework for Writing and Deploying Cloud Applications. [link]. [Último acesso em 19 de abril de 2024].
Google Cloud (2023). Online Boutique. [link]. [Último acesso em 19 de abril de 2024].
Hassan, S., Bahsoon, R., and Kazman, R. (2020). Microservice transition and its granularity problem: A systematic mapping study. Software: Practice and Experience, 50(9):1651–1681.
Homay, A., Zoitl, A., de Sousa, M., Wollschlaeger, M., and Chrysoulas, C. (2019). Granularity Cost Analysis for Function Block as a Service. In 2019 IEEE 17th International Conference on Industrial Informatics (INDIN), volume 1, pages 1199–1204. IEEE.
Jamshidi, P., Pahl, C., Mendonça, N. C., Lewis, J., and Tilkov, S. (2018). Microservices: The Journey So Far and Challenges Ahead. IEEE Software, 35(3):24–35.
Locust.io (2024). Locust: An open source load testing tool. [link]. [Último acesso em 19 de abril de 2024].
Molyneaux, I. (2014). The Art of Application Performance Testing: From Strategy to Tools. O’Reilly Media.
Newman, S. (2019). Monolith to Microservices: Evolutionary Patterns to Transform your Monolith. O’Reilly Media.
Oracle (2024). VirtualBox. [link]. [Último acesso em 19 de abril de 2024].
Park, J., Choi, B., Lee, C., and Han, D. (2021). GRAF: A graph neural network based proactive resource allocation framework for SLO-oriented microservices. In Proc. of the 17th International Conference on emerging Networking EXperiments and Technologies (CoNEXT), pages 154–167.
Preston-Werner, T. (2024). TOML: A config file format for humans. [link]. [Último acesso em 19 de abril de 2024].
Saleh Sedghpour, M. R., Klein, C., and Tordsson, J. (2022). An Empirical Study of Service Mesh Traffic Management Policies for Microservices. In ACM/SPEC Int. Conf. Performance Engineering (ICPE), pages 17–27. AMC.
Shadija, D., Rezai, M., and Hill, R. (2017). Microservices: Granularity vs. Performance. In Companion Proceedings of the 10th International Conference on Utility and Cloud Computing (UCC), pages 215–220.
Soldani, J., Muntoni, G., Neri, D., and Brogi, A. (2021). The µTOSCA toolchain: Mining, analyzing, and refactoring microservice-based architectures. Software: Practice and Experience, 51(7):1591–1621.
The Kubernetes Authors (2024). Minikube. [link]. [Último acesso em 19 de abril de 2024].
Vera-Rivera, F. H., Gaona, C., and Astudillo, H. (2021). Defining and measuring micro-service granularity—–a literature overview. PeerJ Computer Science, 7:e695.
Costa, L. and Ribeiro, A. N. (2021). Performance Evaluation of Microservices Featuring Different Implementation Patterns. In International Conference on Intelligent Systems Design and Applications (ISDA), pages 165–176. Springer.
Cui, J., Chen, P., and Yu, G. (2020). A Learning-based Dynamic Load Balancing Approach for Microservice Systems in Multi-cloud Environment. In IEEE 26th International Conference on Parallel and Distributed Systems (ICPADS), pages 334–341. IEEE.
Dragoni, N., Giallorenzo, S., Lafuente, A. L., Mazzara, M., Montesi, F., Mustafin, R., and Safina, L. (2017). Microservices: Yesterday, Today, and Tomorrow. In Present and Ulterior Software Engineering. Springer.
Ghemawat, S., Grandl, R., Petrovic, S., Whittaker, M., Patel, P., Posva, I., and Vahdat, A. (2023). Towards Modern Development of Cloud Applications. In Proceedings of the 19th Workshop on Hot Topics in Operating Systems, pages 110–117.
Google (2024). Service Weaver: A Programming Framework for Writing and Deploying Cloud Applications. [link]. [Último acesso em 19 de abril de 2024].
Google Cloud (2023). Online Boutique. [link]. [Último acesso em 19 de abril de 2024].
Hassan, S., Bahsoon, R., and Kazman, R. (2020). Microservice transition and its granularity problem: A systematic mapping study. Software: Practice and Experience, 50(9):1651–1681.
Homay, A., Zoitl, A., de Sousa, M., Wollschlaeger, M., and Chrysoulas, C. (2019). Granularity Cost Analysis for Function Block as a Service. In 2019 IEEE 17th International Conference on Industrial Informatics (INDIN), volume 1, pages 1199–1204. IEEE.
Jamshidi, P., Pahl, C., Mendonça, N. C., Lewis, J., and Tilkov, S. (2018). Microservices: The Journey So Far and Challenges Ahead. IEEE Software, 35(3):24–35.
Locust.io (2024). Locust: An open source load testing tool. [link]. [Último acesso em 19 de abril de 2024].
Molyneaux, I. (2014). The Art of Application Performance Testing: From Strategy to Tools. O’Reilly Media.
Newman, S. (2019). Monolith to Microservices: Evolutionary Patterns to Transform your Monolith. O’Reilly Media.
Oracle (2024). VirtualBox. [link]. [Último acesso em 19 de abril de 2024].
Park, J., Choi, B., Lee, C., and Han, D. (2021). GRAF: A graph neural network based proactive resource allocation framework for SLO-oriented microservices. In Proc. of the 17th International Conference on emerging Networking EXperiments and Technologies (CoNEXT), pages 154–167.
Preston-Werner, T. (2024). TOML: A config file format for humans. [link]. [Último acesso em 19 de abril de 2024].
Saleh Sedghpour, M. R., Klein, C., and Tordsson, J. (2022). An Empirical Study of Service Mesh Traffic Management Policies for Microservices. In ACM/SPEC Int. Conf. Performance Engineering (ICPE), pages 17–27. AMC.
Shadija, D., Rezai, M., and Hill, R. (2017). Microservices: Granularity vs. Performance. In Companion Proceedings of the 10th International Conference on Utility and Cloud Computing (UCC), pages 215–220.
Soldani, J., Muntoni, G., Neri, D., and Brogi, A. (2021). The µTOSCA toolchain: Mining, analyzing, and refactoring microservice-based architectures. Software: Practice and Experience, 51(7):1591–1621.
The Kubernetes Authors (2024). Minikube. [link]. [Último acesso em 19 de abril de 2024].
Vera-Rivera, F. H., Gaona, C., and Astudillo, H. (2021). Defining and measuring micro-service granularity—–a literature overview. PeerJ Computer Science, 7:e695.
Published
2024-05-20
How to Cite
MENDONÇA FILHO, Ricardo César; MENDONÇA, Nabor C..
Performance Impact of Microservices Granularity: An Evaluation with the Service Weaver Framework. In: BRAZILIAN SYMPOSIUM ON COMPUTER NETWORKS AND DISTRIBUTED SYSTEMS (SBRC), 42. , 2024, Niterói/RJ.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2024
.
p. 644-657.
ISSN 2177-9384.
DOI: https://doi.org/10.5753/sbrc.2024.1453.
