Skip to main content

Self-Reconfiguring Microservices

  • Chapter
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9660))

Abstract

Microservices is an emerging paradigm for the development of distributed systems that, originating from Service-Oriented Architecture, focuses on the small dimension, the loose coupling, and the dynamic topology of services. Microservices are particularly appropriate for the development of distributed systems in the Cloud. However, their dynamic nature calls for suitable techniques for their automatic deployment. In this paper we address this problem and we propose JRO (Jolie Redeployment Optimiser), a tool for the automatic and optimised deployment of microservices written in the Jolie language. The tool uses Zephyrus, a state of the art tool that automatically generates a fully detailed Service-Oriented Architecture configuration starting from a partial and abstract description of the target application.

Supported by the EU project FP7-644298 HyVar: Scalable Hybrid Variability for Distributed, Evolving Software Systems and CRC (Choreographies for Reliable and efficient Communication software), grant no. DFF–4005-00304 from the Danish Council for Independent Research.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    This is a well know example from the object oriented world, stating that there should never be more than one reason for a class to change.

  2. 2.

    DevOps are professionals that collaborate in the development of programs by reporting their experiences with tests and deployments scenarios to developers [11].

  3. 3.

    We assume that this information, usually obtained through some profiling of the services, has to be initially entered by the service developer.

  4. 4.

    This number is given just for illustrative purposes. The real service consumes indeed more resources.

  5. 5.

    ANTLR (ANother Tool for Language Recognition) - http://www.antlr.org/.

  6. 6.

    As formalized in [6], the problem solved by Zephyrus is NP-hard.

  7. 7.

    For some example of GUIs we can adopt within JRO we invite the interested reader to see the screen cast at http://www.aeolus-project.org/.

