Nuova ricerca

Claudia CANALI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Distributed Edge Programming

Ingegneria informatica (Offerta formativa 2024)

Obiettivi formativi

Negli ultimi anni, le architetture e i sistemi software stanno abbandonando i modelli centrralizzati e monolitici tradizionali in favore soluzioni distribuite più distribuite, flessibili e scalabili. Questa tendenza, guidata dalla diffusione di siti internet global-scale, architetture di cloud ed edge computing, sistemi di containerizzazione, e dall’integrazione crescente di modelli AI, ha reso fondamentale per molte figure aziendali – dagli sviluppatori ai designer di sistema, fino ai manager – acquisire una chiara comprensione di come questi sistemi funzionano.

Il corso fornisce una panoramica completa delle tecnologie e delle metodologie necessarie per progettare, sviluppare e gestire applicazioni distribuite moderne in ambienti cloud - edge. Si affrontano temi chiave come le caratteristiche delle architetture edge distribuite, algoritmi di load balancing, orchestrazione di containers, comunicazione tra microservizi, resilienza, osservabilità e trattamento di dati distribuiti. Inoltre, i moduli su DevOps ed MLOps permetteno di comprendere come modelli AI possano essere messi in produzione all'interno di un sistema distribuito moderno in modo tracciabile ed automatizzato.

Prerequisiti

Conoscenza di base di programmazione orientata agli oggetti, ingegneria del software, reti di calcolatori. Esperienza in Java (o linguaggi simili).

Programma del corso

Introduzione alle architetture software e agli strumenti per lo sviluppo – Maven per la gestione delle dipendenze, Spring Boot come chassis per microservizi, Docker per la gestione dei container (1 CFU)

Comunicazione – Comunicazioni sincrone (REST, GraphQL, Protobuf) e asincrone (RabbitMQ) (1 CFU)

Resilienza e tolleranza ai guasti – Approfondimento sui pattern di resilienza, con utilizzo di Resilience4j in Spring Boot (1 CFU)

Osservabilità e monitoring – Strumenti e tecniche per il tracciamento e il monitoraggio delle applicazioni, tra cui ELK, Grafana, Jaeger, Zipkin e OpenTelemetry (1 CFU)

Gestione delle transazioni distribuite – Problematiche legate alla consistenza dei dati e soluzioni come il pattern SAGA, CQRS e l'orchestrazione con Conductor (1 CFU)

DevSecOps, MLOps – Introduzione ai modelli DevOps e MLOps, per automazione del deployment e del monitoraggio dei modelli di machine learning in produzione (1 CFU).

Architetture di edge computing e scenari applicativi IoT - Edge (1 CFU)

Algoritmi di distribuzione del carico in contesto edge (1 CFU)

Valutazione scalabilità e prestazioni sistemi distribuiti edge computing (1 CFU)

Metodi didattici

L’insegnamento è organizzato in moduli organizzati su base settimanale. Ogni modulo tratta un argomento specifico e prevede una parte di laboratorio. La frequenza alle lezioni in presenza non è obbligatoria. L’insegnamento è erogato in lingua italiana.

Testi di riferimento

Materiale fornito dal docente

Verifica dell'apprendimento

Una prova orale riguardo sia le nozioni teoriche viste nel corso dell'insegnamento (10-20 minuti) che la discussione di un esercizio pratico simile a quelli visti durante i laboratori (10-20 minuti). Come alternativa, è possibile sviluppare un progetto individuale.

Risultati attesi

Conoscenze di modellazione e progettazione di soluzioni distribuite, con particolare accento sul modello a microservizi.