Skip to main content

Microservices: Yesterday, Today, and Tomorrow

  • Chapter
  • First Online:
Present and Ulterior Software Engineering

Abstract

Microservices is an architectural style inspired by service-oriented computing that has recently started gaining popularity. Before presenting the current state of the art in the field, this chapter reviews the history of software architecture, the reasons that led to the diffusion of objects and services first, and microservices later. Finally, open problems and future challenges are introduced. This survey primarily addresses newcomers to the discipline, while offering an academic viewpoint on the topic. In addition, we investigate some practical issues and point out a few potential solutions.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Akentev, E., Tchitchigin, A., Safina, L., Mazzara, M.: Verified type-checker for Jolie. https://arxiv.org/pdf/1703.05186.pdf

  2. Allen, E.B., Khoshgoftaar, T.M., Chen, Y.: Measuring coupling and cohesion of software modules: an information-theory approach. In: Proceedings Seventh International Software Metrics Symposium, pp. 124–134 (2001)

    Google Scholar 

  3. Bandura, A., Kurilenko, N., Mazzara, M., Rivera, V., Safina, L., Tchitchigin, A.: Jolie community on the rise. In: 9th IEEE International Conference on Service-Oriented Computing and Applications, SOCA (2016)

    Google Scholar 

  4. Bass, L.: Software Architecture in Practice. Pearson Education India, New Delhi (2007)

    Google Scholar 

  5. Bass, L., Merson, P., O’Brien, L.: Quality attributes and service-oriented architectures. Department of Defense, Technical Report September (2005)

    Google Scholar 

  6. Bieman, J.M., Kang, B.-K.: Cohesion and reuse in an object-oriented system. In: Proceedings of the 1995 Symposium on Software Reusability, SSR ’95, pp. 259–262. ACM, New York (1995)

    Google Scholar 

  7. Birrell, A., Nelson, G., Owicki, S., Wobber, E.: Network objects. SIGOPS Oper. Syst. Rev. 27(5), 217–230 (1993)

    Article  Google Scholar 

  8. Bosch, J.: Software architecture: the next step. In: Software Architecture, pp. 194–199. Springer, Berlin (2004)

    Chapter  Google Scholar 

  9. Bravetti, M., Zavattaro, G.: Towards a unifying theory for choreography conformance and contract compliance. In: Software Composition, pp. 34–50. Springer, Berlin, Heidelberg (2007)

    Google Scholar 

  10. Briand, L.C., Daly, J.W., Wüst, J.K.: A unified framework for coupling measurement in object-oriented systems. IEEE Trans. Softw. Eng. 25(1), 91–121 (1999)

    Article  Google Scholar 

  11. Brooks, F.P.: The Mythical Man-Month, vol. 1995. Addison-Wesley, Reading (1975)

    Google Scholar 

  12. Caires, L., Pérez, J.A.: Multiparty session types within a canonical binary theory, and beyond. In: Formal Techniques for Distributed Objects, Components, and Systems - 36th IFIP WG 6.1 International Conference, FORTE 2016, Held as Part of the 11th International Federated Conference on Distributed Computing Techniques, DisCoTec 2016, Heraklion, Crete,June 6–9, 2016, Proceedings, pp. 74–95 (2016)

    Chapter  Google Scholar 

  13. Caires, L., Pfenning, F.: Session types as intuitionistic linear propositions. In: CONCUR, pp. 222–236 (2010)

    Chapter  Google Scholar 

  14. Carbone, M., Montesi, F.: Deadlock-freedom-by-design: multiparty asynchronous global programming. In: POPL, pp. 263–274 (2013)

    Article  Google Scholar 

  15. Carbone, M., Honda, K., Yoshida, N.: Structured communication-centered programming for web services. ACM Trans. Program. Lang. Syst. 34(2), 8 (2012)

    Article  Google Scholar 

  16. Carbone, M., Montesi, F., Schürmann, C.: Choreographies, logically. In: CONCUR, pp. 47–62 (2014)

    Google Scholar 

  17. Carbone, M., Montesi, F., Schürmann, C., Yoshida, N.: Multiparty session types as coherence proofs. In: CONCUR, pp. 412–426 (2015)

    Google Scholar 

  18. Carbone, M., Lindley, S., Montesi, F., Schürmann, C., Wadler, P.: Coherence generalises duality: a logical explanation of multiparty session types. In: Desharnais, J., Jagadeesan, R. (eds.) 27th International Conference on Concurrency Theory (CONCUR 2016). Leibniz International Proceedings in Informatics (LIPIcs), vol. 59, pp. 33:1–33:15. Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, Dagstuhl (2016). doi:10.4230/LIPIcs.CONCUR.2016.33, ISBN:978-3-95977-017-0. http://drops.dagstuhl.de/opus/volltexte/2016/6181

  19. Christensen, E., Curbera, F., Meredith, G., Weerawarana, S., et al.: Web services description language (wsdl) 1.1 (2001)

    Google Scholar 

  20. Cohen, J., Brown, E., DuRette, B., Teleki, S.: Best Kept Secrets of Peer Code Review. Smart Bear, Somerville (2006)

    Google Scholar 

  21. Compton, B.T., Withrow, C.: Prediction and control of ADA software defects. J. Syst. Softw. 12(3), 199–207 (1990)

    Article  Google Scholar 

  22. Conway, M.E.: How do committees invent. Datamation 14(4), 28–31 (1968)

    Google Scholar 

  23. Cruz-Filipe, L., Montesi, F.: Choreographies, computationally. In: CoRR, abs/1510.03271 (2015)

    Google Scholar 

  24. Cruz-Filipe, L., Montesi, F.: Choreographies, divided and conquered. In: CoRR, abs/1602.03729 (2016)

    Google Scholar 

  25. Dhama, H.: Quantitative models of cohesion and coupling in software. J. Syst. Softw. 29(1), 65–74 (1995)

    Article  Google Scholar 

  26. Dragoni, N., Lanese, I., Larsen, S.T., Mazzara, M., Mustafin, R., Safina, L.: Microservices: how to make your application scale. In: A.P. Ershov Informatics Conference (the PSI Conference Series, 11th edn.). Springer, Berlin (2017)

    Google Scholar 

  27. Dragoni, N., Dustdar, S., Larse, S.T., Mazzara, M.: Microservices: migration of a mission critical system. https://arxiv.org/abs/1704.04173

  28. El Emam, K., Goel, N., Melo, W., Lounis, H., Rai, S.N., et al.: The optimal class size for object-oriented software. IEEE Trans. Softw. Eng. 28(5), 494–509 (2002)

    Article  Google Scholar 

  29. Fagan, M.: Design and code inspections to reduce errors in program development. In: Software Pioneers, pp. 575–607. Springer, Berlin (2002)

    Chapter  Google Scholar 

  30. Fielding, R.T.: Architectural styles and the design of network-based software architectures. PhD thesis, University of California, Irvine (2000)

    Google Scholar 

  31. Flow: A static type checker for JavaScript. https://flowtype.org/

  32. Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley Longman, Boston (2002)

    Google Scholar 

  33. Fowler, M., Foemmel, M.: Continuous integration. https://www.thoughtworks.com/continuous-integration (2006)

  34. Fowler, M., Lewis, J.: Microservices. http://martinfowler.com/articles/microservices.html (2014)

  35. Gabbrielli, M., Giallorenzo, S., Montesi, F.: Applied choreographies. In: CoRR, abs/1510.03637 (2015)

    Google Scholar 

  36. Gabbrielli, M., Giallorenzo, S., Guidi, C., Mauro, J., Montesi, F.: Self-reconfiguring microservices. In: Theory and Practice of Formal Methods, pp. 194–210. Springer, Berlin (2016)

    Chapter  Google Scholar 

  37. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education India, New Delhi (1995)

    MATH  Google Scholar 

  38. Gao, J., Rahman, M.: A reusable automated acceptance testing architecture for microservices in behavior-driven development. In: Proceedings of the 2015 IEEE Symposium on Service-Oriented System Engineering (SOSE ’15), pp. 321–325. IEEE Computer Society, Washington, DC (2015). doi:10.1109/SOSE.2015.55, ISBN:978-1-4799-8356-8. http://dx.doi.org/10.1109/SOSE.2015.55

  39. Gray, J.: A conversation with Werner Vogels. ACM Queue 4(4), 14–22 (2006)

    Article  Google Scholar 

  40. Grosso, W.: Java RMI, 1st edn. O’Reilly & Associates, Inc., Newton (2001)

    Google Scholar 

  41. Guidi, C.: Formalizing languages for service oriented computing. Ph.D. thesis, University of Bologna (2007)

    Google Scholar 

  42. Hatton, L.: Reexamining the fault density-component size connection. IEEE Softw. 14(2), 89–97 (1997)

    Article  Google Scholar 

  43. Hewitt, C., Bishop, P., Steiger, R.: A universal modular actor formalism for artificial intelligence. In: Proceedings of the 3rd International Joint Conference on Artificial Intelligence, IJCAI’73, pp. 235–245. Morgan Kaufmann, Burlington (1973)

    Google Scholar 

  44. Hitz, M., Montazeri, B.: Measuring coupling and cohesion in object-oriented systems. Citeseer (1995)

    Google Scholar 

  45. Honda, K., Vasconcelos, V., Kubo, M.: Language primitives and type disciplines for structured communication-based programming. In: Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems, pp. 22–138 (1998)

    Chapter  Google Scholar 

  46. Honda, K., Yoshida, N., Carbone, M.: Multiparty asynchronous session types. J. ACM 63(1), 9 (2016). Also: POPL, pp. 273–284 (2008)

    Google Scholar 

  47. Krause, L.: Microservices: Patterns and Applications, 1 edn. Lucas Krause, Paris (2014). 1 April 2015

    Google Scholar 

  48. Le, V.D., Neff, M.M., Stewart, R.V., Kelley, R., Fritzinger, E., Dascalu, S.M., Harris, F.C.: Microservice-based architecture for the NRDC. In: 2015 IEEE 13th International Conference on Industrial Informatics (INDIN), July 2015, pp. 1659–1664

    Google Scholar 

  49. López, H.A., Nielson, F., Nielson, H.R.: Enforcing availability in failure-aware communicating systems. In: Formal Techniques for Distributed Objects, Components, and Systems - 36th IFIP WG 6.1 International Conference, FORTE 2016, Held as Part of the 11th International Federated Conference on Distributed Computing Techniques, DisCoTec 2016, Heraklion, Crete, June 6–9, 2016, Proceedings, pp. 195–211 (2016)

    Chapter  Google Scholar 

  50. Lucchi, R., Mazzara, M.: A pi-calculus based semantics for WS-BPEL. J. Logic Algebraic Program. 70(1), 96–118 (2007)

    Article  MathSciNet  Google Scholar 

  51. MacKenzie, M.C., Laskey, K., McCabe, F., Brown, P.F., Metz, R., Hamilton, B.A.: Reference model for service oriented architecture 1.0. OASIS Standard, 12 Oct 2006

    Google Scholar 

  52. Mauro, T.: Adopting microservices at netflix: lessons for team and process design. http://nginx.com/blog/adopting-microservices-at-netflix-lessons-for-team-and-process-design/ (2015)

  53. Mazzara, M.: Towards abstractions for web services composition. Ph.D. thesis, University of Bologna (2006)

    Google Scholar 

  54. Mazzara, M., Govoni, S.: A Case Study of Web Services Orchestration, pp. 1–16. Springer, Berlin, Heidelberg (2005)

    Google Scholar 

  55. Mazzara, M., Montesi, F., Guidi, C., Lanese, I.: Microservices: a language-based approach. In: Present and Ulterior Software Engineering. Springer, Berlin (2017)

    Google Scholar 

  56. Merkel, D.: Docker: lightweight Linux containers for consistent development and deployment. Linux J. 2014(239), 2 (2014)

    Google Scholar 

  57. Milner, R.: A Calculus of Communicating Systems. Lecture Notes in Computer Science, vol. 92. Springer, Berlin (1980)

    Google Scholar 

  58. Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes, I and II. Inf. Comput. 100(1), 1–40, 41–77 (1992)

    Google Scholar 

  59. Mingela, B., Troshkov, N., Mazzara, M., Safina, L., Tchitchigin, A.: Towards static type-checking for Jolie. https://arxiv.org/pdf/1702.07146.pdf

  60. Montesi, F.: Choreographic programming. Ph.D. thesis, IT University of Copenhagen. http://www.fabriziomontesi.com/files/choreographic_programming.pdf (2013)

  61. Montesi, F.: Process-aware web programming with Jolie. Sci. Comput. Program. 130, 69–96 (2016)

    Article  Google Scholar 

  62. Montesi, F., Yoshida, N.: Compositional choreographies. In: CONCUR, pp. 425–439 (2013)

    Chapter  Google Scholar 

  63. Montesi, F., Guidi, C., Zavattaro, G.: Service-Oriented Programming with Jolie. In: Web Services Foundations, pp. 81–107. Springer, Berlin (2014)

    Google Scholar 

  64. Newman, S.: Building Microservices. O’Reilly Media, Sebastopol (2015)

    Google Scholar 

  65. Nwana, H.S.: Software agents: an overview. Knowl. Eng. Rev. 11, 205–244, 9 (1996)

    Article  Google Scholar 

  66. OASIS: Web Services Business Process Execution Language. http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html

  67. OMG: Common Object Request Broker Architecture. http://www.omg.org/spec/CORBA/

  68. Ongaro, D., Ousterhout, J.K.: In search of an understandable consensus algorithm. In: 2014 USENIX Annual Technical Conference, USENIX ATC ’14, Philadelphia, PA, 19–20 June 2014, pp. 305–319

    Google Scholar 

  69. Peltz, C.: Web services orchestration and choreography. Computer 36(10), 46–52 (2003)

    Article  Google Scholar 

  70. Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. ACM SIGSOFT Softw. Eng. Notes 17(4), 40–52 (1992)

    Article  Google Scholar 

  71. Prunicki, A.: Apache thrift (2009)

    Google Scholar 

  72. Raymond, E.S.: The Art of Unix Programming. Addison-Wesley Professional, Indianapolis (2003)

    Google Scholar 

  73. Rotem-Gal-Oz, A.: Fallacies of distributed computing explained, p. 20. http://www.rgoarchitects.com/Files/fallacies.pdf (2006)

  74. Safina, L., Mazzara, M., Montesi, F., Rivera, V.: Data-driven workflows for microservices (genericity in Jolie). In: Proc. of The 30th IEEE International Conference on Advanced Information Networking and Applications (AINA) (2016)

    Google Scholar 

  75. Shaw, M., Garlan, D.: Software architecture: perspectives on an emerging discipline, vol. 1. Prentice Hall, Englewood Cliffs (1996)

    MATH  Google Scholar 

  76. Sun, Y., Nanda, S., Jaeger, T.: Security-as-a-service for microservices-based cloud applications. In: Proceedings of the 2015 IEEE 7th International Conference on Cloud Computing Technology and Science (CloudCom), CLOUDCOM ’15, pp. 50–57. IEEE Computer Society, Washington, DC (2015)

    Google Scholar 

  77. Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley Longman Publishing Co., Inc., Boston (2002)

    MATH  Google Scholar 

  78. Tchitchigin, A., Safina, L., Mazzara, M., Elwakil, M., Montesi, F., Rivera, V.: Refinement types in Jolie. In: Spring/Summer Young Researchers Colloquium on Software Engineering, SYRCoSE (2016)

    Google Scholar 

  79. Toninho, B., Caires, L., Pfenning, F.: Higher-order processes, functions, and sessions: a monadic integration. In: Programming Languages and Systems - 22nd European Symposium on Programming, ESOP 2013, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, Rome, March 16–24, 2013. Proceedings, pp. 350–369 (2013)

    Chapter  Google Scholar 

  80. Varda, K.: Protocol buffers: Google’s data interchange format. Google Open Source Blog, Available at least as early as July 2008

    Google Scholar 

  81. W3C: Web services architecture. http://www.w3.org/TR/ws-arch/

  82. W3C: Web services choreography description language. https://www.w3.org/TR/ws-cdl-10/

  83. Wadler, P.: Propositions as sessions. J. Funct. Program. 24(2–3), 384–418 (2014). Also: ICFP, pp. 273–286 (2012)

    Article  MathSciNet  Google Scholar 

  84. Wang, A., Tonse, S.: Announcing ribbon: tying the netflix mid-tier services together, January 2013. http://techblog.netflix.com/2013/01/announcing-ribbon-tying-netflix-mid.html

  85. Web Services Choreography Working Group et al.: Web services choreography description language (2002)

    Google Scholar 

  86. Yan, Z., Mazzara, M., Cimpian, E., Urbanec, A.: Business process modeling: classifications and perspectives. In: Business Process and Services Computing: 1st International Working Conference on Business Process and Services Computing, BPSC 2007, September 25–26, 2007, Leipzig, p. 222 (2007)

    Google Scholar 

Download references

Acknowledgements

Montesi was supported by Choreographies for Reliable and efficient Communication software (CRC), grant no. DFF–4005-00304 from the Danish Council for Independent Research. Giallorenzo was supported by the EU EIT Digital project SMAll. This work has been partially funded by an Erasmus Mundus Scholarship. We would like to thank Daniel Martin Johnston who played a major role in proofreading the final draft of the chapter and improving the quality of writing.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Manuel Mazzara .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer International Publishing AG

About this chapter

Cite this chapter

Dragoni, N. et al. (2017). Microservices: Yesterday, Today, and Tomorrow. In: Mazzara, M., Meyer, B. (eds) Present and Ulterior Software Engineering. Springer, Cham. https://doi.org/10.1007/978-3-319-67425-4_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-67425-4_12

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-67424-7

  • Online ISBN: 978-3-319-67425-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics