Abstract
Docker is emerging as a simple yet effective solution for deploying and managing multi-component applications in virtualised cloud platforms. Application components can be shipped within portable and lightweight Docker containers, which can then be interconnected to allow components to interact each other. At the same time, the need for an enhanced support for orchestrating the management of the application components shipped within Docker containers is emerging.
In this paper we show how TOSCA can be exploited to provide such an enhanced support, by proposing a representation for describing the components forming an application, as well as the Docker containers used to ship such components. We also present TosKer, an engine for orchestrating the management of multi-component applications based on the proposed TOSCA representation and on Docker.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
This can also be done automatically by exploiting TosKeriser [10]. Given a TOSCA application specification, TosKeriser can indeed automatically (discover and) include the Docker containers offering the software support needed by its components.
- 2.
- 3.
The actual definition of all TOSCA types discussed in this section is publicly available on GitHub at https://github.com/di-unipi-socc/tosker-types.
- 4.
The host requirement is mandatory for nodes of type tosker.nodes.Software, as we assume that each application component must be installed in another component or in a Docker container.
- 5.
The source code of Thinking is publicly available on GitHub at https://github.com/di-unipi-socc/thinking.
- 6.
The resulting TOSCA application specification is publicly available at https://github.com/di-unipi-socc/TosKer/blob/master/data/examples/thoughts-app/thoughts/thoughts.yaml. A CSAR packaging such specification (together with all artifacts needed to deploy and manage the Thinking application) is available at https://github.com/di-unipi-socc/TosKer/blob/master/data/examples/thoughts-app/thoughts.csar.
- 7.
The Orchestrator assumes that components are managed according to the TOSCA standard management lifecycle [27]. If such lifecycle is not respected (e.g., by requiring to delete a component that has not yet been created), then the Orchestrator will raise an error and stop orchestrating the application management.
- 8.
- 9.
The choice of Python was mainly motivated by the availability of two open-source Python libraries: docker-py (https://github.com/docker/docker-py) and tosca-parser (https://github.com/openstack/tosca-parser/). docker-py implements a Python interface for the Docker engine API. tosca-parser is instead a parser for TOSCA application specifications (developed by the OpenStack community).
- 10.
- 11.
Details on how to process inputs for TOSCA applications can be found in [27].
- 12.
The TOSCA application specifications and the battery of unit tests that we implemented are publicly available on GitHub at https://github.com/di-unipi-socc/TosKer/tree/master/data/examples and https://github.com/di-unipi-socc/TosKer/tree/master/tests, respectively.
References
Apache Software Foundation: Brooklyn. http://brooklyn.apache.org
Apache Software Foundation: Mesos. http://mesos.apache.org/
Armbrust, M., Fox, A., Griffith, R., Joseph, A.D., Katz, R., Konwinski, A., Lee, G., Patterson, D., Rabkin, A., Stoica, I., Zaharia, M.: A view of cloud computing. Commun. ACM 53(4), 50–58 (2010)
Binz, T., Breitenbücher, U., Haupt, F., Kopp, O., Leymann, F., Nowak, A., Wagner, S.: OpenTOSCA – a runtime for TOSCA-based cloud applications. In: Basu, S., Pautasso, C., Zhang, L., Fu, X. (eds.) ICSOC 2013. LNCS, vol. 8274, pp. 692–695. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-45005-1_62
Binz, T., Breitenbücher, U., Kopp, O., Leymann, F.: TOSCA: portable automated deployment and management of cloud applications. In: Bouguettaya, A., Sheng, Q., Daniel, F. (eds.) Advanced Web Services, pp. 527–549. Springer, New York (2014). https://doi.org/10.1007/978-1-4614-7535-4_22
Brogi, A., Canciani, A., Neri, D., Rinaldi, L., Soldani, J.: Towards a reference dataset of microservice-based applications. In: Cerone, A., Roveri, M. (eds.) SEFM 2017. LNCS, vol. 10729, pp. 219–229. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-74781-1_16
Brogi, A., Canciani, A., Soldani, J.: Fault-aware application management protocols. In: Aiello, M., Johnsen, E.B., Dustdar, S., Georgievski, I. (eds.) ESOCC 2016. LNCS, vol. 9846, pp. 219–234. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-44482-6_14
Brogi, A., Carrasco, J., Cubo, J., D’Andria, F., Ibrahim, A., Pimentel, E., Soldani, J.: EU Project SeaClouds - adaptive management of service-based applications across multiple clouds. In: Proceedings of the 4th International Conference on Cloud Computing and Services Science (CLOSER 2014), pp. 758–763 (2014)
Brogi, A., Di Tommaso, A., Soldani, J.: Validating TOSCA application topologies. In: Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development, MODELSWARD, vol. 1, pp. 667–678. SciTePress (2017)
Brogi, A., Neri, D., Rinaldi, L., Soldani, J.: From (incomplete) TOSCA specifications to running applications, with Docker. In: Cerone, A., Roveri, M. (eds.) SEFM 2017. LNCS, vol. 10729, pp. 491–506. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-74781-1_33
Brogi, A., Pahl, C., Soldani, J.: Enhancing the orchestration of multi-container Docker applications (2016). Submitted for Publication
Brogi, A., Soldani, J., Wang, P.W.: TOSCA in a Nutshell: promises and perspectives. In: Villari, M., Zimmermann, W., Lau, K.-K. (eds.) ESOCC 2014. LNCS, vol. 8745, pp. 171–186. Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-662-44879-3_13
Di Cosmo, R., Mauro, J., Zacchiroli, S., Zavattaro, G.: Aeolus: a component model for the cloud. Inf. Comput. 239, 100–121 (2014)
Docker Inc.: Docker. https://www.docker.com/
Docker Inc.: Docker compose. https://github.com/docker/compose
Docker Inc.: Docker swarm. https://github.com/docker/swarm
FastConnect, Bull, Atos: Alien4cloud. https://alien4cloud.github.io/
Fehling, C., Leymann, F., Retter, R., Schupeck, W., Arbitter, P.: Cloud Computing Patterns: Fundamentals to Design, Build, and Manage Cloud Applications. Springer, Vienna (2014). https://doi.org/10.1007/978-3-7091-1568-8
Felter, W., Ferreira, A., Rajamony, R., Rubio, J.: An updated performance comparison of virtual machines and Linux containers. In: 2015 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS), pp. 171–172. IEEE Computer Society (2015)
GigaSpaces Technologies: Cloudify. http://cloudify.co/
Lascu, T.A., Mauro, J., Zavattaro, G.: A planning tool supporting the deployment of cloud applications. In: Proceedings of the 2013 IEEE 25th International Conference on Tools with Artificial Intelligence, ICTAI 2013, pp. 213–220. IEEE Computer Society (2013)
Leymann, F.: Cloud computing. it – Information Technology, Methoden und innovative Anwendungen der Informatik und Informationstechnik 53(4), 163–164 (2011)
Matthias, K., Kane, S.P.: Docker: Up and Running. O’Reilly Media, Sebastopol (2015)
Newman, S.: Building Microservices. O’Reilly Media, Inc., Sebastopol (2015)
OASIS: Topology and Orchestration Specification for Cloud Applications (TOSCA), Version 1.0 (2013). http://docs.oasis-open.org/tosca/TOSCA/v1.0/TOSCA-v1.0.pdf
OASIS: Cloud Application Management for Platforms (CAMP), Version 1.1 (2016). http://docs.oasis-open.org/camp/camp-spec/v1.1/camp-spec-v1.1.pdf
OASIS: Topology and Orchestration Specification for Cloud Applications (TOSCA) Simple Profile in YAML, Version 1.0 (2016). http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/TOSCA-Simple-Profile-YAML-v1.0.pdf
Pahl, C.: Containerization and the paas cloud. IEEE Cloud Comput. 2(3), 24–31 (2015)
Pahl, C., Brogi, A., Soldani, J., Jamshidi, P.: Cloud container technologies: a state-of-the-art review. IEEE Trans. Cloud Comput. (in press). https://doi.org/10.1109/TCC.2017.2702586. Early access: http://ieeexplore.ieee.org/document/7922500/
Pahl, C., Lee, B.: Containers and clusters for edge cloud architectures - a technology review. In: Proceedings of the 2015 3rd International Conference on Future Internet of Things and Cloud, FICLOUD 2015, pp. 379–386. IEEE Computer Society (2015)
Smith, R.: Docker Orchestration. Packt Publishing, Birmingham (2017)
The Kubernetes Authors: Kubernetes. http://kubernetes.io/
Acknowledgments
The authors would like to thank Claus Pahl for all helpful and stimulating discussions on how to enhance the current support for orchestrating multi-component applications with Docker, which were reported in [11] and laid the foundations for the work presented in this paper.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this paper
Cite this paper
Brogi, A., Rinaldi, L., Soldani, J. (2018). TosKer: Orchestrating Applications with TOSCA and Docker. In: Mann, Z., Stolz, V. (eds) Advances in Service-Oriented and Cloud Computing. ESOCC 2017. Communications in Computer and Information Science, vol 824. Springer, Cham. https://doi.org/10.1007/978-3-319-79090-9_9
Download citation
DOI: https://doi.org/10.1007/978-3-319-79090-9_9
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-79089-3
Online ISBN: 978-3-319-79090-9
eBook Packages: Computer ScienceComputer Science (R0)