Daplacer
Tool for data-aware application placement and routing in the Cloud-IoT continuum
Install / Use
/learn @di-unipi-socc/DaplacerREADME
Data-aware service placement and routing in the Cloud-IoT continuum.
DA-Placer methodology is described and assessed in:
Jacopo Massa, Stefano Forti, Antonio Brogi<br> Data-Aware Service Placement in the Cloud-IoT Continuum, <br> Communications in Computer and Information Science, vol 1603 @ SummerSOC, 2022.
If you wish to reuse source code in this repo, or mention our work, please consider citing the above mentioned article:
@inproceedings{massa2022daplacer,
title = {{Data-Aware Service Placement in the Cloud-IoT Continuum}},
author = {Massa, Jacopo and Forti, Stefano and Brogi, Antonio},
year = 2022,
booktitle = {Service-Oriented Computing},
publisher = {Springer International Publishing},
editor = {Barzen, Johanna and Leymann, Frank and Dustdar, Schahram},
pages = {139--158}
}
<hr>
DA-Placer is a tool for designing and proposing an eligible placement and a suitable routing strategy for a given service-oriented application within its data and requirements, over a given Cloud-IoT infrastructure.
It exploits the backtracking of the Prolog reasoner to entirely explore the search space of possible solutions, and a continuous reasoning approach to speed-up the decision making process at runtime, after a first eligible solution has been found.
As it is written in Prolog, it is very declarative and concise (≃ 170 lines of code), which allows to have a high level of readability and maintainability.
Files <picture><source media="(prefers-color-scheme: dark)" srcset="https://cdn-icons-png.flaticon.com/512/2822/2822755.png"><img width="20" height="20" alt="files" src="https://cdn-icons-png.flaticon.com/512/2822/2822584.png"/>
</picture> - `model.pl` contains the way to describe the application and the infrastructure on which you want to attempt the placement and routing process.-
data/app.planddata/infra.plfiles contain an instance of the model. -
daplacer.plcontains the main logic of the placer.
How To <picture><source media="(prefers-color-scheme: dark)" srcset="https://cdn-icons-png.flaticon.com/512/2666/2666505.png"><img width="20" height="20" alt="files" src="https://cdn-icons-png.flaticon.com/512/2666/2666469.png">
</picture>-
Download or clone this repo. Make sure you have the following prerequisites:
-
In the project folder, run the following command on terminal, to access the SWI-Prolog console:
swipl daplacer.pl -
Inside the console, run the following query:
:- daplacer(museuMonitor, Placement, Routes).The output will be a first placement and routing for the application described in
app.pl(named museuMonitor), onto the infrastructure described ininfra.pl. -
To try the continuous reasoning, open
infra.plfile and change some links or nodes involved in the first placement, or changeapp.pldescription, adding new services, data types or end-to-end interactions. -
Repeat step 2, and you'll obtain as output a new placement for new and suffering services.
N.B. Do not terminate the already started
swiplprocess, or you will lose the knoweldge base that has been built so far!
Output Example <picture><source media="(prefers-color-scheme: dark)" srcset="https://cdn-icons-png.flaticon.com/512/3488/3488340.png"><img width="20" height="20" alt="files" src="https://cdn-icons-png.flaticon.com/512/3488/3488804.png"></picture>
% on(Service, Node)
Placement = [on(dataStorage, isp),
on(controller, lifeSciences),
on(interface, mannLab)],
% ((source, target), AllocatedBandwidth, Route)
Routes = [((rVst, dataStorage), 24.0, [sciencesLectureHall, briggsHall, mannLab, parkingServices, westEntry, firePolice, isp]),
((rArt, dataStorage), 15.0, [kleiberHall, hoaglandAnnex, firePolice, isp]),
((dataStorage, controller), 18.0, [isp, firePolice, westEntry, mannLab, lifeSciences]),
((controller, rDor), 22.5, [lifeSciences, parkingServices]),
((controller, rGls), 27.0, [lifeSciences, parkingServices, mannLab, briggsHall, studentCenter]),
((rCam, interface), 40, [hoaglandAnnex, mannLab]),
((interface, controller), 40, [mannLab, westEntry, parkingServices, lifeSciences]),
((interface, rVid), 20, [mannLab, parkingServices, westEntry])]
The previous prolog output is depicted in the following image:
<kbd><img src="img/result.png" alt="output"/></kbd>
Contributors <picture><source media="(prefers-color-scheme: dark)" srcset="https://cdn-icons-png.flaticon.com/512/3369/3369157.png"><img width="20" height="20" alt="files" src="https://cdn-icons-png.flaticon.com/512/3369/3369137.png"></picture>
- Jacopo Massa (corresponding author)
- Stefano Forti
- Antonio Brogi
