Advertisement

Self-Reconfiguring Microservices

  • Maurizio Gabbrielli
  • Saverio Giallorenzo
  • Claudio Guidi
  • Jacopo Mauro
  • Fabrizio Montesi
Chapter
Part of the Lecture Notes in Computer Science book series (LNCS, 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.

Keywords

Microservices Service-Oriented Architecture Automatic deployment Optimal component allocation 

References

  1. 1.
    Amazon. AWS CloudFormation. https://aws.amazon.com/cloudformation/. Accessed January 2016
  2. 2.
    Armstrong, J.: Programming Erlang. Pragmatic Bookshelf, Raleigh (2013)Google Scholar
  3. 3.
    Microsoft Azure. https://azure.microsoft.com. Accessed January 2016
  4. 4.
    Carbone, M., Montesi, F.: Deadlock-freedom-by-design: multiparty asynchronous global programming. In: POPL, pp. 263–274. ACM (2013)Google Scholar
  5. 5.
    CenturyLink. Cloud Blueprints. https://www.ctl.io/blueprints/. Accessed January 2016
  6. 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. 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. 8.
    Cosmo, R.D., Mauro, J., Zacchiroli, S., Zavattaro, G.: Aeolus: a component model for the cloud. Inf. Comput. 239, 100–121 (2014)MathSciNetCrossRefzbMATHGoogle Scholar
  9. 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)CrossRefGoogle Scholar
  10. 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)CrossRefGoogle Scholar
  11. 11.
    DevOps. http://devops.com/. Accessed January 2016
  12. 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)CrossRefGoogle Scholar
  13. 13.
    Docker Inc. Docker. https://www.docker.com/. Accessed January 2016
  14. 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)MathSciNetCrossRefzbMATHGoogle Scholar
  15. 15.
    Flexiant. Bento Boxes. https://www.flexiant.com/2012/12/03/application-provisioning/. Accessed January 2016
  16. 16.
    Fowler, M., Lewis, J.: Microservices (2014). http://martinfowler.com/articles/microservices.html. Accessed January 2016
  17. 17.
    Gabbrielli, M., Giallorenzo, S., Montesi, F.: Applied choreographies (2015). CoRR, abs/1510.03637Google Scholar
  18. 18.
    Georgakopoulos, D., Papazoglou, M.P.: Service-Oriented Computing. The MIT Press, Cambridge (2008)Google Scholar
  19. 19.
    Google App Engine. https://cloud.google.com/appengine/docs. Accessed January 2016
  20. 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. 21.
    Jolie.: Programming Language. http://www.jolie-lang.org/. Accessed January 2016
  22. 22.
    Lamport, L.: Paxos made simple. ACM SIGACT News 32(4), 18–25 (2001)Google Scholar
  23. 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)CrossRefGoogle Scholar
  24. 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. 25.
    Mandriva. Armonic. https://armonic.readthedocs.org/en/latest/index.html. Accessed January 2016
  26. 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)CrossRefGoogle Scholar
  27. 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. 28.
    Montesi, F.: JOLIE: a Service-oriented Programming Language. Master’s thesis, University of Bologna (2010)Google Scholar
  29. 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)CrossRefGoogle Scholar
  30. 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)CrossRefGoogle Scholar
  31. 31.
    Montesi, F., Guidi, C., Zavattaro, G.: Composing services with JOLIE. In: Proceedings of ECOWS, pp. 13–22 (2007)Google Scholar
  32. 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)CrossRefGoogle Scholar
  33. 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)CrossRefGoogle Scholar
  34. 34.
    Morris, K.: Immutableserver (2013). http://martinfowler.com/bliki/ImmutableServer.html. Accessed January 2016
  35. 35.
    Netflix. Building with legos (2011). http://techblog.netflix.com/2011/08/building-with-legos.html. Accessed January 2016
  36. 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. 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)CrossRefGoogle Scholar
  38. 38.
    Oasis, B.: Web services business process execution language (2007). http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html
  39. 39.
    Ongaro, D., Ousterhout, J.: In search of an understandable consensus algorithm. In: USENIX, pp. 305–320 (2014)Google Scholar
  40. 40.
    Opscode. Chef. http://www.opscode.com/chef/. Accessed January 2016
  41. 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. 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. 43.
    Puppetlabs. Puppet. http://puppetlabs.com/. Accessed January 2016

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  • Maurizio Gabbrielli
    • 1
    • 2
  • Saverio Giallorenzo
    • 1
  • Claudio Guidi
    • 3
  • Jacopo Mauro
    • 4
  • Fabrizio Montesi
    • 5
  1. 1.Department of Computer Science and EngineeringUniversity of BolognaBolognaItaly
  2. 2.INRIA, Focus TeamBolognaItaly
  3. 3.italianaSoftwareImolaItaly
  4. 4.Department of InformaticsUniversity of OsloOsloNorway
  5. 5.Department of Mathematics and Computer ScienceUniversity of Southern DenmarkOdenseDenmark

Personalised recommendations