References

  1. Amazon. AWS CloudFormation. https://aws.amazon.com/cloudformation/. Accessed January 2016

  2. Armstrong, J.: Programming Erlang. Pragmatic Bookshelf, Raleigh (2013)

    Google Scholar 

  3. Microsoft Azure. https://azure.microsoft.com. Accessed January 2016

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

    Google Scholar 

  5. CenturyLink. Cloud Blueprints. https://www.ctl.io/blueprints/. Accessed January 2016

  6. Cosmo, R.D., Lienhardt, M., Mauro, J., Zacchiroli, S., Zavattaro, G., Zwolakowski, J.: Automatic application deployment in the cloud: from practice to theory and back. In: CONCUR. LIPIcs, vol. 42, pp. 1–16. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2015)

    Google Scholar 

  7. Cosmo, R.D., Lienhardt, M., Treinen, R., Zacchiroli, S., Zwolakowski, J., Eiche, A., Agahi, A.: Automated synthesis and deployment of cloud applications. In: ASE, pp. 211–222. ACM (2014)

    Google Scholar 

  8. Cosmo, R.D., Mauro, J., Zacchiroli, S., Zavattaro, G.: Aeolus: a component model for the cloud. Inf. Comput. 239, 100–121 (2014)

    Article  MathSciNet  MATH  Google Scholar 

  9. de Boer, F.S., de Gouw, S.: Combining monitoring with run-time assertion checking. In: Bernardo, M., Damiani, F., Hähnle, R., Johnsen, E.B., Schaefer, I. (eds.) SFM 2014. LNCS, vol. 8483, pp. 217–262. Springer, Heidelberg (2014)

    Chapter  Google Scholar 

  10. de Gouw, S., Lienhardt, M., Mauro, J., Nobakht, B., Zavattaro, G.: On the integration of automatic deployment into the ABS modeling language. In: Dustdar, S., Leymann, F., Villari, M. (eds.) ESOCC 2015. LNCS, vol. 9306, pp. 49–64. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  11. DevOps. http://devops.com/. Accessed January 2016

  12. Di Cosmo, R., Eiche, A., Mauro, J., Zavattaro, G., Zacchiroli, S., Zwolakowski, J.: Automatic deployment of services in the cloud with aeolus blender. In: Barros, A., Grigori, D., Narendra, N.C., Dam, H.K. (eds.) ICSOC 2015. LNCS, vol. 9435, pp. 397–411. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  13. Docker Inc. Docker. https://www.docker.com/. Accessed January 2016

  14. Fischer, M.J., Lynch, N.A., Paterson, M.S.: Impossibility of distributed consensus with one faulty process. J. ACM (JACM) 32(2), 374–382 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  15. Flexiant. Bento Boxes. https://www.flexiant.com/2012/12/03/application-provisioning/. Accessed January 2016

  16. Fowler, M., Lewis, J.: Microservices (2014). http://martinfowler.com/articles/microservices.html. Accessed January 2016

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

    Google Scholar 

  18. Georgakopoulos, D., Papazoglou, M.P.: Service-Oriented Computing. The MIT Press, Cambridge (2008)

    Google Scholar 

  19. Google App Engine. https://cloud.google.com/appengine/docs. Accessed January 2016

  20. Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: IJCAI, pp. 235–245. William Kaufmann (1973)

    Google Scholar 

  21. Jolie.: Programming Language. http://www.jolie-lang.org/. Accessed January 2016

  22. Lamport, L.: Paxos made simple. ACM SIGACT News 32(4), 18–25 (2001)

    Google Scholar 

  23. Lanese, I., Bucchiarone, A., Montesi, F.: A framework for rule-based dynamic adaptation. In: Wirsing, M., Hofmann, M., Rauschmayer, A. (eds.) TGC 2010, LNCS, vol. 6084, pp. 284–300. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  24. Lascu, T.A., Mauro, J., Zavattaro, G.: A planning tool supporting the deployment of cloud applications. In: ICTAI, pp. 213–220. IEEE (2013)

    Google Scholar 

  25. Mandriva. Armonic. https://armonic.readthedocs.org/en/latest/index.html. Accessed January 2016

  26. Mauro, J., Zavattaro, G.: On the complexity of reconfiguration in systems with legacy components. In: Italiano, G.F., Pighizzini, G., Sannella, D.T. (eds.) MFCS 2015. LNCS, vol. 9234, pp. 382–393. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  27. Montesi, F.: Hack your way through the microservices revolution. http://www.infoworld.com/article/2903590/application-development/hack-your-way-through-the-microservices-revolution.html. Accessed January 2016

  28. Montesi, F.: JOLIE: a Service-oriented Programming Language. Master’s thesis, University of Bologna (2010)

    Google Scholar 

  29. Montesi, F., Carbone, M.: Programming services with correlation sets. In: Kappel, G., Maamar, Z., Motahari-Nezhad, H.R. (eds.) ICSOC 2011. LNCS, vol. 7084, pp. 125–141. Springer, Heidelberg (2011)

    Chapter  Google Scholar 

  30. Montesi, F., Guidi, C., Lucchi, R., Zavattaro, G.: JOLIE: a java orchestration language interpreter engine. Electr. Notes Theor. Comput. Sci. 181, 19–33 (2007)

    Article  Google Scholar 

  31. Montesi, F., Guidi, C., Zavattaro, G.: Composing services with JOLIE. In: Proceedings of ECOWS, pp. 13–22 (2007)

    Google Scholar 

  32. Montesi, F., Guidi, C., Zavattaro, G.: Service-oriented programming with Jolie. In: Bouguettaya, A., Sheng, Q.Z., Daniel, F. (eds.) Web Services Foundations, pp. 81–107. Springer, New York (2014)

    Chapter  Google Scholar 

  33. Montesi, F., Yoshida, N.: Compositional choreographies. In: D’Argenio, P.R., Melgratti, H. (eds.) CONCUR 2013 – Concurrency Theory. LNCS, vol. 8052, pp. 425–439. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  34. Morris, K.: Immutableserver (2013). http://martinfowler.com/bliki/ImmutableServer.html. Accessed January 2016

  35. Netflix. Building with legos (2011). http://techblog.netflix.com/2011/08/building-with-legos.html. Accessed January 2016

  36. Nginx. Adopting microservices at netflix: Lessons for architectural design (2015). https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/. Accessed January 2016

  37. Nobakht, B., de Gouw, S., de Boer, F.S.: Formal verification of service level agreements through distributed monitoring. In: Dustdar, S., Leymann, F., Villari, M. (eds.) ESOCC 2015. LNCS, vol. 9306, pp. 125–140. Springer, heidelberg (2015)

    Chapter  Google Scholar 

  38. Oasis, B.: Web services business process execution language (2007). http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html

  39. Ongaro, D., Ousterhout, J.: In search of an understandable consensus algorithm. In: USENIX, pp. 305–320 (2014)

    Google Scholar 

  40. Opscode. Chef. http://www.opscode.com/chef/. Accessed January 2016

  41. Preda, M.D., Gabbrielli, M., Giallorenzo, S., Lanese, I., Mauro, J.: Dynamic choreographies - safe runtime updates of distributed applications. In: Holvoet, T., Viroli, M. (eds.) COORDINATION. LNCS, vol. 9037, pp. 67–82. Springer, Heidelberg (2015)

    Google Scholar 

  42. Preda, M.D., Giallorenzo, S., Lanese, I., Mauro, J., Gabbrielli, M.: AIOCJ: a choreographic framework for safe adaptive distributed applications. In: Combemale, B., Pearce, D.J., Barais, O., Vinju, J.J. (eds.) SLE 2014. LNCS, vol. 8706, pp. 161–170. Springer, Heidelberg (2014)

    Google Scholar 

  43. Puppetlabs. Puppet. http://puppetlabs.com/. Accessed January 2016

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Maurizio Gabbrielli .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Gabbrielli, M., Giallorenzo, S., Guidi, C., Mauro, J., Montesi, F. (2016). Self-Reconfiguring Microservices. In: Ábrahám, E., Bonsangue, M., Johnsen, E. (eds) Theory and Practice of Formal Methods. Lecture Notes in Computer Science(), vol 9660. Springer, Cham. https://doi.org/10.1007/978-3-319-30734-3_14

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-30734-3_14

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-30733-6

  • Online ISBN: 978-3-319-30734-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics