SISTEMI DISTRIBUITI 2 E LABORATORIO
Anno accademico 2018/2019 - 2° anno - Curriculum Sistemi di Rete e Sicurezza- SISTEMI DISTRIBUITI 2: Giuseppe PAPPALARDO
- LABORATORIO: Giuseppe PAPPALARDO
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre: 2°
Obiettivi formativi
- SISTEMI DISTRIBUITI 2
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. - LABORATORIO
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.
Modalità di svolgimento dell'insegnamento
- SISTEMI DISTRIBUITI 2
Lezioni frontali in aula
- LABORATORIO
Sessioni di laboratorio con esercitazioni
Prerequisiti richiesti
- SISTEMI DISTRIBUITI 2
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
- LABORATORIO
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
Frequenza lezioni
- SISTEMI DISTRIBUITI 2
Consigliata, per il raggiungimento di una piena comprensione del materiale presentato.
- LABORATORIO
Consigliata, per il raggiungimento di effettive capacità operative nel campo dell'amministrazione e dello sviluppo per il cloud computing.
Contenuti del corso
- SISTEMI DISTRIBUITI 2
- Introduzione ai sistemi distribuiti: storia, motivazioni, caratteristiche.
- Sincronizzazione dei clock fisici nei sistemi distribuiti.
- Clock logici di Lamport e ordinamento temporale.
- Costruzione dello stato globale in un sistema distribuito.
- Elezione e mutua esclusione in un sistema distribuito.
- La coerenza ("consistency") in un sistema distribuito: forme forti, forme deboli e rispettive applicazioni).
- Replicazione dei dati e delle computazioni nei sistemi distribuiti.
- La tolleranza ai guasti nei sistemi distribuiti: concetti e tecniche.
- Il cloud computing: concetti, soluzioni, esempi.
- LABORATORIO
- Amazon web services
- Microsoft azure
- Google app engine
- Soluzioni open: openstack
- Virtualizzazione in ambiente Linux
- Docker e container
- Devops
Testi di riferimento
- SISTEMI DISTRIBUITI 2
- Sistemi distribuiti. Principi e paradigmi. Andrew S. Tanenbaum, Maarten Van Steen. Pearson/Paravia/Bruno Mondadori. 2007. ISBN 8871923669, 9788871923666
-
Distributed Systems: Concepts and Design, 4th edition. Coulouris, Dollimore and Kindberg. Pearson Education. 2005.
- LABORATORIO
Documentazione tecnica resa disponibile in rete dai principali fornitori di risorse per il cloud computing.
Programmazione del corso
SISTEMI DISTRIBUITI 2 | |||
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 | Amazon web services: networking | ||
8 | Amazon web services: console CLI | ||
9 | Amazon web services: Elastic Load Balacing e Autoscaling | ||
10 | Docker: nozione di container | ||
11 | Docker: swarm,servizi, stack | ||
12 | Devops: sviluppo e produzione | ||
13 | Microsoft Azure: concetti e amministrazione. | ||
14 | Microsoft Azure: principali servizi ed esempi di sviluppo. | ||
15 | Google app engine. | ||
16 | Openstack: architettura e installazione. | ||
17 | Virtualizzazione in ambiente Linux. |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
- SISTEMI DISTRIBUITI 2
Colloquio orale.
- LABORATORIO
Svolgimento di un progetto concordato in anticipo col docente. Discussione in sede d'esame dei risultati ottenuti.
Esempi di domande e/o esercizi frequenti
- SISTEMI DISTRIBUITI 2
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. - LABORATORIO
Impiego delle tecnologie tipiche del web e del cloud computing nella realizzazione del progetto scelto.
Accesso ai servizi delle piattaforme Cloud presentate nel corso.