SISTEMI CLOUD E LABORATORIO
Anno accademico 2019/2020 - 2° anno - Curriculum Sistemi di Rete e Sicurezza- SISTEMI CLOUD: Giuseppe PAPPALARDO
- LABORATORIO: Giuseppe PAPPALARDO
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre: 2°
Obiettivi formativi
- SISTEMI CLOUD
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. - 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 CLOUD
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 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.
Sono previsti interventi di approfondimento tenuti da esperti del settore. - LABORATORIO
Sessioni di laboratorio con esercitazioni
Prerequisiti richiesti
- SISTEMI CLOUD
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.
- LABORATORIO
Conoscenza delle principali architetture e tecnologie per lo sviluppo dei sistemi distribuiti.
Frequenza lezioni
- SISTEMI CLOUD
La frequenza è vivamente raccomandata, dato anche l'orientamento pratico dell'attività didattica, per il raggiungimento di una piena comprensione del materiale oggetto del corso.
- LABORATORIO
Consigliata, per il raggiungimento di effettive capacità operative nel campo dell'amministrazione e dello sviluppo per il cloud computing.
Contenuti del corso
- SISTEMI CLOUD
Fondamenti e concetti di sistemi distribuiti
- 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.
Introduzione al cloud computing
- Principi e caratteristiche del cloud computing
- Modell di servizio: IaaS, PaaS, SaaS, XaaS
- Aspetti geografici del cloud computing. Regioni e availability zone di Amazon AWS. Edge locations. Availability.
- Modelli di costo e uso educational.
Cloud e servizi di calcolo
- AWS EC2. Istanze: creazione e gestione.
- Accesso sicuro con chiave pubblica-privata.
- Istanze linux e ssh. Istanze Windows.
Cloud e servizi di storage
- Servizio AWS S3.
- Bucket come contenitore di oggetti persistenti. Proprietà e permessi.
- Gestione degli oggetti di un bucket.
Controllo dell'accesso al cloud
- Servizio AWS IAM: Identity and Access Management.
- Risorse, policy di accesso e permessi
- Utenti e gruppi di utenti
- Naming in AWS: Amazon Resource Name (ARN)
- File di policy: sorgente JSON e uso del wizard per le policy
- I ruoli AWS per autorizzazioni temporanee
- Autenticazione federata
- Autenticazione multi-fattore
- Policy user/group-centric e resource-centric
- Accesso cross-acount a risorse
Cloud e networking
- Le Virtual Private Cloud (VPC) di AWS
- Regioni, availability zones, VPC e subnet
- Architetture di rete per applicazioni cloud multi-tier
- Route table e gateway nelle VPC. IP pubblici. Sottoreti private, pubbliche ed ibride.
- Sicurezza nelle VPC: NACL (Network Access Control List) e Security group. Regole stateless e stateful, inbound e outbound.
- Apparentamento (peering) tra VPC
La Command ine Interface (CLI) di AWS
- Installazione e configurazione della AWS CLI come package Python
- AWS CLI e sicurezza. Chiavi. Credenziali. Profili. Ruoli.
- Struttura e sintassi dei comandi. Parametri. Help in linea. Sintassi JSON e sintassi abbreviata.
- Esempio: AWS CLI e EC2
Il cloud elastico: load-balancing e auto-scaling in AWS
- Elastic load balancing (ELB): routing di richieste verso un pool di istanze.
- Tipi di load balancer. Creazione di un LB. Gestione di un LB ed istanze EC2 collegate. Security.
- Health check di un pool load-balanced.
- Auto-scaling. Configurazioni di lancio. Creazione e gestione. Autoscaling e ELB.
- Policy di scaling: increase e decrease. Soglie per lo scaling. Notifica mediante SNS. Stress test.
Cenni ad aspetti avanzati del cloud computing
- Servizi AWS per IOT (Internet of Things)
- Servizi AWS per il machine learning
- Servizi AWS per big data
- Cloud e container
- LABORATORIO
- Amazon web services
- Microsoft azure
- Google app engine
- Soluzioni open: openstack
- Virtualizzazione in ambiente Linux
- Docker e container
- Devops
Testi di riferimento
- SISTEMI CLOUD
- Documentazione online, puntualmente indicata nelle Note delle lezioni (pubblicate attraverso il portale Studium).
- Sistemi distribuiti. Principi e paradigmi. Andrew S. Tanenbaum, Maarten Van Steen. Pearson/Paravia/Bruno Mondadori. 2007. ISBN 8871923669, 9788871923666
- 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 CLOUD | |||
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 | Microsoft Azure: concetti e amministrazione. | ||
14 | Microsoft Azure: principali servizi ed esempi di sviluppo. | ||
15 | Google app engine. | ||
16 | Openstack: architettura e installazione. | ||
17 | Virtualizzazione in ambiente Linux. |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
- SISTEMI CLOUD
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.
Note
- Per sostenere gli esami è necessario prenotarsi utilizzando l'apposito modulo del portale studenti.
- In mancanza di prenotazione, l'esame non può essere nè sostenuto nè verbalizzato.
- 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 CLOUD
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. - 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.