Ditas: data-intensive applications improvement by moving data and computation in mixed cloud/fog environments
There is an increasing need to develop data intensive applications able to manage more and more amounts of data coming from distributed and heterogeneous sources effectively, quickly, correctly, and securely. However, the current adoption of Cloud Computing paradigm is not fully appropriate to store and analyse such data: latency, security, and compliance are still significant barriers.  At the same time, Fog Computing has emerged as a paradigm promising to fully exploit the potential of the edge of the network involving traditional devices as well as new generation of smart devices, which can process data closer to where they are produced and/or consumed but which cannot ensure the same reliability and scalability as cloud computing offers.
The goal of DITAS is to propose a framework, composed by an SDK and an execution environment, which aims to overcome the barriers that now hamper the adoption of Cloud Computing and increase the adoption of Fog computing by exploiting the full potential of these two paradigms in a synergic way. This will support the development and execution of data-intensive application that are now – and even more in the future – crucial for organizations and companies that want to manage their data in an efficient, reliable, scalable, and secure manner.
Abstractions provided in DITAS with Data Virtualization and Data Utility will expose the data to be managed by the application in terms of Virtual Data Containers which hide the complexity of the underlying infrastructure composed of heterogeneous data sources, smart devices, traditional servers, and sensor networks Distribution could also change dynamically. Conversely, Virtual Data Containers offer to developers the possibility to express requirements on data in terms of performance, quality, security and privacy thus to focus only on the application logic, leaving to the DITAS execution environment the responsibility of finding, processing, and delivering the data according to user needs