SISTEMI DISTRIBUITI 2 E LABORATORIO

Anno accademico 2018/2019 - 2° anno - Curriculum Sistemi di Rete e Sicurezza
Docenti Crediti: 9
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 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
    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 2
 ArgomentiRiferimenti testi
1Introduzione ai sistemi distribuiti. Motivazioni. Problematiche. Classi di soluzioni.[1], cap. 1 
2Sincronizzazione dei clock. Soluzioni di Cristian e Berkeley. NTP.[1], sezione 6.1 
3Clock logici e multicast totalmente ordinato.[1], sezione 6.2.1 
4Clock logici vettoriali. Ordinamenti temporali. Multicast con causal delivery.[1], sezione 6.2.2 
5Distributed snapshot. Stato globale di un sistema. Safety e liveness nei sistemi distribuiti. Mutual exclusion distribuita.[2], sezioni 11.5 e 11.6 
6Consistency nei sistemi distribuiti. Data-centric e client-centric consistency.[1], sezioni 7.1, 7.2, 7.3 
7Protocolli di coerenza per i dati. Algoritmi epidemici. Protocollo di replicazione. [1], sezioni 7.4 e 7.5 
8Affidabilità e tolleranza ai guasti nei sistemi distribuiti. Modelli di guasto. Fault masking. Fault recovery.[1], sezioni 8.1 e 8.2 
9Commit a due e a tre fasi[1], sezione 8.5 
10Checkpointing e backward recovery[1], sezione 8.6 
11Il problema dei generali bizantini[2], sezione 12.5 
12Il cloud computing: motivazione e concetti, soluzioni. materiale fornito dal docente 
13I web services e architetture a microservizimateriale fornito dal docente 
LABORATORIO
 ArgomentiRiferimenti testi
1Amazon web services: introduzione e architettura. 
2Amazon web services: principali task di amministrazione. 
3Amazon web services: servizi IAM di identificazione. 
4Amazon web services: servizi di elaborazione. 
5Amazon web services: servizi di storage. 
6Amazon web services: funzionalità avanzate per sviluppatori cloud. 
7Amazon web services: networking 
8Amazon web services: console CLI 
9Amazon web services: Elastic Load Balacing e Autoscaling 
10Docker: nozione di container 
11Docker: swarm,servizi, stack 
12Devops: sviluppo e produzione 
13Microsoft Azure: concetti e amministrazione. 
14Microsoft Azure: principali servizi ed esempi di sviluppo. 
15Google app engine. 
16Openstack: architettura e installazione. 
17Virtualizzazione 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.