Patterns in Microservices-based Development: A Grey Literature Review
Resumo
Microservices emerged due to the massive adoption of cloud computing and the need to integrate legacy systems. However, there still needs to be a greater understanding of adopting a microservice-based architectural style. Besides, there is a need for guidelines to operationalize those microservices. We conducted a grey literature review to identify commonly used architectural patterns and how they are implemented following design patterns. We present two key contributions. Firstly, we identified four architectural patterns and 23 design patterns. Secondly, we identified a catalog of tools for implementing the main patterns adopted when using the microservices style. The Proxy and the SAGA patterns are the most used in communicating and linking data for services. Additionally, tools such as Kubernetes, Docker, and Amazon WS are the most used for implementing microservices and deploying them into containers.
Referências
Balalaie, A., Heydarnoori, A., and Jamshidi, P. (2016). Migrating to Cloud-Native Architectures Using Microservices: An Experience Report. In Communications in Computer and Information Science, pages 201–215. Springer International Publishing.
Calderón, A., Ruiz, M., and O’Connor, R. V. (2018). A multivocal literature review on serious games for software process standards education. Computer Standards & Interfaces, 57:36–48.
Christoforou, A., Garriga, M., Andreou, A. S., and Baresi, L. (2017). Supporting the Decision of Migrating to Microservices Through Multi-Layer Fuzzy Cognitive Maps. In Service-Oriented Computing, pages 471–480. Springer International Publishing.
Debois, P. (2008). Agile infrastructure and operations: how infra-gile are you? In Agile 2008 Conference, pages 202–207. IEEE.
Garousi, V., Felderer, M., and Mäntylä, M. V. (2019). Guidelines for including grey literature and conducting multivocal literature reviews in software engineering. Information and Software Technology, 106:101–121.
Ghofrani, J. and Lübke, D. (2018). Challenges of microservices architecture: A survey on the state of the practice. ZEUS, 2018:1–8.
ISO (2011). ISO/IEC/IEEE 42010:2011 Systems and Software Engineering — Architecture Description.
Kitchenham, B. and Charters, S. (2007). Guidelines for performing systematic literature reviews in software engineering.
Mashiko, Y. and Basili, V. R. (1997). Using the gqm paradigm to investigate influential factors for software process improvement. Journal of Systems and Software, 36(1):17–32.
Pahl, C., Brogi, A., Soldani, J., and Jamshidi, P. (2017). Cloud container technologies: a state-of-the-art review. IEEE Transactions on Cloud Computing, 7(3):677–692.
Pahl, C., Jamshidi, P., and Zimmermann, O. (2020). Microservices and containers. Software Engineering 2020.
Ribeiro, F. G. C., Rettberg, A., Pereira, C. E., Steinmetz, C., and Soares, M. S. (2018). An Approach to Formalization of Architectural Viewpoints Design in Real-Time and Embedded Domain. In 21st IEEE International Symposium on Real-Time Distributed Computing, ISORC 2018, Singapore, Singapore, May 29-31, 2018, pages 59–66. IEEE Computer Society.
Shaw, M. (2002). What makes good research in software engineering? International Journal on Software Tools for Technology Transfer, 4(1):1–7.
Shaw, M. (2003). Writing good software engineering research papers. In 25th International Conference on Software Engineering, 2003. Proceedings., pages 726–736. IEEE.
Sievi-Korte, O., Richardson, I., and Beecham, S. (2019). Software Architecture Design in Global Software Development: An Empirical Study. Journal of Systems and Software, 158:110400.
Soldani, J., Tamburri, D. A., and Van Den Heuvel, W.-J. (2018). The pains and gains of microservices: A systematic grey literature review. Journal of Systems and Software, 146:215–232.
Taibi, D., El Ioini, N., Pahl, C., and Niederkofler, J. R. S. (2020). Patterns for serverless functions (function-as-a-service): A multivocal literature review.
Taibi, D., Lenarduzzi, V., and Pahl, C. (2018). Architectural patterns for microservices: A systematic mapping study. In CLOSER, pages 221–232.
Valdivia, J. A., Lora-González, A., Limón, X., Cortes-Verdin, K., and Ocharán-Hernández, J. O. (2020). Patterns related to microservice architecture: a multivocal literature review. Programming and Computer Software, 46(8):594–608.
Van Solingen, R., Basili, V., Caldiera, G., and Rombach, H. D. (2002). Goal question metric (gqm) approach. Encyclopedia of software engineering.
Yang, C., Liang, P., and Avgeriou, P. (2016). A Systematic Mapping Study on the Combination of Software Architecture and Agile Development. Journal of Systems and Software, 111:157–184.