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.
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.
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.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Sessioni di laboratorio con esercitazioni.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
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.
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
La frequenza è vivamente raccomandata, dato anche l'orientamento pratico dell'attività didattica, per il raggiungimento di una piena comprensione del materiale oggetto del corso.
Consigliata, per il raggiungimento di effettive capacità operative nel campo dell'amministrazione e dello sviluppo per il cloud computing.
​
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 ine Interface (CLI) di AWS
Il cloud elastico: load-balancing e auto-scaling in AWS
Cenni ad aspetti avanzati del cloud computing
Documentazione tecnica resa disponibile in rete dai principali fornitori di risorse per il cloud computing.
Tutto il materiale presentato a lezione verrà reso disponibile o accessibile (se trattasi di risorsa esterne) attraverso la piattaforma Teams d'ateneo o il portale Studium.
Tutto il materiale presentato a lezione verrà reso disponibile o accessibile (se trattasi di risorsa esterne) attraverso il portale Studium.
SISTEMI CLOUD , IOT | ||
Argomenti | Riferimenti 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 microservizi | materiale fornito dal docente |
LABORATORIO | ||
Argomenti | Riferimenti 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 | Amazon web services: networking | |
8 | Amazon web services: console CLI | |
9 | Amazon web services: Elastic Load Balacing e Autoscaling | |
10 | Docker: nozione di container | |
11 | Docker: swarm,servizi, stack | |
12 | Devops: sviluppo e produzione | |
13 | Altri cloud pubblici | |
14 | Cloud privati | |
15 | Kubernetes e l'orchestrazione dei container | |
16 | Virtualizzazione in ambiente Linux. |
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.
Note
Svolgimento di un progetto concordato in anticipo col docente. Discussione in sede d'esame dei risultati ottenuti.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
NB: tutti gli esempi elencatti sotto sono trattati in maniera dettagliata nelle note di supporto alle lezioni (disponibili sul portale Studium).
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.
Impiego delle tecnologie tipiche del web e del cloud computing nella realizzazione del progetto scelto.
Accesso ai servizi delle piattaforme Cloud presentate nel corso.