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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 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.
DevOps are professionals that collaborate in the development of programs by reporting their experiences with tests and deployments scenarios to developers [11].
- 3.
We assume that this information, usually obtained through some profiling of the services, has to be initially entered by the service developer.
- 4.
This number is given just for illustrative purposes. The real service consumes indeed more resources.
- 5.
ANTLR (ANother Tool for Language Recognition) - http://www.antlr.org/.
- 6.
As formalized in [6], the problem solved by Zephyrus is NP-hard.
- 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
Amazon. AWS CloudFormation. https://aws.amazon.com/cloudformation/. Accessed January 2016
Armstrong, J.: Programming Erlang. Pragmatic Bookshelf, Raleigh (2013)
Microsoft Azure. https://azure.microsoft.com. Accessed January 2016
Carbone, M., Montesi, F.: Deadlock-freedom-by-design: multiparty asynchronous global programming. In: POPL, pp. 263–274. ACM (2013)
CenturyLink. Cloud Blueprints. https://www.ctl.io/blueprints/. Accessed January 2016
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)
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)
Cosmo, R.D., Mauro, J., Zacchiroli, S., Zavattaro, G.: Aeolus: a component model for the cloud. Inf. Comput. 239, 100–121 (2014)
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)
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)
DevOps. http://devops.com/. Accessed January 2016
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)
Docker Inc. Docker. https://www.docker.com/. Accessed January 2016
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)
Flexiant. Bento Boxes. https://www.flexiant.com/2012/12/03/application-provisioning/. Accessed January 2016
Fowler, M., Lewis, J.: Microservices (2014). http://martinfowler.com/articles/microservices.html. Accessed January 2016
Gabbrielli, M., Giallorenzo, S., Montesi, F.: Applied choreographies (2015). CoRR, abs/1510.03637
Georgakopoulos, D., Papazoglou, M.P.: Service-Oriented Computing. The MIT Press, Cambridge (2008)
Google App Engine. https://cloud.google.com/appengine/docs. Accessed January 2016
Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: IJCAI, pp. 235–245. William Kaufmann (1973)
Jolie.: Programming Language. http://www.jolie-lang.org/. Accessed January 2016
Lamport, L.: Paxos made simple. ACM SIGACT News 32(4), 18–25 (2001)
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)
Lascu, T.A., Mauro, J., Zavattaro, G.: A planning tool supporting the deployment of cloud applications. In: ICTAI, pp. 213–220. IEEE (2013)
Mandriva. Armonic. https://armonic.readthedocs.org/en/latest/index.html. Accessed January 2016
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)
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
Montesi, F.: JOLIE: a Service-oriented Programming Language. Master’s thesis, University of Bologna (2010)
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)
Montesi, F., Guidi, C., Lucchi, R., Zavattaro, G.: JOLIE: a java orchestration language interpreter engine. Electr. Notes Theor. Comput. Sci. 181, 19–33 (2007)
Montesi, F., Guidi, C., Zavattaro, G.: Composing services with JOLIE. In: Proceedings of ECOWS, pp. 13–22 (2007)
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)
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)
Morris, K.: Immutableserver (2013). http://martinfowler.com/bliki/ImmutableServer.html. Accessed January 2016
Netflix. Building with legos (2011). http://techblog.netflix.com/2011/08/building-with-legos.html. Accessed January 2016
Nginx. Adopting microservices at netflix: Lessons for architectural design (2015). https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/. Accessed January 2016
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)
Oasis, B.: Web services business process execution language (2007). http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.html
Ongaro, D., Ousterhout, J.: In search of an understandable consensus algorithm. In: USENIX, pp. 305–320 (2014)
Opscode. Chef. http://www.opscode.com/chef/. Accessed January 2016
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)
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)
Puppetlabs. Puppet. http://puppetlabs.com/. Accessed January 2016
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights 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)