| SISTEMI DISTRIBUITI E CLOUD COMPUTING
(obiettivi)
OBIETTIVI FORMATIVI: L'insegnamento si propone di fornire i principi, le metodologie e le tecnologie per la progettazione e realizzazione di sistemi ed applicazioni distribuite moderne, inclusi i sistemi distribuiti a larga scala e Cloud e le architetture a microservizi. Durante il corso vengono coniugati aspetti metodologici e tecnologici, affrontando le principali problematiche e tecniche per lo sviluppo di sistemi distribuiti efficienti. In particolare, sono approfonditi gli aspetti architetturali, i modelli di comunicazione tra i componenti di un sistema distribuito ed i corrispondenti middleware, le soluzioni per fornire sistemi scalabili e tolleranti ai guasti, le problematiche di coordinazione distribuita, replicazione e consistenza e le relativi soluzioni algoritmiche e tecniche, e la virtualizzazione dell'ambiente di esecuzione tramite la virtualizzazione di sistema e a livello di sistema operativo e l'orchestrazione di container. Il progetto proposto ha lo scopo di consolidare ed approfondire la preparazione teorica, metodologica e tecnologica sui temi affrontanti nel corso. Nel corso viene anche introdotto il linguaggio Go per la programmazione dei sistemi distribuiti.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Al termine del corso lo studente avrà acquisito concetti di base ed avanzati sui sistemi distribuiti e sui sistemi Cloud e sullo sviluppo di applicazioni software in tali ambiti. In particolare: realizzazione di applicazioni distribuite e scalabili, con diversi gradi di consistenza e modelli di comunicazione, utilizzando anche servizi Cloud (in particolare, i servizi Cloud di AWS, per i quali viene messo a disposizione degli studenti un grant gratuito tramite il programma AWS Academy).
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Al termine del corso lo studente avrà acquisito i principi e le metodologie proprie dell'analisi, progettazione e realizzazione dei moderni sistemi distribuiti. In particolare: progettare e sviluppare sistemi ed applicazioni distribuite, usando strumenti avanzati per il deployment e la gestione.
AUTONOMIA DI GIUDIZIO: Al termine del corso lo studente sarà in grado di identificare le soluzioni più idonee per realizzare sistemi ed applicazioni distribuite e Cloud e di valutarne le scelte architetturali ed implementative.
ABILITÀ COMUNICATIVE: Al termine del corso lo studente avrà acquisito padronanza della terminologia avanzata relativa ai sistemi distribuiti e Cloud, sarà in grado di presentare l'architettura di un sistema distribuito anche complesso con termini e linguaggio tecnico appropriato e di argomentare circa le varie alternative sia a livello sistemistico che applicativo.
CAPACITÀ DI APPRENDIMENTO: Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti attinenti i sistemi distribuiti e Cloud, e di utilizzare le conoscenze e metodologie apprese per affrontare problemi nuovi.
|
Canale Unico
|
Docente
|
CARDELLINI VALERIA
(programma)
Introduzione ai sistemi distribuiti. Introduzione al Cloud computing. Architetture per sistemi distribuiti. Comunicazione nei sistemi distribuiti. Introduzione alla programmazione in Go. Virtualizzazione. Architetture a microservizi e serverless computing. Coordinazione e sincronizzazione nei sistemi distribuiti. Consistenza e replicazione nei sistemi distribuiti. Tolleranza ai guasti nei sistemi distribuiti. Sistemi e servizi per content delivery, inclusi Akamai e Youtube. Data storage nel Cloud. Amazon Web Services. Esempi di sistemi e servizi distribuiti e Cloud.
 Maarten van Steen and Andrew S. Tanenbaum, "Distributed Systems: Principles and Paradigms - 3rd Edition", CreateSpace Independent Publishing Platform, 2017. ISBN: 978-1543057386.
Arshdeep Bahga, Vijay Madisetti, "Cloud Computing Solutions Architect: A Hands-On Approach", 2019. ISBN: 978-0996025591.
|
|
Date di inizio e termine delle attività didattiche
|
- |
|
Modalità di erogazione
|
Tradizionale
|
|
Modalità di frequenza
|
Non obbligatoria
|
|
Metodi di valutazione
|
Prova scritta
Prova orale
Valutazione di un progetto
|
|