Skip to main content
Log in

Patterns Related to Microservice Architecture: a Multivocal Literature Review

  • Published:
Programming and Computer Software Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1.
Fig. 2.
Fig. 3.
Fig. 4.
Fig. 5.

Similar content being viewed by others

Notes

  1. http://www.uv.mx/personal/jocharan/files/2020/05/Quality-assessment.pdf

REFERENCES

  1. Grushin, D.A. and Kuzyurin, N.N., On effective scheduling in computing clusters, Program. Comput. Software, 2019, vol. 45, no. 7, pp. 398–404.

    Article  Google Scholar 

  2. Shabanov, B.M. and Samovarov, O.I., Building the software-defined data center, Program. Comput. Software, 2019, vol. 45, no. 8, pp. 458–466.

    Article  Google Scholar 

  3. Voevodin, V.V. and Popova, N.N., Infrastructure of supercomputing technologies, Program. Comput. Software, 2019, vol. 45, no. 3, pp. 89–95.

    Article  Google Scholar 

  4. Kryukov, A.P. and Demichev, A.P., Decentralized data storages: technologies of construction, Program. Comput. Software, 2018, vol. 44, no. 5, pp. 303–315.

    Article  Google Scholar 

  5. Hoff, T., Amazon architecture, High Scalability, 2007. http://highscalability.com/blog/2007/9/18/amazonarchitecture.html. Accessed Nov. 7, 2018.

  6. Netflix Conductor: a microservices orchestrator, Netflix Techblog, 2016. https://medium.com/netflix-techblog/netflix-conductor-amicroservices-orchestrator-2e8d4771bf40. Accessed Nov. 7, 2018.

  7. 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.

  8. Newman, S., Building Microservices: Designing Fine-Grained Systems, 1st ed., O’Reilly Media, 2015.

    Google Scholar 

  9. Lewis, J. and Fowler, M., Microservices – a definition of this new architectural term, Martinfowler.Com, 2014. http://martinfowler.com/articles/microservices.html.

  10. Clements, P., Kazman, R., and Klein, M., Evaluating Software Architectures: Methods and Case Studies, Boston, MA: Addison-Wesley, 2001.

    Google Scholar 

  11. Bass, L., Clements, P., and Kazman, R., Software Architecture in Practice, 3rd ed., Addison-Wesley Professional, 2012.

    Google Scholar 

  12. 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.

    MATH  Google Scholar 

  13. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M., Pattern-Oriented Software Architecture, vol. 1: A System of Patterns, Wiley, 1996.

  14. 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.

    Google Scholar 

  15. Müller, K.H. and Paulish, D.J., Software Metrics: a Practitioner’s Guide to Improved Product Development, IEEE Computer Society Press, 1993.

    Google Scholar 

  16. Garlan, D., et al., Documenting Software Architectures: Views and Beyond, 2nd ed., Addison-Wesley Professional, 2010.

    Google Scholar 

  17. 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.

  18. 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.

  19. 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.

  20. 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.

  21. Microsoft, Bulkhead pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead. Accessed Jan. 13, 2020.

  22. 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.

  23. 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.

  24. 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.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. 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.

    Article  Google Scholar 

  27. 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.

    Article  Google Scholar 

  28. Kitchenham, B. and Charters, S., Guidelines for performing Systematic Literature Reviews in Software Engineering, 2007.

  29. Noblit, G.W. and Hare, R.D., Meta-ethnography: synthesizing qualitative sudies, Particularities: Collect. Essays Ethnography Edu., 1999, vol. 4, pp. 93–123.

    Google Scholar 

  30. 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.

  31. ISO/IEC 25010: Systems and Software Engineering-Systems and Software Quality Requirements and Evaluation (SQuaRE)-System and Software Quality Models, 2011.

  32. Taylor, R.N., Medvidovic, N., and Dashofy, E.M., Software Architecture: Foundations, Theory, and Practice, Wiley, 2009.

    Google Scholar 

  33. 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.

    Article  Google Scholar 

  34. Carneiro, C. and Schmelmer, T., Microservices from Day One, Berkeley: Apress, 2016.

    Book  Google Scholar 

  35. 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.

  36. 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.

  37. 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.

  38. 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.

  39. Microsoft, Responsibility Segregation (CQRS) pattern, Azure Architecture Center, 2019. https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs. Accessed Jan. 13, 2020.

  40. 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.

    Article  Google Scholar 

  41. Brown, K. and Woolf, B., Implementation patterns for microservices architectures, Proc. Conf. on Pattern Language of Programs, Buenos Aires, 2016, p. 7.

  42. 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.

  43. 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.

    Article  Google Scholar 

  44. 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.

    Google Scholar 

  45. 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.

  46. 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.

  47. 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.

  48. 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.

  49. Microsoft, Gateway routing pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-routing. Accessed Jan. 13, 2020.

  50. 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.

  51. 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.

  52. Microsoft, Strangler pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/strangler. Accessed Jan. 13, 2020.

  53. 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.

  54. Microsoft, Ambassador pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/ambassador. Accessed Jan. 12, 2020.

  55. Microsoft, Sidecar pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecar. Accessed Jan. 13, 2020.

  56. Microsoft, Gateway aggregation pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation. Accessed Jan. 13, 2020.

  57. Microsoft, Gateway offloading pattern, Azure Architecture Center, 2017. https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading. Accessed Jan. 13, 2020.

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to J. A. Valdivia, A. Lora-González, X. Limón or K. Cortes-Verdin.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1134/S0361768820080253

Navigation