Skip to main content
Log in

Promises and challenges of microservices: an exploratory study

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Microservice-based architecture is a SOA-inspired principle of building complex systems as a composition of small, loosely coupled components that communicate with each other using language-agnostic APIs. This architectural principle is now becoming increasingly popular in industry due to its advantages, such as greater software development agility and improved scalability of deployed applications. In this work, we aim at collecting and categorizing best practices, challenges, and some existing solutions for these challenges employed by practitioners successfully developing microservice-based applications for commercial use. Specifically, we focus our study on “mature” teams developing microservice-based applications for at least two years, explicitly excluding “newcomers” to the field. We conduct a broad, mixed-method study that includes in-depth interviews with 21 practitioners and a follow-up online survey with 37 respondents, covering 37 companies in total. Our study shows that, in several cases, practitioners opt to deviate from the “standard” advice, e.g., instead of splitting microservices by business capabilities, they focus on resource consumption and intended deployment infrastructure. Some also choose to refrain from using multiple programming languages for implementing their microservices, as that practice hinders reuse opportunities. In fact, our study participants identified robust and shared infrastructural support established early on in the development process as one of the main factors contributing to their success. They also identified several pressing challenges related to the efficient managing of common code across services and the support of product variants. The results of our study can benefit practitioners who are interested to learn from each other, borrow successful ideas, and avoid common mistakes. It can also inform researchers and inspire novel solutions to some of the identified challenges.

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

Similar content being viewed by others

Notes

  1. https://www.docker.com

  2. https://kubernetes.io

  3. https://prometheus.io

  4. https://grafana.com

  5. https://aws.amazon.com/api-gateway/

  6. https://kafka.apache.org

  7. https://www.rabbitmq.com

  8. https://grafana.com

  9. https://www.elastic.co/products/kibana

  10. https://www.meetup.com/

  11. https://www.linkedin.com/

  12. https://www.ic.gc.ca/eic/site/061.nsf/eng/Home

  13. https://www.reddit.com/

  14. https://groups.google.com/

  15. https://www.facebook.com/

  16. https://twitter.com/

  17. The paper presents all participants’ quotes in this style: PID: «quote».

  18. https://istio.io

  19. https://www.envoyproxy.io

  20. https://landscape.cncf.io/license=open-source

  21. https://zipkin.io

  22. https://www.jaegertracing.io

  23. https://opentracing.io

  24. https://swagger.io/

  25. The quote is anonymized, to preserve the confidentiality of the participant.

