PROGETTAZIONE DI SISTEMI DISTRIBUITI

ING-INF/05 - 9 CFU - 1° semestre

Docente titolare dell'insegnamento

ANTONELLA DI STEFANO


Obiettivi formativi

Conoscere gli algoritmi fondamentali per la gestione delle risorse in scenari reali di grandi dimensioni e i pattern classici delle architetture distribuite. Acqisire competenze per la gestione degli scenari distribuiti a garanzia di scalabilità, high availability, robustezza, trasparenza e QoS. Conoscere tecnologie e strumenti di progettazione di sistemi distribuiti di grandi dimensioni nello scenario odierno. Conoscere i paradigmi di progettazione tipici dei Component Based Enterprise Systems, il modello SOA, e la relativa incarnazione in WS e REST. Conoscere tecniche di virtualizzazione delle risorse di un sistema distribuito con particolare riferimento al Cloud. Acquisire competenze per il design, development e deployment di applicazioni a componenti nell' ambito di sistemi enterprise.


Prerequisiti richiesti

linguaggi C e Java. Progettazione OO. programmazione multithreading. Conoscenza di architetture e protocolli di rete, ed in particolare della suite TCP/IP. DNS. socket Java e BSD (almeno Java). Conoscenza delle tecniche di progettazione del software e dei pattern fondamentali di GoF. conoscenze di base relative al management di sistemi UNIX-Like, basic Unix Bash programming, SSH, nmap, iptables, Iperf



Frequenza lezioni

la frequenza (75%) è richiesta solo agli studenti che intendano sostenere le prove in itinere



Contenuti del corso

Paradigmi e modelli di progettazione del software in sistemi di ampie dimensioni - Qualità dei Servizi (QoS), Pattern per architetture sw distribuite, sistemi C/S, multitier, P2P, Cloud, componenti e container, Enterprise Systems, JEE, EJB, SOA, WS e REST

Comunicazione, interoperabilità e localizzazione - multiThread e Networking. C/S e Group communication. Multicast e Broadcast. Socket BSD e Java. Meccanismi di invocazione e chiamata remota: Dynamic Invocation, message passing. CallBack ed Event Notification.

Algoritmi distribuiti: sistemi sincroni vs. asincroni; modelli di clock: clock di Lamport e vector clock. event ordering e concorrenza. global snapshot. Classificazione dei fault, fault tolerance e dependability. algoritmi di agreement in presenza di varie topologie di fault, fault detector. algoritmi cooperativi: elezione, mutua esclusione, deadlock detection. Transazioni distribuite, serializzabilità recuperabilità e commitment. Consistenza e Replicazione. Distribuzione delle repliche; Protocolli di replicazione attiva e passiva. File system distribuiti.

Sistemi P2P - Strutturati (DHT) vs Non strutturati (flooding). Gnutella, Chord,

Cloud, Virtual Machine e OpenStack



Testi di riferimento

per le Tecnologie si consiglia di consultare direttamente i siti web indicati durante il corso



Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO

Modalità d esame per non frequentanti o per chi non svolge le prove in itienere

orale + prova pratica + progetto (il progetto non è obbligatorio: assegnato 20 giorni prima della prova: le parti dell'esame sono inscindibili)


PROVE IN ITINERE

è prevista una serie di prove in itinere nelle modalità descrite di seguito:

argomenti 1a prova in itinere (2-4a settimana Novembre)

tecniche di mutithreading, socket-based, (socket java,websocket), ajax e servlet e i primi algoritmi di sistemi distribuiti (tipicamente: time, global snapshot, multicast, group, dht

% sul voto d'esame: 35%

argomenti 2a prova in itinere (3a settimana Dicembre 1a settimana gennaio)

componenti enterprise e souzioni distribuite (mutua esclusione, election, fault detector, repliche, transazioni, consenso)

% sul voto d'esame: 50%

Prova 3 - esame conclusivo

deployment di una applicazione in ambiente cloud

% sul voto d'esame: 15%

 

 

 

 




Apri in formato Pdf English version