Il progetto FREEDA mira a proporre tecniche e strumenti per consentire un efficiente assegnamento dei numerosi componenti di un'applicazione basata su microservizi ai nodi di un’infrastruttura Cloud-IoT. Data la descrizione dei componenti di un’applicazione e delle loro relazioni e le caratteristiche dei nodi dell’infrastruttura, FREEDA mira a proporre una soluzione di assegnamento capace di rispettare i requisiti definiti dal progettista dell’applicazione e di aggiungere automaticamente ulteriori requisiti per ottenere un assegnamento che garantisca la resilienza ai guasti e l’efficienza energetica dell’applicazione. Ai fini di rendere le scelte comprensibili per l’utente finale, il sistema si propone di fornire spiegazioni sui vincoli inseriti e sull’assegnamento selezionato. La distribuzione dei microservizi ottenuta specificherà in modo dichiarativo il posizionamento sui nodi dell'infrastruttura che soddisfano i requisiti espressi dall’utente e aggiunti dal risolutore di FREEDA.
Il progetto mira a supportare automaticamente la resilienza al fallimento e la sostenibilità energetica con meccanismi che consentano all’applicazione di adattarsi continuamente e rapidamente ai cambiamenti nell’infrastruttura. Al fine di rendere l’adattamento più efficiente, il decisore si baserà su un sistema di ragionamento continuo dotato di meccanismi di adattamento parziale, concentrandosi solo sulla parte di assegnamento interessata dalle modifiche nelle condizioni dell'infrastruttura Cloud-IoT o nei requisiti di distribuzione.
Il ruolo del Politecnico di Milano all’interno del progetto si focalizza principalmente sulla parte relativa agli aspetti di sostenibilità energetica. In particolare, il team di ricerca del Dipartimento di Elettronica, Informatione e Bioingegneria svilupperà tecniche per la generazione automatica di requisiti che garantiscano un assegnamento efficiente dei componenti applicativi ai nodi infrastrutturali, che tenga in considerazione le emissioni di anidride carbonica prodotte dai diversi nodi e le dipendenze funzionali tra i diversi microservizi che compongono l’applicazione.