Cloud Computing and Distributed Systems
(CM0468)
Università Ca' Foscari di Venezia
Corso di Laurea in Informatica
Anno 2021-2022
Go to the English version

Docente: S. Balsamo
balsamo@unive.it

CFU: 6

Obbiettivi | Programma | Testi | Slide | Avvisi | Esami

Obbiettivi

Introduzione ai sistemi distribuiti e cloud computing. Progetto, architetture e tecnologie. Applicazioni cloud, qualità del servizio e sicurezza. Comunicazione tra processi, invocazione remota e chiamata di procedura remota. Algoritmi per la sincronizzazione, coordinamento, condivisione dei dati, allocazione delle risorse, consistenza, tolleranza ai guasti. Replicazione, consistenza e controllo della concorrenza in sistemi transazionali. Casi di studio.

Programma

1. Introduzione ai sistemi distribuiti e cloud computing. Fondamenti. Introduzione ai sistemi distribuiti e cloud computing. Modelli architetturali, classificazione e progettazione. Principi di progettazione di sistemi distribuiti. Tipi di sistemi distribuiti.

2. Comunicazione. Paradigma client-server e IPC. Comunicazione di gruppo. Comunicazione multicast. Virtualizzazione di rete.

3. Meccanismi di invocazione e chiamata remota. Remote Method Invocation (RMI) e Remote Procedure Call (RPC). Tipi e semantiche. Comunicazione indiretta, paradigma publish-subscribe.

4. Fondamenti di cloud computing. Progettazione di cloud computing. Meccanismi e architetture. Modelli, tecnologie e sicurezza.

5. Servizio Cloud e applicazioni. Metriche di qualità del servizio. Service Oriented Architecture. Sicurezza nel cloud.

6. Sistemi operativi distribuiti. Processi: assegnazione e schedulazione, migrazione e bilanciamento del carico. Deadlock. Allocazione di processi in sistemi distribuiti. Virtualizzazione del sistema operativo.

7. Distributed File System. Modelli di file service e di progettazione. Casi di studio: NFS, AFS. Caso studio: Google File System.

8. Sincronizzazione e coordinamento in sistemi distribuiti. Algoritmi per la sincronizzazione, il coordinamento e la sincronizzazione accordo orologio, mutua esclusione, stato globale. Ordinamento causale.

9. Dati condivisi. Replicazione, consistenza e transazioni. Modelli di consistenza. Modelli architetturali di replicazione. Transazioni e controllo della concorrenza in sistemi distribuiti. Transazioni distribuite. Mobilità in sistemi distribuiti.


Libri di testo

[C2012] G. Coulouris, J. Dollimore and T. Kindberg, "Distributed Systems: concepts and design", 5th edition, Addison Wesley Masson, 2012. pagina web http://www.cdk5.net/

[E2014] T. Erl, R. Puttini, Z. Mahmood, "Cloud Computing: Concepts, Technology and Architecture", Prentice-Hall, 2014. servicetechbooks.com/cloud


Altri testi suggeriti

[T2018] M. van Steen, A.Tanenbaum, "Distributed Systems, Priciples and Paradigms", Pub. by Maarten van Steen, 2018, ISBN: 978-15-430573-8-6 (prev. Prentice Hall, 2002), link


Slides

N.B. SN.B. I lucidi non sono da considerare come sostitutivi nè dei testi di riferimento nè della frequenza alle lezioni,
che costituiscono importanti elementi per una buona preparazione dell'esame;
i lucidi messi a disposizione costituiscono soltanto uno schema di parte delle lezioni, sono soggetti ad aggiornamenti periodici.
Per la preparazione dell'esame riferirsi ai libri di testo.

I lucidi saranno disponibili su moodle, previsti aggiornamenti e variazioni disponibili dopo le lezioni.

Ulteriori informazioni sono disponibili su moodle

Avvisi

Seminari
Nell'ambito del corso è stato possibile svolgere un approfondimento su un tema da concordare attinente al programma del corso, presentato entro la fine del corso nella forma di breve relazione scritta e orale, su argomenti concordarti con il docente.

Info:
> tempo di presentazione: circa 20 min
> relazione da presentare con: (1) relazione scritta da consegnare stampata e inviata in pdf entro il giorno della presentazione. (2) presentazione di circa 20 min.
Scegliere un argomento su temi non trattati in classe e usare un livello di dettaglio appropriato

Laboratorio

È previsto un laboratorio pratico.
Gli studenti sono invitati a partecipare al laboratorio pratico

Calendario anno 2021-2022: 7-14-21-28/3/2022 Lab 3 ore 12.15-13.45

Laboratorio di programmazione distribuita architetture client-server, RPC/RMI e cloud programming in AWS. Meccanismi interni di RMI: riprodurre una versione ridotta della Java RMI library che sarà implementata dagli studenti.

Esame

Sono previste possibilmente due prove intermedie in sostituzione dell'esame scritto
Gli studenti che superano entrambe le prove intermedie possono sostutuire lo scritto dell'esame
Ulteriori e informazioni e date in corso di definizione

Prima prova intermedia: martedì 5 aprile 2022, ore 14.00, Aula B, ulteriori informazioni disponibili su moodle
N.B.: è necessario iscriversi su moodle entro il 29/3/2022

Seconda prova intermedia: coontemporanea al primo appello: 6 giugno 2022, ore 10, Aula 1


Programma Prima Prova: argomenti del programma
1 (Introduzione ai sistemi distribuiti e cloud computing)
2 (IPC: RMI, RPC, indiretta)
3 (Meccanismi di chiamata e invocazione remota)
6 (Sistemi operativi distribuiti)
8 (Sincronizzazione e coordinamento)
Riferimenti: [C2012] Cap: 1-2-3-4-5-6-7-14-15 -- [T2018] Cap 1-2-3-4-6
Nota: è necessario iscriversi su moodle

Programma Seconda Prova: i restanti argomenti del programma non inclusi nella prima prova
4 (Fondamenti di cloud computing)
5 (Servizi Cloud e applicazioni)
7 (Distributed File Systems)
9 (Dati condivisi: transazioni, controllo della concorrenza e transazione distribuite, replicazione e consistenza. Mobilità)

Nota: sono ammessi alla seconda prova intermedia solo gli studenti che hanno superato la prima prova intermedia. Alcuni esercizi - altri esercizi

Risultati degli esami

Risultato esami:

2022: 1/2/2022 - 6/6/2022 - Prove intermedie: I 5/4/2022 - I e II 6/6/2022
2021: 8/9/2021 - 22/6/2021 - 7/6/2021 - 20/1/2021 - Prove intermedie: I 31/3/2021, I e II 7/6/2021,