Abstract
A Microservice Architecture enables the development of distributed systems using a set of highly cohesive, independent, and collaborative services, ready for current cloud computing demands. Each microservice can be implemented in different technologies, sharing common communication channels, which results in heterogeneous distributed systems that exhibit high scalability, maintainability, performance, and interoperability. Currently, there are many options to build microservices; some of them led by patterns that establish common structures to solve recurrent problems. Nevertheless, as microservices are an emerging trend, the relationship between quality attributes, metrics, and patterns is not clearly defined, which is a concern from a software engineering point of view, since such understanding is fundamental to correctly design systems using this architecture. This paper aims to extend the knowledge on the design of microservices-based systems by presenting a multivocal systematic literature review for microservices related patterns, tying them together with quality attributes and metrics, as can be found in academic and industry research.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Notes
http://www.uv.mx/personal/jocharan/files/2020/05/Quality-assessment.pdf
REFERENCES
Grushin, D.A. and Kuzyurin, N.N., On effective scheduling in computing clusters, Program. Comput. Software, 2019, vol. 45, no. 7, pp. 398–404.
Shabanov, B.M. and Samovarov, O.I., Building the software-defined data center, Program. Comput. Software, 2019, vol. 45, no. 8, pp. 458–466.
Voevodin, V.V. and Popova, N.N., Infrastructure of supercomputing technologies, Program. Comput. Software, 2019, vol. 45, no. 3, pp. 89–95.
Kryukov, A.P. and Demichev, A.P., Decentralized data storages: technologies of construction, Program. Comput. Software, 2018, vol. 44, no. 5, pp. 303–315.
Hoff, T., Amazon architecture, High Scalability, 2007. http://highscalability.com/blog/2007/9/18/amazonarchitecture.html. Accessed Nov. 7, 2018.
Netflix Conductor: a microservices orchestrator, Netflix Techblog, 2016. https://medium.com/netflix-techblog/netflix-conductor-amicroservices-orchestrator-2e8d4771bf40. Accessed Nov. 7, 2018.
Calçado, P., Building products at SoundCloud – part I: dealing with the monolith, Developers Soundcloud, 2014. https://developers.soundcloud.com/blog/building-productsat-soundcloud-part-1-dealing-with-the-monolith. Accessed Nov. 3, 2018.
Newman, S., Building Microservices: Designing Fine-Grained Systems, 1st ed., O’Reilly Media, 2015.
Lewis, J. and Fowler, M., Microservices – a definition of this new architectural term, Martinfowler.Com, 2014. http://martinfowler.com/articles/microservices.html.
Clements, P., Kazman, R., and Klein, M., Evaluating Software Architectures: Methods and Case Studies, Boston, MA: Addison-Wesley, 2001.
Bass, L., Clements, P., and Kazman, R., Software Architecture in Practice, 3rd ed., Addison-Wesley Professional, 2012.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J., Design Patterns: Elements of Reusable Object-Oriented Software, Boston, MA: Addison-Wesley Longman Publ. Co. Inc., 1995.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M., Pattern-Oriented Software Architecture, vol. 1: A System of Patterns, Wiley, 1996.
Schmidt, D.C., Stal, M., Rohnert, H., and Buschmann, F., Pattern-Oriented Software Architecture, vol. 2: Patterns for Concurrent and Networked Objects, Chichester: Wiley, 2000.
Müller, K.H. and Paulish, D.J., Software Metrics: a Practitioner’s Guide to Improved Product Development, IEEE Computer Society Press, 1993.
Garlan, D., et al., Documenting Software Architectures: Views and Beyond, 2nd ed., Addison-Wesley Professional, 2010.
Taibi, D., Lenarduzzi, V., and Pahl, C., Architectural patterns for microservices: a systematic mapping study, Proc. 8th Int. Conf. on Cloud Computing and Services Science, Funchal, 2018, pp. 221–232.
Osses, F., Márquez, G., and Astudillo, H., Poster: exploration of academic and industrial evidence about architectural tactics and patterns in microservices, Proc. Int. Conf. on Software Engineering, Göteborg, 2018, pp. 256–257.
Marquez, G. and Astudillo, H., Actual use of architectural patterns in microservices-based open source projects, Proc. Asia-Pacific Software Engineering Conf. APSEC, Nara, 2018, vol. 2018-Decem, pp. 31–40.
Valdivia, J.A., Limyn, X., and Cortes-Verdin, K., Quality attributes in patterns related to microservice architecture: a systematic literature review, Proc. 7th Int. Conf. in Software Engineering Research and Innovation (CONISOFT), Mexico, 2019, pp. 181–190.
Microsoft, Bulkhead pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead. Accessed Jan. 13, 2020.
Pahl, C. and Jamshidi, P., Microservices: a systematic mapping study, Proc. 6th Int. Conf. on Cloud Computing and Services Science, Rome, 2016, vol. 1, pp. 137–146.
Alshuqayran, N., Ali, N., and Evans, R., A systematic mapping study in microservice architecture, Proc. 9th IEEE Int. Conf. on Service-Oriented Computing and Applications, SOCA 2016, Macau, 2016, pp. 44–51.
Vural, H., Koyuncu, M., and Guney, S., A systematic literature review on microservices, in Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 2017, vol. 10409 LNCS, pp. 203–217.
Neri, D., Soldani, J., Zimmermann, O., and Brogi, A., Design principles, architectural smells and refactorings for microservices: a multivocal review, Software-Intensive Cyber-Phys. Syst., 2020, vol. 35, pp. 3–15.
Soldani, J., Tamburri, D.A., and Van Den Heuvel, W.J., The pains and gains of microservices: a systematic grey literature review, J. Syst. Software, 2018, vol. 146, pp. 215–232.
Garousi, V., Felderer, M., and Mäntylä, M.V., Guidelines for including grey literature and conducting multivocal literature reviews in software engineering, Inf. Software Technol., 2019, vol. 106, pp. 101–121.
Kitchenham, B. and Charters, S., Guidelines for performing Systematic Literature Reviews in Software Engineering, 2007.
Noblit, G.W. and Hare, R.D., Meta-ethnography: synthesizing qualitative sudies, Particularities: Collect. Essays Ethnography Edu., 1999, vol. 4, pp. 93–123.
Wohlin, C., Guidelines for snowballing in systematic literature studies and a replication in software engineering, Proc. 18th Int. Conf. on Evaluation and Assessment in Software Engineering, London, 2014, p. 38.
ISO/IEC 25010: Systems and Software Engineering-Systems and Software Quality Requirements and Evaluation (SQuaRE)-System and Software Quality Models, 2011.
Taylor, R.N., Medvidovic, N., and Dashofy, E.M., Software Architecture: Foundations, Theory, and Practice, Wiley, 2009.
Khomh, F. and Abtahizadeh, S.A., Understanding the impact of cloud patterns on performance and energy consumption, J. Syst. Software, 2018, vol. 141, pp. 151–170.
Carneiro, C. and Schmelmer, T., Microservices from Day One, Berkeley: Apress, 2016.
Hecht, G., Jose-Scheidt, B., De Figueiredo, C., Moha, N., and Khomh, F., An empirical study of the impact of cloud patterns on Quality of Service (QoS), Proc. 6th IEEE Int. Conf. on Cloud Computing Technology and Science, Singapore, 2014, pp. 278–283.
Aram, K., A microservices implementation journey – part 1, Medium Koukia blog, 2018. https://koukia.ca/a-microservices-implementation-journey-part-1-9f6471fe917. Accessed Jan. 12, 2020.
Bogner, J., Fritzsch, J., Wagner, S., and Zimmermann, A., Assuring the evolvability of microservices: insights into industry practices and challenges, Proc. IEEE Int. Conf. on Software Software Maintenance and Evolution (ICSME), Cleveland, 2019, pp. 546–556.
Sahiti, K., Everything you need to know about microservices design patterns, Edureka blog, 2019. https://www.edureka.co/blog/microservices-design-patterns. Accessed Jan. 12, 2020.
Microsoft, Responsibility Segregation (CQRS) pattern, Azure Architecture Center, 2019. https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs. Accessed Jan. 13, 2020.
Dwivedi, A.K. and Rath, S.K., Incorporating security features in service-oriented architecture using security patterns, ACM SIGSOFT Software Eng. Notes, 2015, vol. 40, no. 1, pp. 1–6.
Brown, K. and Woolf, B., Implementation patterns for microservices architectures, Proc. Conf. on Pattern Language of Programs, Buenos Aires, 2016, p. 7.
Torkura, K.A., Sukmana, M.I.H., Cheng, F., and Meinel, C., Leveraging cloud native design patterns for security-as-a-service applications, Proc. 2nd IEEE Int. Conf. on Smart Cloud, SmartCloud 2017, New York, 2017, pp. 90–97.
Rodríguez, G., Díaz-Pace, J.A., andSoria, Á., A case-based reasoning approach to reuse quality-driven designs in service-oriented architectures, Inf. Syst., 2018, vol. 77, pp. 167–189.
Balalaie, A., Heydarnoori, A., Jamshidi, P., Tamburri, D.A., and Lynn, T., Microservices migration patterns, Software Pract. Exper., 2018, vol. 48, no. 11, pp. 2019–2042.
Microsoft, Designing a microservice-oriented application, .NET Microservices: Architecture for Containerized. NET Applications, 2018. https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/microservice-application-design. Accessed Jan. 12, 2020.
Márquez, G. and Astudillo, H., Identifying availability tactics to support security architectural design of microservice-based systems, Proc. European Conf. on Software Architecture (ECSA), Paris, 2019, pp. 123–129.
Richardson, C., Building microservices: using an API gateway, Nginx blog, 2015. https://www.nginx.com/blog/building-microservices-usingan-api-gateway/. Accessed Jan. 12, 2020.
Harms, H., Rogowski, C., and Lo Iacono, L., Guidelines for adopting frontend architectures and patterns in microservices-based systems, Proc. ACM SIGSOFT Symp. on the Foundations of Software Engineering, Paderborn, 2017, vol. Part F1301, pp. 902–907.
Microsoft, Gateway routing pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-routing. Accessed Jan. 13, 2020.
Müssig, D., Stricker, R., Lässig, J., and Heider, J., Highly scalable microservice-based enterprise architecture for smart ecosystems in hybrid cloud environments, Proc. 19th Int. Conf. on Enterprise Information Systems, Porto, 2017, vol. 3, pp. 454–459.
Microsoft, Backends for frontends pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends. Accessed Jan. 12, 2020.
Microsoft, Strangler pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/strangler. Accessed Jan. 13, 2020.
Microsoft, Anti-corruption layer pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer. Accessed Jan. 12, 2020.
Microsoft, Ambassador pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/ambassador. Accessed Jan. 12, 2020.
Microsoft, Sidecar pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecar. Accessed Jan. 13, 2020.
Microsoft, Gateway aggregation pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation. Accessed Jan. 13, 2020.
Microsoft, Gateway offloading pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading. Accessed Jan. 13, 2020.
Author information
Authors and Affiliations
Corresponding authors
Rights and permissions
About this article
Cite this article
Valdivia, J.A., Lora-González, A., Limón, X. et al. Patterns Related to Microservice Architecture: a Multivocal Literature Review. Program Comput Soft 46, 594–608 (2020). https://doi.org/10.1134/S0361768820080253
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S0361768820080253