Microservices: Yesterday, Today, and Tomorrow

  • Nicola Dragoni
  • Saverio Giallorenzo
  • Alberto Lluch Lafuente
  • Manuel Mazzara
  • Fabrizio Montesi
  • Ruslan Mustafin
  • Larisa Safina
Chapter

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Notes

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.

References

  1. 1.
    Akentev, E., Tchitchigin, A., Safina, L., Mazzara, M.: Verified type-checker for Jolie. https://arxiv.org/pdf/1703.05186.pdf
  2. 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. 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. 4.
    Bass, L.: Software Architecture in Practice. Pearson Education India, New Delhi (2007)Google Scholar
  5. 5.
    Bass, L., Merson, P., O’Brien, L.: Quality attributes and service-oriented architectures. Department of Defense, Technical Report September (2005)Google Scholar
  6. 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. 7.
    Birrell, A., Nelson, G., Owicki, S., Wobber, E.: Network objects. SIGOPS Oper. Syst. Rev. 27(5), 217–230 (1993)CrossRefGoogle Scholar
  8. 8.
    Bosch, J.: Software architecture: the next step. In: Software Architecture, pp. 194–199. Springer, Berlin (2004)CrossRefGoogle Scholar
  9. 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. 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)CrossRefGoogle Scholar
  11. 11.
    Brooks, F.P.: The Mythical Man-Month, vol. 1995. Addison-Wesley, Reading (1975)Google Scholar
  12. 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)CrossRefGoogle Scholar
  13. 13.
    Caires, L., Pfenning, F.: Session types as intuitionistic linear propositions. In: CONCUR, pp. 222–236 (2010)CrossRefGoogle Scholar
  14. 14.
    Carbone, M., Montesi, F.: Deadlock-freedom-by-design: multiparty asynchronous global programming. In: POPL, pp. 263–274 (2013)CrossRefGoogle Scholar
  15. 15.
    Carbone, M., Honda, K., Yoshida, N.: Structured communication-centered programming for web services. ACM Trans. Program. Lang. Syst. 34(2), 8 (2012)CrossRefGoogle Scholar
  16. 16.
    Carbone, M., Montesi, F., Schürmann, C.: Choreographies, logically. In: CONCUR, pp. 47–62 (2014)Google Scholar
  17. 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. 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. 19.
    Christensen, E., Curbera, F., Meredith, G., Weerawarana, S., et al.: Web services description language (wsdl) 1.1 (2001)Google Scholar
  20. 20.
    Cohen, J., Brown, E., DuRette, B., Teleki, S.: Best Kept Secrets of Peer Code Review. Smart Bear, Somerville (2006)Google Scholar
  21. 21.
    Compton, B.T., Withrow, C.: Prediction and control of ADA software defects. J. Syst. Softw. 12(3), 199–207 (1990)CrossRefGoogle Scholar
  22. 22.
    Conway, M.E.: How do committees invent. Datamation 14(4), 28–31 (1968)Google Scholar
  23. 23.
    Cruz-Filipe, L., Montesi, F.: Choreographies, computationally. In: CoRR, abs/1510.03271 (2015)Google Scholar
  24. 24.
    Cruz-Filipe, L., Montesi, F.: Choreographies, divided and conquered. In: CoRR, abs/1602.03729 (2016)Google Scholar
  25. 25.
    Dhama, H.: Quantitative models of cohesion and coupling in software. J. Syst. Softw. 29(1), 65–74 (1995)CrossRefGoogle Scholar
  26. 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. 27.
    Dragoni, N., Dustdar, S., Larse, S.T., Mazzara, M.: Microservices: migration of a mission critical system. https://arxiv.org/abs/1704.04173
  28. 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)CrossRefGoogle Scholar
  29. 29.
    Fagan, M.: Design and code inspections to reduce errors in program development. In: Software Pioneers, pp. 575–607. Springer, Berlin (2002)CrossRefGoogle Scholar
  30. 30.
    Fielding, R.T.: Architectural styles and the design of network-based software architectures. PhD thesis, University of California, Irvine (2000)Google Scholar
  31. 31.
    Flow: A static type checker for JavaScript. https://flowtype.org/
  32. 32.
    Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley Longman, Boston (2002)Google Scholar
  33. 33.
    Fowler, M., Foemmel, M.: Continuous integration. https://www.thoughtworks.com/continuous-integration (2006)
  34. 34.
    Fowler, M., Lewis, J.: Microservices. http://martinfowler.com/articles/microservices.html (2014)
  35. 35.
    Gabbrielli, M., Giallorenzo, S., Montesi, F.: Applied choreographies. In: CoRR, abs/1510.03637 (2015)Google Scholar
  36. 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)CrossRefGoogle Scholar
  37. 37.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education India, New Delhi (1995)MATHGoogle Scholar
  38. 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. 39.
    Gray, J.: A conversation with Werner Vogels. ACM Queue 4(4), 14–22 (2006)CrossRefGoogle Scholar
  40. 40.
    Grosso, W.: Java RMI, 1st edn. O’Reilly & Associates, Inc., Newton (2001)Google Scholar
  41. 41.
    Guidi, C.: Formalizing languages for service oriented computing. Ph.D. thesis, University of Bologna (2007)Google Scholar
  42. 42.
    Hatton, L.: Reexamining the fault density-component size connection. IEEE Softw. 14(2), 89–97 (1997)CrossRefGoogle Scholar
  43. 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. 44.
    Hitz, M., Montazeri, B.: Measuring coupling and cohesion in object-oriented systems. Citeseer (1995)Google Scholar
  45. 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)CrossRefGoogle Scholar
  46. 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. 47.
    Krause, L.: Microservices: Patterns and Applications, 1 edn. Lucas Krause, Paris (2014). 1 April 2015Google Scholar
  48. 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–1664Google Scholar
  49. 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)CrossRefGoogle Scholar
  50. 50.
    Lucchi, R., Mazzara, M.: A pi-calculus based semantics for WS-BPEL. J. Logic Algebraic Program. 70(1), 96–118 (2007)MathSciNetCrossRefGoogle Scholar
  51. 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 2006Google Scholar
  52. 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. 53.
    Mazzara, M.: Towards abstractions for web services composition. Ph.D. thesis, University of Bologna (2006)Google Scholar
  54. 54.
    Mazzara, M., Govoni, S.: A Case Study of Web Services Orchestration, pp. 1–16. Springer, Berlin, Heidelberg (2005)Google Scholar
  55. 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. 56.
    Merkel, D.: Docker: lightweight Linux containers for consistent development and deployment. Linux J. 2014(239), 2 (2014)Google Scholar
  57. 57.
    Milner, R.: A Calculus of Communicating Systems. Lecture Notes in Computer Science, vol. 92. Springer, Berlin (1980)Google Scholar
  58. 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. 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. 60.
    Montesi, F.: Choreographic programming. Ph.D. thesis, IT University of Copenhagen. http://www.fabriziomontesi.com/files/choreographic_programming.pdf (2013)
  61. 61.
    Montesi, F.: Process-aware web programming with Jolie. Sci. Comput. Program. 130, 69–96 (2016)CrossRefGoogle Scholar
  62. 62.
    Montesi, F., Yoshida, N.: Compositional choreographies. In: CONCUR, pp. 425–439 (2013)CrossRefGoogle Scholar
  63. 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. 64.
    Newman, S.: Building Microservices. O’Reilly Media, Sebastopol (2015)Google Scholar
  65. 65.
    Nwana, H.S.: Software agents: an overview. Knowl. Eng. Rev. 11, 205–244, 9 (1996)CrossRefGoogle Scholar
  66. 66.
    OASIS: Web Services Business Process Execution Language. http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html
  67. 67.
    OMG: Common Object Request Broker Architecture. http://www.omg.org/spec/CORBA/
  68. 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–319Google Scholar
  69. 69.
    Peltz, C.: Web services orchestration and choreography. Computer 36(10), 46–52 (2003)CrossRefGoogle Scholar
  70. 70.
    Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. ACM SIGSOFT Softw. Eng. Notes 17(4), 40–52 (1992)CrossRefGoogle Scholar
  71. 71.
    Prunicki, A.: Apache thrift (2009)Google Scholar
  72. 72.
    Raymond, E.S.: The Art of Unix Programming. Addison-Wesley Professional, Indianapolis (2003)Google Scholar
  73. 73.
    Rotem-Gal-Oz, A.: Fallacies of distributed computing explained, p. 20. http://www.rgoarchitects.com/Files/fallacies.pdf (2006)
  74. 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. 75.
    Shaw, M., Garlan, D.: Software architecture: perspectives on an emerging discipline, vol. 1. Prentice Hall, Englewood Cliffs (1996)MATHGoogle Scholar
  76. 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. 77.
    Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley Longman Publishing Co., Inc., Boston (2002)MATHGoogle Scholar
  78. 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. 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)CrossRefGoogle Scholar
  80. 80.
    Varda, K.: Protocol buffers: Google’s data interchange format. Google Open Source Blog, Available at least as early as July 2008Google Scholar
  81. 81.
    W3C: Web services architecture. http://www.w3.org/TR/ws-arch/
  82. 82.
    W3C: Web services choreography description language. https://www.w3.org/TR/ws-cdl-10/
  83. 83.
    Wadler, P.: Propositions as sessions. J. Funct. Program. 24(2–3), 384–418 (2014). Also: ICFP, pp. 273–286 (2012)MathSciNetCrossRefGoogle Scholar
  84. 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. 85.
    Web Services Choreography Working Group et al.: Web services choreography description language (2002)Google Scholar
  86. 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

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  • Nicola Dragoni
    • 1
  • Saverio Giallorenzo
    • 2
  • Alberto Lluch Lafuente
    • 1
  • Manuel Mazzara
    • 3
  • Fabrizio Montesi
    • 4
  • Ruslan Mustafin
    • 3
  • Larisa Safina
    • 3
  1. 1.Technical University of DenmarkKgs. LyngbyDenmark
  2. 2.Department of Computer Science and EngineeringINRIA/University of BolognaBolognaItaly
  3. 3.Innopolis UniversityInnopolisRussia
  4. 4.University of Southern DenmarkOdense MDenmark

Personalised recommendations