References

  • Alshuqayran N, Ali N, Evans R (2016) A systematic mapping study in microservice architecture. In: Proceedings of IEEE international conference on service-oriented computing and applications (SOCA), pp 44–51

  • Balalaie A, Heydarnoori A, Jamshidi P (2016) Microservices architecture enables DevOps: migration to a cloud-native architecture. IEEE Softw 33 (3):42–52

    Article  Google Scholar 

  • Balalaie A, Heydarnoori A, Jamshidi P, Tamburri D A, Lynn T (2018) Microservices migration patterns. Softw: Pract Exp 48(11):2019–2042

    Google Scholar 

  • Bandeira A, Medeiros CA, Paixao M, Maia PH (2019) We need to talk about microservices: an analysis from the discussions on stackoverflow. In: Proceedings of the 16th international conference on mining software repositories (MSR), pp 255–259

  • Beck K, Beedle M, van Bennekum A, Cockburn A, Cunningham W, Fowler M, Grenning J, Highsmith J, Hunt A, Jeffries R, Kern J, Marick B, Martin R C, Mellor S, Schwaber K, Sutherland J, Thomas D (2001) Manifesto for agile software development. https://agilemanifesto.org (Last accessed: July 2020)

  • Beschastnikh I, Wang P, Brun Y, Ernst MD (2016) Debugging Distributed Systems. Commun ACM 59(8):32–37

    Article  Google Scholar 

  • Bogner J, Fritzsch J, Wagner S, Zimmermann A (2019) Assuring the evolvability of microservices: insights into industry practices and challenges. In: Proceedings of the 2019 IEEE international conference on software maintenance and evolution (ICSME), pp 546–556

  • Bratthall L, Jørgensen M (2002) Can you trust a single data source exploratory software engineering case study?. Empir Softw Eng 7(1):9–26

    Article  Google Scholar 

  • Bucchiarone A, Dragoni N, Dustdar S, Larsen S T, Mazzara M (2018) From monolithic to microservices: an experience report from the banking domain. IEEE Softw 35(3):50–55

    Article  Google Scholar 

  • Carvalho L, Garcia A, Assunção WKG, de Mello R, de Lima MJ (2019) Analysis of the criteria adopted in industry to extract microservices. In: Proceedings of the joint 7th international workshop on conducting empirical studies in industry and 6th international workshop on software engineering research and industrial practice, pp 21–30

  • Chen L (2018) Microservices: architecting for continuous delivery and DevOps. In: 2018 IEEE international conference on software architecture (ICSA), pp 39–46

  • Clements P, Northrop L (2002) Software product lines: practices and patterns. Addison-Wesley Longman Publishing Co., Inc

  • Cockroft A (2014) Migrating to microservices. https://youtu.be/1wiMLkXz26M, (Last accessed: July 2020)

  • Di Francesco P, Malavolta I, Lago P (2017) Research on architecting microservices: trends, focus, and potential for industrial adoption. In: Proceedings of IEEE international conference on software architecture (ICSA), pp 21–30

  • Di Francesco P, Lago P, Malavolta I (2018) Migrating towards microservice architectures: an industrial survey. In: Proceedings of IEEE international conference on software architecture (ICSA), pp 29–38

  • Di Francesco P, Lago P, Malavolta I (2019) Architecting with microservices: a systematic mapping study. J Syst Softw 150:77–97

    Article  Google Scholar 

  • Dragoni N, Giallorenzo S, Lafuente A L, Mazzara M, Montesi F, Mustafin R, Safina L (2017) Microservices: yesterday, today, and tomorrow. Springer International Publishing, pp 195–216

  • Fenn J, Linden A (2005) Gartner’s hype cycle special report for 2005. https://www.gartner.com/doc/484424/gartners-hype-cycle-special-report (Last accessed: July 2020)

  • Fielding RT (2000) Architectural styles and the design of network-based software architectures. PhD thesis, University of California, Irvine

  • Flanigan TS, McFarlane E, Cook S (2008) Conducting survey research among physicians and other medical professionals: a review of current literature. In: Proceedings of the survey research methods section. American Statistical Association, pp 4136–4147

  • Fowler M (2015) Microservice trade-offs. https://martinfowler.com/articles/microservice-trade-offs.html, (Last accessed: July 2020)

  • Francis J, Johnston M, Robertson C, Glidewell L, Entwistle V, Eccles M, Grimshaw J (2010) What is an adequate sample size?: Operationalising data saturation for theory-based interview studies. Psychol Health 25(10):1229–1245

    Article  Google Scholar 

  • Fritzsch J, Bogner J, Wagner S, Zimmermann A (2019) Microservices migration in industry: intentions, strategies, and challenges. In: Proceedings of the 2019 IEEE international conference on software maintenance and evolution (ICSME), pp 481–490

  • Ghofrani J, Lübke D (2018) Challenges of microservices architecture: a survey on the state of the practice. In: Proceedings of the 10th central european workshop on services and their composition (ZEUS), pp 1–8

  • Goodman L (1961) Snowball sampling. Ann Math Stat 32(1):148–170

    Article  MathSciNet  Google Scholar 

  • Google Cloud (2019) Client libraries explained. https://cloud.google.com/apis/docs/client-libraries-explained, (Last accessed: July 2020)

  • Gouigoux JP, Tamzalit D (2017) From monolith to microservices: lessons learned on an industrial migration to a web oriented architecture. In: Proceedings of IEEE international conference on software architecture workshops (ICSAW), pp 62–65

  • Heinrich R, van Hoorn A, Knoche H, Li F, Lwakatare LE, Pahl C, Schulte S, Wettinger J (2017) Performance engineering for microservices: research challenges and directions. In: Companion proceedings of the 8th ACM/SPEC on international conference on performance engineering (ICPE), pp 223–226

  • Hunt A, Thomas D (1999) The pragmatic programmer: from journeyman to master. Addison-Wesley Longman Publishing

  • Jackson D, Daly J, Davidson P, Elliott D, Cameron-Traub E, Wade V, Chin C, Salamonson Y (2000) Women recovering from first-time myocardial infarction (MI): a feminist qualitative study. J Adv Nursing 32(6):1403–1411

    Article  Google Scholar 

  • Jassim GA, Whitford DL (2014) Understanding the experiences and quality of life issues of Bahraini women with breast cancer. Social Sci Med 107:189–195

    Article  Google Scholar 

  • Knoche H, Hasselbring W (2019) Drivers and barriers for microservice adoption—a survey among professionals in Germany. Int J Concept Model 14(1):1–35

    Google Scholar 

  • Krippendorff K (2011) Agreement and information in the reliability of coding. Commun Methods Meas 5(2):93–112

    Article  Google Scholar 

  • Kruchten P, Nord R L, Ozkaya I (2012) Technical debt: from metaphor to theory and practice. IEEE Softw 29(6):18–21

    Article  Google Scholar 

  • Leitner P, Wittern E, Spillner J, Hummer W (2019) A mixed-method empirical study of function-as-a-service software development in industrial practice. J Syst Softw 149:340–359

    Article  Google Scholar 

  • Lewis J, Fowler M (2014) Microservices: a definition of this new architectural term. https://www.martinfowler.com/articles/microservices.html (Last accessed: July 2020)

  • Liu X, Guo Z, Wang X, Chen F, Lian X, Tang J, Wu M, Kaashoek MF, Zhang Z (2008) D3S: debugging deployed distributed systems. In: Proceedings of USENIX symposium on networked systems design and implementation (NSDI), pp 423–437

  • Luz W, Agilar E, de Oliveira MC, de Melo CER, Pinto G, Bonifácio R (2018) An experience report on the adoption of microservices in three brazilian government institutions. In: Proceedings of Brazilian Symposium on Software Engineering (SBES), pp 32–41

  • McLarty M (2016) Microservice architecture is agile software architecture. https://www.infoworld.com/article/3075880/microservice-architecture-is-agile-software-architecture.html (Last accessed: July 2020)

  • Mitra S (2018) Dilemma on utility modules: making a jar or a separate microservice?. https://dzone.com/articles/dilemma-on-utility-module-making-a-jar-or-separate-2 (Last accessed: July 2020)

  • Morse JM (1995) The significance of saturation. Qual Health Res 5(2):147–149

    Article  Google Scholar 

  • MuleSoft (2018) Microservices and DevOps: better together. https://www.mulesoft.com/resources/api/microservices-devops-better-together (Last accessed: July 2020)

  • Nadareishvili I, Mitra R, McLarty M, Amundsen M (2016) Microservice architecture: aligning principles, practices, and culture. O’Reilly Media

  • Newcomer E, Lomow G (2005) Understanding SOA with web services. Addison-Wesley

  • O’Connor C, Joffe H (2020) Intercoder reliability in qualitative research: debates and practical guidelines. Int J Qual Methods

  • Pahl C, Jamshidi P (2016) Microservices: a systematic mapping study. In: Proceedings of the international conference on cloud computing and services science (CLOSER), pp 137–146

  • Pohl K, Böckle G, Linden FJvd (2005) Software product line engineering: foundations, principles and techniques. Springer, Berlin

  • Postel J (1980) DoD standard transmission control protocol. RFC 761:1–88

    Google Scholar 

  • Richardson C (2014) Microservice architecture. https://microservices.io/, (Last accessed: July 2020)

  • Richardson C (2018a) Pattern: API gateway/backends for frontends. https://microservices.io/patterns/apigateway.html, (Last accessed: July 2020)

  • Richardson C (2018b) Pattern: distributed tracing. https://microservices.io/patterns/observability/distributed-tracing.html, (Last accessed: July 2020)

  • Richardson C (2018c) Who is using microservices? https://microservices.io/articles/whoisusingmicroservices.htmlhttps://microservices.io/articles/whoisusingmicroservices.html (Last accessed: July 2020)

  • Rossi C, Shibley E, Su S, Beck K, Savor T, Stumm M (2016) Continuous deployment of mobile software at Facebook (Showcase). In: Proceedings of the ACM SIGSOFT international symposium on foundations of software engineering (FSE), pp 12–23

  • Seifermann V (2017) Application performance monitoring in microservice-based systems Bachelor’s thesis, Institute of Software Technology Reliable Software Systems, University of Stuttgart

  • Sinkowitz-Cochran R L (2013) Survey design: to ask or not to ask? That is the question.. Clin Infect Dis 56(8):1159–1164

    Article  Google Scholar 

  • Soldani J, Tamburri DA, Heuvel WJVD (2018) The pains and gains of microservices: a systematic grey literature review. J Syst Softw 146:215–232

    Article  Google Scholar 

  • Strauss A, Corbin J (1998) Basics of qualitative research: techniques and procedures for developing grounded theory. Sage, Thousand Oaks

  • Taibi D, Lenarduzzi V (2018) On the definition of microservice bad smells. IEEE Softw 35(3):56–62

    Article  Google Scholar 

  • Taibi D, Lenarduzzi V, Pahl C (2017) Processes, motivations, and issues for migrating to microservices architectures: an empirical investigation. IEEE Cloud Comput 4(5):22–32

    Article  Google Scholar 

  • Taibi D, Lenarduzzi V, Pahl C (2020) Microservices anti-patterns: a taxonomy. Springer International Publishing, pp 111–128

  • Viggiato M, Terra R, Rocha H, Valente MT, Figueiredo E (2018) Microservices in practice: a survey study. In: Brazilian workshop on software visualization, evolution and maintenance (VEM), pp 1–8

  • Vural H, Koyuncu M, Guney S (2017) A systematic literature review on microservices. In: Proceedings of international conference on computational science and its applications (ICCSA), pp 203–217

  • Wang Y, Kadiyala H, Rubin J (2020) Promises and challenges of microservices: an exploratory study. https://osf.io/8mxeg/wiki/home/ (Last accessed: July 2020).

  • Weiss D, Lai CTR (1999) Software product-line engineering: a family-based software development process. Addison-Wesley Longman Publishing Co., Inc

  • Zhang H, Li S, Zhang C, Jia Z, Zhong C (2019) Microservice architecture in reality: an industrial inquiry. In: 2019 IEEE international conference on software architecture (ICSA), pp 51–60

  • Zhou X, Peng X, Xie T, Sun J, Ji C, Li W, Ding D (2018) Fault analysis and debugging of microservice systems: industrial survey, benchmark system, and empirical study. IEEE Trans Softw Eng 14(8):1–18

    Google Scholar 

  • Zimmermann O (2017) Microservices tenets: agile approach to service development and deployment. Comput Sci–Res Dev 32(3):301–310

    Article  Google Scholar 

Download references

Acknowledgements

We thank all of our interview and survey participants for sharing their experience on microservice-based development with us. We also thank Huawei Technologies Sweden AB, who partially funded this work.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Yingying Wang.

Additional information

Communicated by: Xin Peng

Publisher’s note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Wang, Y., Kadiyala, H. & Rubin, J. Promises and challenges of microservices: an exploratory study. Empir Software Eng 26, 63 (2021). https://doi.org/10.1007/s10664-020-09910-y

Download citation

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10664-020-09910-y

Keywords

Navigation