Impacto de Desempenho da Granularidade de Microsserviços: Uma Avaliação com o Arcabouço Service Weaver
Resumo
O arcabouço Service Weaver permite desenvolver aplicações distribuídas em Go como monólitos modulares, com flexibilidade para implantar os componentes do monólito em diferentes ambientes e níveis de granularidade sem alterações de código. Este trabalho avalia o desempenho de uma aplicação de microsserviços de código aberto com o Service Weaver, considerando múltiplas granularidades de serviço em ambientes de uma e duas máquinas virtuais, sob variadas cargas de trabalho. Os resultados indicam que o desacoplamento de serviços, embora beneficie a modularidade e a manutenção, pode aumentar significativamente a sobrecarga de comunicação entre processos e máquinas virtuais, afetando negativamente o desempenho e escalabilidade da aplicação. Esses achados destacam a importância de balancear a granularidade dos serviços e os custos de comunicação no projeto e implantação de aplicações de microsserviços.Referências
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.
Publicado
20/05/2024
Como Citar
MENDONÇA FILHO, Ricardo César; MENDONÇA, Nabor C..
Impacto de Desempenho da Granularidade de Microsserviços: Uma Avaliação com o Arcabouço Service Weaver. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS (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.