Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione dei fondamenti concettuali (nozioni di base, principali classi di problemi e soluzioni) riguardanti i sistemi distribuiti.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare le soluzioni apprese e applicare i paradigmi acquisiti in contesti diversi da quelli presentati nel corso, pervenendo così a completare le proprie competenze di progettista/architetto di sistemi distribuiti.
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i meriti e i limiti delle soluzioni proposte, nel corso ed in letteratura, per problematiche e scenari tipici della progettazione distribuita.
Abilità comunicative (communication skills): lo studente apprenderà la terminologia specifica dei sistemi distribuiti e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di documentarsi mediante la consultazione della letteratura del settore, eventualmente applicandone i risultati in contesti concreti.
Conoscenza e capacità di comprensione (knowledge and understanding): verrano acquisite conoscenza e comprensione dei concetti essenziali e di alcune tra le principali soluzioni del cloud e del web computing.
Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di impiegare le tecnologie introdotte e sperimentate nel corso, in modo da acquisire capacità operative e progettuali nel campo del cloud computing.
Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare comparativamente i vantaggi e i limiti delle principali tecnologie disponibili nel campo del cloud computing.
Abilità comunicative (communication skills): lo studente apprenderà la terminologia specifica del cloud computing e acquisirà le abilità comunicative appropriate per esprimere e discutere, ad un livello tecnico rigoroso, le problematiche di interesse.
Capacità di apprendimento (learning skills): lo studente sarà in grado di utilizzare la documentazione tecnica delle soluzioni per il cloud computing, al fine di impiegarle concretamente nelle attività di amministrazione e sviluppo per il cloud computing.
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
Consigliata, per il raggiungimento di una piena comprensione del materiale presentato.
Consigliata, per il raggiungimento di effettive capacità operative nel campo dell'amministrazione e dello sviluppo per il cloud computing.
Distributed Systems: Concepts and Design, 4th edition. Coulouris, Dollimore and Kindberg. Pearson Education. 2005.
Documentazione tecnica resa disponibile in rete dai principali fornitori di risorse per il cloud computing.
Tutto il materiale presentato a lezione verrà reso disponibile sul portale Studium.
Tutto il materiale presentato a lezione verrà reso disponibile o accessibile (se trattasi di risorsa esterne) attraverso il portale Studium.
SISTEMI DISTRIBUITI | |||
* | Argomenti | Riferimenti testi | |
1 | Introduzione ai sistemi distribuiti. Motivazioni. Problematiche. Classi di soluzioni. | [1], cap. 1 | |
2 | * | Sincronizzazione dei clock. Soluzioni di Cristian e Berkeley. NTP. | [1], sezione 6.1 |
3 | * | Clock logici e multicast totalmente ordinato. | [1], sezione 6.2.1 |
4 | * | Clock logici vettoriali. Ordinamenti temporali. Multicast con causal delivery. | [1], sezione 6.2.2 |
5 | * | Distributed snapshot. Stato globale di un sistema. Safety e liveness nei sistemi distribuiti. Mutual exclusion distribuita. | [2], sezioni 11.5 e 11.6 |
6 | * | Consistency nei sistemi distribuiti. Data-centric e client-centric consistency. | [1], sezioni 7.1, 7.2, 7.3 |
7 | * | Protocolli di coerenza per i dati. Algoritmi epidemici. Protocollo di replicazione. | [1], sezioni 7.4 e 7.5 |
8 | * | Affidabilità e tolleranza ai guasti nei sistemi distribuiti. Modelli di guasto. Fault masking. Fault recovery. | [1], sezioni 8.1 e 8.2 |
9 | Commit a due e a tre fasi | [1], sezione 8.5 | |
10 | Checkpointing e backward recovery | [1], sezione 8.6 | |
11 | * | Il problema dei generali bizantini | [2], sezione 12.5 |
12 | * | Il cloud computing: motivazione e concetti, soluzioni. | materiale fornito dal docente |
13 | I web services e architetture a microservizi | materiale fornito dal docente | |
LABORATORIO | |||
* | Argomenti | Riferimenti testi | |
1 | * | Amazon web services: introduzione e architettura. | |
2 | * | Amazon web services: principali task di amministrazione. | |
3 | * | Amazon web services: servizi IAM di identificazione. | |
4 | * | Amazon web services: servizi di elaborazione. | |
5 | * | Amazon web services: servizi di storage. | |
6 | * | Amazon web services: funzionalità avanzate per sviluppatori cloud. | |
7 | * | Microsoft Azure: concetti e amministrazione. | |
8 | * | Microsoft Azure: principali servizi ed esempi di sviluppo. | |
9 | Google app engine. | ||
10 | Openstack: architettura e esempio di installazione. | ||
11 | Virtualizzazione in ambiente Linux. |
Colloquio orale.
Svolgimento di un progetto concordato in anticipo col docente. Discussione in sede d'esame dei risultati ottenuti.
Non sono previste prove in itinere.
Non sono previste prove in itinere per questo modulo, ma verranno svolte apposite esercitazioni in laboratorio.
Non previste.
Non previste.
Applicazioni dei clock logici al multicast.
Applicazioni dei protocolli che assicurano la consistency.
Costruzione di un distributed snapshot per un sistema distribuito.
Il problema dei generali bizantini.
Algoritmi di elezione distribuita.
Data-centric e client-centric consistency.
Algoritmi epidemici per la propagazione dell'informazione.
Impiego delle tecnologie tipiche del web e del cloud computing nella realizzazione del progetto scelto.