The advances in Cloud Computing have made that the technologies of deployment, management and monitoring of this type of applications reach a fairly high level of maturity. However, computing needs and the volumes of information managed by applications on the Internet of Things (IoT) pose new challenges for which purely cloud solutions are not sufficient. In particular, latency requirements and communication costs make it necessary to consider more elaborate architectures, emerging Fog and Edge technologies. The complexity of these architectures and the diversity of computing devices and communication channels make the management of such applications even more complicated.

In the SÓFOCLES project we will develop tools with which to automate the deployment and management in time of execution of a system described from an architectural model on an environment that can house components (implemented as microservices) at different levels:

  • Virtualized remote systems with elastic computing and storage capabilities.
  • Intermediate level devices with various computing and storage capabilities (Fog Computing).
  • Devices near data sources (Edge Computing).

The tools developed in this project will generate an optimal deployment plan, automate said deployment and monitor its execution, identifying possible breaches of service contracts, and adapting the deployment so that the satisfaction of such contracts can be restored. Particular attention will be paid to mobile devices that allow people to participate. In IoT people are, increasingly, an essential element as active components of the environment, and not just as mere recipients of services.

Case studies

  • Control of devices in public spaces (street lamps, nebulizers, etc.) in response to local and global decisions, and using the paradigm of people as a service, with software components installed on users' mobile phones and various levels of control, deployed locally and close to controlled elements, as well as globally, deployed on virtual servers in the cloud.
  • Traffic control system using sensors and controllers distributed throughout the urban environment, including cameras and sensors of different types that require computation at different levels of complexity.

It is, therefore, a project with a clear cut of Software Engineering, where not only methodological aspects of development of applications in the field of cloud and IoT will be addressed, but also issues relating to the performance analysis of these applications in those environments, and how this affects deployment decisions that, in some cases, may even be automated.


In order to achieve optimal deployment plans, models of the physical and virtual devices on which the architectural components can be deployed will be available, both cloud and fog providers and IoT destination topologies. The analysis and planning tools will deal with the uncertainty inherent in the lack of precise knowledge of both the architectural models and the models of the available communication devices and channels, as well as the behaviour of physical elements, always subject to different types of uncertainty (battery life, geolocation errors, etc.).

Figure 1: From application architectures to deployment plans.

The main contribution of the project is oriented to the development of techniques and tools for automation and application deployment management where some of its components can be hosted in the cloud and others closer to where the data originate (fog or edge). The project aims to address this automation and management both in application design time (static) and in execution time (dynamic). The variability in deployment will depend on various aspects that will need to be appropriately specified in the starting model:

  • Application restrictions to develop/deploy (related to required service qualities)
  • The conditions offered by the platforms that will host the different components of the system. In a large number of situations, these constraints and conditions will include information with a high level of uncertainty, both at the level of application design, and in terms of the representation of uncertainty of the data being handled.
  • In this type of application, the explicit modelling and treatment of both types of uncertainty is very important to be able to manage it, calculate the possible options and deviations, and evaluate the risks. Deployment and management will also depend on interaction with individuals, which can sometimes be decisive.

Thus, the specific objectives that relate to the results of the work packages are the following:

  • Develop mechanisms for the time-to-time adaptation of IoT applications.
  • Develop mechanisms for analysis of edge/fog/cloud configurations.
  • Apply the results in appropriate case studies.