SISTEMI DISTRIBUITI 2 E LABORATORIO

Anno accademico 2017/2018 - 2° anno - Curriculum Sistemi di Rete e Sicurezza
Docenti Crediti: 9
SSD: INF/01 - Informatica
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre:

Obiettivi formativi

  • SISTEMI DISTRIBUITI

    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.


Prerequisiti richiesti

  • SISTEMI DISTRIBUITI

    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

    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
    • 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

Testi di riferimento

  • SISTEMI DISTRIBUITI
    1. Sistemi distribuiti. Principi e paradigmi. Andrew S. Tanenbaum, Maarten Van Steen. Pearson/Paravia/Bruno Mondadori. 2007. ISBN 8871923669, 9788871923666
    2. 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
 *ArgomentiRiferimenti 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 microservizimateriale fornito dal docente 
LABORATORIO
 *ArgomentiRiferimenti 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. 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • SISTEMI DISTRIBUITI

    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

    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.