Pagina su DidatticaWeb
Link per Microsoft Teams
Risultati dell'apprendimento
Principi, metodologie e tecnologie per la progettazione ed implementazione di sistemi distribuiti moderni, inclusi i sistemi distribuiti a larga scala ed i sistemi di Cloud computing.
CFU
9 CFU, 90 ore di didattica frontale distribuite in 6 ore a settimana.
Prerequisiti
Il corso presuppone una buona conoscenza dei protocolli di rete,
della progettazione e programmazione di applicazioni
software e di rete (linguaggi C, Python e Java),
dell'organizzazione e gestione di basi di dati,
dell'infrastruttura Web.
La didattica dell’A.A. 2022/23 sarà svolta esclusivamente in presenza.
La classe virtuale su Teams sarà utilizzata per condividere il materiale del corso e per le informazioni.
Orario delle lezioni
Orario valido dal 26/9/2022 al 20/1/2023 (primo semestre)
- Lunedì dalle 9:30 alle 11:15, aula B13
- Mercoledì dalle 9:30 alle 11:15, aula B13
- Venerdì dalle 9:30 alle 11:15, aula B13
Valeria Cardellini
Tel.: 067259 7388
E-mail:
(specificare [SDCC] nell'oggetto della mail)
Ufficio: stanza D1-17,
corpo D dell'edificio "Ingegneria dell'Informazione", primo piano.
Orario di ricevimento: da definire
Gabriele Russo Russo
Docente del corso integrativo "Hands-on Cloud Computing Services" (10 ore)
E-mail:
(specificare [SDCC] nell'oggetto della mail)
Ufficio: stanza D1-19,
corpo D dell'edificio "Ingegneria dell'Informazione", primo piano.
- 17 settembre 2022 -
Il corso avrà inizio mercoledì 28 settembre, in quanto lunedì 26 settembre l'attività didattica è sospesa.
Si raccomanda di effettuare l'iscrizione al corso tramite Delphi.
Testi "classici" sui sistemi distribuiti:
Testi che trattano in modo esteso i sistemi e le applicazioni Cloud:
Corso integrativo Hands-on Cloud Computing Services
Giorno |
Argomento |
Slide |
Ultima modifica |
1 |
Introduzione ad AWS; EC2 |
Slides (.pdf)
| |
2 |
Elastic Load Balancing, Auto-Scaling, VPC |
Slides (.pdf)
|
|
3 |
AWS CLI, Ansible, boto3 |
Slides (.pdf)
codice (.zip) |
|
4 |
S3, IaC, Terraform, CloudFront, DynamoDB |
slides (.pdf)
codice (.zip) |
|
5 |
AWS Lambda, SQS |
slides (.pdf)
codice (.zip) |
|
6 |
AWS API Gateway, Step Functions, ... |
slides (.pdf)
codice (.zip) |
|
I seguenti articoli approfondiscono ed integrano gli argomenti trattati a lezione; la loro lettura è raccomandata.
When I talk to researchers, when I talk to people wanting to engage in entrepreneurship, I tell them that if you read research papers consistently, if you seriously study half a dozen papers a week and you do that for two years, after those two years you will have learned a lot. This is a fantastic investment in your own long term development.
(Andrew Ng,
Inside The Mind That Built Google Brain: On Life, Creativity, And Failure)
- A. Rotem-Gal-Oz,
"Fallacies of distributed computing explained".
(pdf)
- M. van Steen and A.S. Tanenbaum,
"A brief introduction to distributed systems",
Computing, vol. 98, no. 10, pp. 967-1009, 2016.
(pdf)
- J. Hodges,
"Notes on distributed systems for young bloods", 2013.
(html)
Introduzione al Cloud Computing
- M. Armbrust et al., "A view of cloud computing", ACM Comm., Vol. 53, No. 4, 2010. (pdf)
- P. Mell, T. Grance, "The NIST definition of cloud computing", Sept. 2011. (pdf)
- S.A. Baset, "Cloud SLAs: Present and future", SIGOPS Oper. Syst. Rev., Vol. 46, No. 2, pp. 57-66, July 2012. (pdf)
- N. Herbst, R. Krebs, G. Oikonomou, G. Kousiouris, A. Evangelinou, A. Iosup, S. Kounev, "Ready for rain? A View from SPEC Research on the future of cloud metrics", SPEC Research Group - Cloud Working Group, Standard Performance Evaluation Corporation (SPEC), Technical Report SPEC-RG-2016-0, 2016. (pdf)
- R. Buyya et al., "A manifesto for future generation Cloud Computing: Research directions for the next decade", ACM Comput. Surv., Vol 51, No. 5, 2019. (pdf)
Architetture dei SD
- P.T. Eugster, P.A. Felber, R. Guerraoui, A.-M. Kermarrec, "The many faces of publish/subscribe", ACM Computing Surveys, Vol. 35, No. 2, pp. 114-131, June 2003. (pdf)
- H. Balakrishnan, M.F. Kaashoek, D. Karger, R. Morris, I. Stoica, "Looking up data in P2P systems", Communications of the ACM, Vol. 46, No. 2, pp. 43-48, Feb. 2003. (pdf)
- I. Stoica, R. Morris, D. Liben-Nowell, D.R. Karger, M.F. Kaashoek, F, Dabek, H. Balakrishnan, "Chord: a scalable peer-to-peer lookup protocol for Internet applications", IEEE/ACM Trans. Netw., Vol. 11, No. 1, pp. 17-32, Feb. 2003. (pdf)
- J.O. Kephart, D.M. Chess, "The vision of autonomic computing", IEEE Computer, Vol. 36, No. 1, Jan. 2003. (pdf)
- D. Weyns, B. Schmerl, V. Grassi, S. Malek, R. Mirandola, C. Prehofer, J. Wuttke, J. Andersson, H. Giese, K. Göschka,
"On patterns for decentralized control in self-adaptive systems", In Software Engineering for Self-Adaptive Systems II, 2013. (pdf)
Comunicazione nei SD
Virtualizzazione
- K. Hwang, J. Dongarra, G.C. Fox, "Virtual machines and virtualization of clusters and data centers",
chapter 3 of Distributed and Cloud Computing, Morgan Kaufmann, 2011.
(pdf)
- C. Pahl, "Containerisation and the PaaS Cloud", IEEE Cloud Computing, Vol. 2, No. 3, pp. 24-31, May 2015.
(pdf)
- S. Yegulalp,
"What is Docker? The spark for the container revolution",
InfoWorld, 2019.
(html)
- A. Agache et al., "Firecracker: Lightweight Virtualization for Serverless Applications", Proc. NSDI 2020, 2020. (html)
- Kuenzer et al., Unikraft: fast, specialized unikernels the easy way, Proc. EuroSys 2021, 2021.
(pdf)
Architetture a microservizi e serverless computing
-
M. Fowler, "Microservices Guide", 2019.
(html)
-
J. Lewis, M. Fowler, "Microservices", 2014.
(html)
-
P. Jamshidi, C. Pahl, N. C. Mendonça, J. Lewis and S. Tilkov,
"Microservices: The Journey So Far and Challenges Ahead",
IEEE Software, Vol. 35, No. 3, 2018.
(pdf)
-
C. Richardson, "Microservice Architecture", 2021.
(html)
-
P. Castro, V. Ishakian, V. Muthusamy, A. Slominski,
"The Rise of Serverless Computing",
Communications of the ACM, Vol. 62, No. 12, pp. 44-54, Dec. 2019.
(pdf)
-
E. Jonas et al.,
"Cloud Programming Simplified: A Berkeley View on Serverless Computing",
Technical Report No. UCB/EECS-2019-3, Feb. 2019.
(pdf)
-
M. Roberts, "Serverless Architectures", 2018.
(html)
-
J. Schleier-Smith et al., "What serverless computing is and should become: the next phase of cloud computing", ACM Comm., 2021. (pdf)
Sincronizzazione nei SD
- L. Lamport,
"Time, clocks and the ordering of events in a distributed system",
ACM Communications, Vol. 21, No. 7, pp. 558-565, July 1978.
(pdf)
- M. Raynal, M. Singhal,
"Logical time: Capturing causality in distributed systems",
IEEE Computer, Feb. 1996.
(pdf)
- C. Baquero, N. Preguiça,
"Why logical clocks are easy",
ACM Queue, Jan. 2016.
(pdf)
Consistenza e replicazione nei SD
- E. Brewer,
"CAP twelve years later: how the "rules" have changed",
IEEE Computer, Feb. 2012.
(pdf)
- D.K. Gifford,
"Weighted voting for replicated data",
Proc. of the 7th ACM Symposium on Operating Systems Principles, Dec. 1979.
(pdf)
- W. Vogels, "Eventually consistent",
Communications of the ACM, Vol. 52, No. 1, pp. 40-44, Jan. 2009.
(pdf)
Tolleranza ai guasti nei SD
- A. Avizienis, J.-C. Laprie, B. Randell, C. Landwehr,
"Basic concepts and taxonomy of dependable and secure computing",
IEEE Trans. on Dependable and Secure Computing, 2004.
(pdf)
- L. Lamport,
"Paxos made simple",
ACM SIGACT News, Vol. 32, No. 4, Dec. 2001.
(pdf)
- D. Ongaro and J. Ousterhout,
"In search of an understandable consensus algorithm",
Proc. of USENIX Annual Technical Conference 2014, 2014.
(pdf)
- The Paper Trail,
"Consensus Protocols: Paxos", 2009.
(html)
Video di presentazioni utili per approfondire alcuni argomenti del corso.
-
A Conversation with Turing Award Winner Leslie Lamport
-
Cloud 101: An Introduction to Cloud Computing, AWS Public Sector
-
Introduction to Apache Kafka, James Ward (Salesforce.com).
-
Unikernels: Who, What, Where, When, Why, Adam Wick (Galois Inc.)
-
Mastering Chaos - A Netflix Guide to Microservices, Josh Evans (Netflix) (video con sottotitoli automatici in italiano)
-
How Counterstrike Works (Time in Distributed Systems), Chris Colohan
-
Paxos Simplified, Chris Colohan
-
Paxos Lecture, John Ousterhout (Stanford University)
-
Designing for understandability: The Raft consensus algorithm, John Ousterhout (Stanford University)
Esempi SUN RPC
square, echo, average, remote directory listing:
sun-rpc.zip
Esempi Java RMI
echo: rmi_echo.zip
Esempi Go
Introduzione a Go: go_introduction.zip
RPC moltiplicazione e divisione tra interi: go_rpc_arith.zip
gRPC ProductInfo in Go: grpc-go_productinfo.zip
Esempi RabbitMQ
Hello in Go: rabbitmq_1_hello.zip
Worker in Go: rabbitmq_2_worker.zip
I seguenti link forniscono delle fonti per approfondimenti.
Introduzione ai sistemi distribuiti
Introduzione al Cloud computing
Architetture per sistemi distribuiti
Comunicazione nei sistemi distribuiti
Introduzione alla programmazione in Go
Virtualizzazione
Architetture a microservizi e serverless
Coordinazione e sincronizzazione nei sistemi distribuiti
Consistenza e replicazione nei sistemi distribuiti
Tolleranza ai guasti nei sistemi distribuiti
Consenso nei sistemi distribuiti
Amazon Web Services
L'esame si compone di:
- Prova scritta;
- Progetto e relativa discussione;
- Prova orale facoltativa.
Prova scritta
La prova scritta verte sugli argomenti dell'intero corso e prevede domande a risposta aperta ed esercizi.
Si raccomanda di sostenere la prova scritta prima del progetto.
In alternativa alla prova scritta, si terranno due prove scritte intermedie. Tali prove intermedie possono essere sostenute soltanto dagli studenti immatricolati al primo anno della Laurea Magistrale nell'A.A. 2022/23 e dagli studenti immatricolati in anni precedenti e che optano per il programma dell'A.A. 2022/23.
Se entrambe le prove intermedie saranno superate positivamente, verrà proposto un voto finale per la prova scritta.
Non è possibile recuperare le prove intermedie in modo parziale.
Non ci sono vincoli sulla partecipazione alle prove
(eccetto la prenotazione obbligatoria per le prove scritte).
Tuttavia, la partecipazione ad una prova scritta comporta la rinuncia automatica
ad un voto sufficiente conseguito in una prova scritta precedente.
Gli studenti immatricolati in anni precedenti all'A.A. 2022/23 e che intendono
sostenere le prove intermedie devono comunicarlo alla docente.
Prova orale facoltativa
La prova orale è facoltativa e verte su tutto il programma del corso.
E' possibile sostenere la prova orale facoltativa in un appello diverso da quello in cui si è sostenuto la prova scritta, purchè nella stessa sessione.
E' possibile sostenere la prova scritta e l'eventuale prova orale in una stessa sessione e posticipare la discussione del progetto ad un'altra sessione.
Le tracce dei progetti sono suddivise in due modalità, corrispondenti a due diversi pesi del progetto nella valutazione finale e a due differenti composizioni dei gruppi:
- tipo A: 50% prova scritta, 50% progetto (2-3 studenti per gruppo);
- tipo B: 75% prova scritta, 25% progetto individuale.
Per il corso integrativo e la realizzazione del progetto, è possibile usufruire del grant offerto da Amazon Web Service tramite il programma AWS Academy.
Gli studenti iscritti al corso riceveranno via email le istruzioni per l'accesso.
Negli anni passati alcuni gruppi di studenti hanno svolto il loro progetto partecipando a competizioni internazionali o nazionali, tra cui:
Per la prenotazione alle prove d'esame, usare il servizio di prenotazione su
Delphi.
- I prova intermedia
Lunedì 5 dicembre 2022, ore 16:00 aula A2 edificio Didattica.
Testo
- II prova intermedia
Martedì 24 gennaio 2023, ore 9:30 aula C2 edificio Didattica.
- I appello sessione invernale
Martedì 7 febbraio, ore 9:30 aula C4 edificio Didattica.
- II appello sessione invernale
Mercoledì 1 marzo, ore 9:30 aula C4 edificio Didattica.
- I appello sessione estiva
Lunedì 19 giugno, ore 9:30 aula C4 edificio Didattica.
- II appello sessione estiva
Martedì 4 luglio, ore 9:30 aula B6 edificio Didattica.
- I appello sessione autunnale
Martedì 5 settembre, ore 9:30 aula B5 edificio Didattica.
- II appello sessione autunnale
Lunedì 18 settembre, ore 9:30 aula C4 edificio Didattica.