MATEMATICA E INFORMATICAInformaticaAnno accademico 2022/2023

1015944 - SISTEMI CLOUD E LABORATORIO
Modulo 1015945 - SISTEMI CLOUD

Docente: Giuseppe PAPPALARDO

Risultati di apprendimento attesi

Il corso mira a fornire i fondamenti concettuali essenziali per lo sviluppo di soluzioni e sistemi Cloud e, più in generale, distribuiti. Quale esempio concreto di cloud verrà presentato, sia negli aspetti concettuali che operativi, Amazon AWS, prescelto per la completezza e ricchezza delle soluzioni e dei servizi offerti, che ne fanno un archetipo di cloud commerciale, nonché per la disponibilità di forme di utilizzo educativo gratuito. Verranno considerati prevalentemente servizi di calcolo (basati su virtualizzazione (IaaS) e di livello piattaforma (PaaS)), storage, networking, controllo dell'accesso; ed architetture con funzionalità di load-balancing ed auto-scaling.

Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi

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, aspetti architetturali) riguardanti i sistemi cloud e, più in generale, 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 e scenari pratici, assimilabili a quelli oggetto del corso (o derivati da essi), tipici dello stato dell'arte della progettazione di sistemi cloud. Tali capacità saranno ulteriormente coltivate e potenziate grazie alle esercitazioni previste e nel modulo di laboratorio di questo corso.
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 di sistemi cloud e distribuiti, così da poter affrontare autonomamente le esigenze che gli si presenteranno nell'attività lavorativa come cloud engineer/architect.
Abilità comunicative (communication skills): lo studente apprenderà la terminologia specifica dei sistemi cloud e 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, al fine di applicarne risultati e soluzioni in contesti concreti, in specie lavorativi, per far fronte alle problematiche progettuali e decisionali che emergono nello sviluppo e nell'implementazione di sistemi cloud.

Modalità di svolgimento dell'insegnamento

Le lezioni sono tenute in aule-laboratorio, nelle quali gli studenti possono utilizzare i PC disponibili o il proprio portatile. Esse consistono prevalentemente in sessioni live, operate dal docente, di utilizzo, amministrazione e sviluppo per il cloud. Come cornice e guida di tali sessioni, vengono proiettate delle note, condivise con gli studenti attraverso la piattaforma Teams d'ateneo o il portale Studium. Nelle esercitazioni, gli studenti sono vivamente incoraggiati a replicare e innovare le sessioni.
Le note delle lezioni non ambiscono a costituire un testo di riferimento, ma, oltre ad agevolare la comprensione, forniscono un dettaglio puntuale del materiale presentato e della documentazione tecnica da consultare quale riferimento.

Prerequisiti richiesti

Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti e Web. Tali conoscenze possono essere acquisite nel relativo insegnamento del corso di laurea triennale in Informatica.

Frequenza lezioni

La frequenza è vivamente raccomandata, dato anche l'orientamento pratico dell'attività didattica, per il raggiungimento di una piena comprensione del materiale oggetto del corso.

Contenuti del corso

Fondamenti e concetti di sistemi distribuiti

Introduzione al cloud computing

Cloud e servizi di calcolo

Cloud e servizi di storage

Controllo dell'accesso al cloud

Cloud e networking

La Command Line Interface (CLI) di AWS

Il cloud elastico: load-balancing e auto-scaling in AWS

Cenni ad aspetti avanzati del cloud computing

Testi di riferimento

  1. Documentazione online, puntualmente indicata nelle Note delle lezioni (pubblicate attraverso la piattaforma Teams d'ateneo o il portale Studium).
  2. Sistemi distribuiti. Principi e paradigmi. Andrew S. Tanenbaum, Maarten Van Steen. Pearson/Paravia/Bruno Mondadori. 2007. ISBN 8871923669, 9788871923666
  3. Distributed Systems: Concepts and Design, 4th edition. Coulouris, Dollimore and Kindberg. Pearson Education. 2005.
  4. Note delle lezioni.

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione ai sistemi distribuiti. Motivazioni. Problematiche. Classi di soluzioni.4
2Sincronizzazione dei clock e clock logici.4
3Distributed snapshot. Stato globale di un sistema.4
4Nozioni di fault tolerance4
5Il cloud computing: motivazione e concetti, soluzioni.4
6Amazon web services: introduzione e architettura.4
7Amazon web services: principali task di amministrazione. 4
8Amazon web services: servizi IAM di identificazione e controllo dell'accesso.4
9Amazon web services: EC2 e servizi di calcolo. 4
10Amazon web services: S3 e servizi di storage. 4
11Amazon web services: networking.4
12Amazon web services: console CLI.4
13Amazon web services: funzionalità avanzate per sviluppatori cloud.4
14Amazon web services: Elastic Load Balacing e Autoscaling.4
15Altri cloud pubblici.4
16Cloud privati.4
17Kubernetes e l'orchestrazione dei container.4
18Temi avanzati sul cloud: big data, machine learning, IOT4

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame finale consiste in un colloquio orale che verterà sugli argomenti del corso e sull'analisi di un progetto, svolto dallo studente individualmente o in un piccolo gruppo. La realizzazione del progetto comporterà l'impiego di una o più tra le tecnologie e gli strumenti presentati nel corso. Il peso del progetto sulla valutazione complessiva verrà concordato all'atto dell'assegnazione.

Gli elementi di valutazione della prova orale includono la pertinenza delle risposte, la qualità dell'esposizione (compresa la proprietà di linguaggio tecnico), la capacità operativa dimostrata in esempi concreti di attività di gestione di risorse cloud.

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.

Esempi di domande e/o esercizi frequenti

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.
Data-centric e client-centric consistency.
Gestione di istanze EC2 in AWS.
Gestione di container S3 in AWS.
Gestione delle policy per le autorizzazioni con IAM di AWS.
Gestione del networking in AWS: subnetting per un applicazione 3-tier sul cloud.
Attivazione di un pool di istanze EC2 con load balancing elastico e auto-scaling con policy basate su soglie e dotate di funzionalità di notifica SNS.

English version