Insegnamento CLOUD COMPUTING
- Corso
- Programmazione e gestione di sistemi informatici
- Codice insegnamento
- A003655
- Curriculum
- Comune a tutti i curricula
- Docente
- Marco Marinello
- Docenti
-
- Marco Marinello
- Ore
- 42 ore - Marco Marinello
- CFU
- 6
- Regolamento
- Coorte 2024
- Erogato
- 2025/26
- Attività
- Caratterizzante
- Ambito
- Tecnologie informatiche e dell'informazione
- Settore
- INF/01
- Tipo insegnamento
- Obbligatorio (Required)
- Tipo attività
- Attività formativa monodisciplinare
- Lingua insegnamento
- ITALIANO
- Contenuti
- 1. Panoramica del corso
Introduzione generale alla struttura del corso
Riferimenti e materiali richiesti
Formato dell'esame e criteri di valutazione
Organizzazione del corso e dipendenze
2. Fondamenti del cloud computing
Evoluzione dell'informatica: dai mainframe all'utility computing
Definizione e caratteristiche principali del cloud computing
Tipi di cloud computing: privato, pubblico, ibrido
Principali fornitori di servizi cloud (AWS, Azure, GCP, ecc.)
Modelli di servizi cloud:
IaaS (Infrastructure as a Service)
PaaS (Platform as a Service)
SaaS (Software as a Service)
Risorse dedicate vs. risorse condivise
3. Virtualizzazione nel cloud computing
Scenari applicativi e terminologia
Vantaggi della virtualizzazione
Livelli di implementazione della virtualizzazione
Tipi di hypervisor (Tipo 1 vs. Tipo 2)
Implicazioni sulle prestazioni
Livelli di privilegio e virtualizzazione della CPU assistita dall'hardware
4. Sfide e soluzioni del cloud computing
Applicazioni non adatte al cloud computing
Provisioning statico vs. scalabilità dinamica
Fluttuazioni del carico di lavoro e scalabilità automatica
Elasticità e bilanciamento del carico
Architettura microservizi
Accordi sul livello di servizio (SLA)
Rischi dei data center e strategie di mitigazione
Certificazioni cloud e conformità
Implicazioni legali del cloud computing
5. Gestione delle macchine virtuali e infrastruttura come codice (IaC)
Tecniche di acquisizione dei dati
Processo di avvio e configurazione delle VM
Metodi per la distribuzione delle configurazioni delle VM (ad es. cloud-init)
Opzioni DHCP RFC 1497
Tecniche di isolamento della rete (ARP statico vs dinamico)
Problemi di sicurezza: attacchi Man-in-the-Middle (MITM)
Reti basate su hypervisor
CGNAT e gateway lontani
Strumenti di interazione delle VM
Modelli di VM e personalizzazione
Introduzione all'Infrastructure as Code (IaC) e Ansible
6. Gestione della configurazione con Ansible
Raccolta di dati con Ansible
Gestione dei file e delle configurazioni (lineinfile, moduli ini)
Monitoraggio dello stato (ok, modificato)
Espressioni regolari nell'automazione
Modelli basati su variabili
Strutture di controllo: loop, include, blocchi
Registrazione dei risultati e preseeding debconf
Gestione degli errori e dei guasti
7. Tecniche avanzate di virtualizzazione
Paravirtualizzazione: concetti, motivazioni, pro e contro
Integrazione con KVM e VirtIO
Funzionalità dell'ambiente virtuale Proxmox
Migrazione live e reti di archiviazione (SAN)
Opzioni di archiviazione su disco delle VM
ZFS: vdev, array, parità, pool e snapshot
Gestione della memoria: ballooning
8. Tecnologie di containerizzazione
Caratteristiche e implementazione dell'isolamento (cgroup, namespace)
Definizione e architettura dei container
Differenze tra VM e container
Container privilegiati e non privilegiati
Funzionalità Linux
Software di containerizzazione comuni (LXC, containerd, Docker, Podman)
Immagini, livelli e archiviazione dei container
Container stateless e stateful
9. Alta disponibilità e disaster recovery
Definizioni: alta disponibilità (HA), continuità operativa (BC), disaster recovery (DR)
Metriche chiave: MTBF (tempo medio tra i guasti), MTTR (tempo medio di riparazione)
Single Point of Failure (SPOF)
Modelli di ridondanza:
Attivo/Attivo, Attivo/Passivo, Attivo/Backup
Ridondanza N+1 e 2N+1
Meccanismi di failover automatico
Configurazioni di record DNS multi-A
Bilanciatori di carico:
Bilanciatori di carico L3 vs. L7
Controlli di integrità e heartbeat
10. Networking e orchestrazione dei container
Tipi di driver di rete e loro caratteristiche
Presentazioni degli studenti su:
Algoritmi di bilanciamento del carico HAProxy
Software grafico per la gestione dei container
Server DNS integrato in Docker
11. Docker Compose e orchestrazione dei servizi
Introduzione a Docker Compose
Elementi di primo livello:
Servizi, reti, configurazioni, segreti
Parametri e configurazioni chiave
Esempi pratici e flussi di lavoro di implementazione - Testi di riferimento
- Dan Marinescu, "Cloud Computing: Theory and Practice, 3rd Edition", Morgan Kaufmann, 2022.
Sean P. Kane and Karl Matthias, "Docker: Up & Running: Shipping Reliable Containers in Production", O'Reilly, 2023.
Serena Sensini, "Docker: Sviluppare e rilasciare software tramite container", Apogeo, 2020. - Obiettivi formativi
- Spiegare l'evoluzione dell'informatica dai mainframe al cloud computing.
Definire il cloud computing e distinguere tra cloud privato, pubblico e ibrido.
Confrontare IaaS, PaaS e SaaS, identificandone i casi d'uso e i compromessi.
Valutare i vantaggi e i limiti delle risorse cloud dedicate rispetto a quelle condivise.
Descrivere il ruolo della virtualizzazione nel cloud computing e distinguere i tipi di hypervisor.
Analizzare la virtualizzazione assistita da hardware e le sfide legate all'escalation dei privilegi.
Identificare i carichi di lavoro non adatti al cloud e proporre soluzioni alternative.
Comprendere i concetti di autoscaling, elasticità e bilanciamento del carico nelle architetture cloud.
Valutare gli accordi sul livello di servizio (SLA) e le strategie di riduzione del rischio per i data center.
Discutere le sfide legali, di conformità e di certificazione del cloud computing.
Configurare macchine virtuali utilizzando strumenti come cloud-init.
Applicare tecniche di isolamento della rete e riconoscere le minacce alla sicurezza (ad esempio, gli attacchi MITM).
Automatizzare la configurazione dell'infrastruttura utilizzando Ansible (playbook, moduli, template).
Risolvere gli errori di configurazione e convalidare gli stati del sistema con Ansible.
Confrontare la paravirtualizzazione con la virtualizzazione completa, in particolare con KVM/VirtIO.
Gestire le soluzioni di storage delle macchine virtuali (SAN, ZFS, snapshot) e ottimizzare le prestazioni.
Eseguire la migrazione live delle macchine virtuali e illustrare le tecniche di espansione della memoria.
Confronto tra container e macchine virtuali, con particolare attenzione all'isolamento (cgroup, namespace).
Distribuire i container utilizzando Docker/Podman e gestire immagini, livelli e storage. - Prerequisiti
- Conoscenze derivanti dal corso di sistemi operativi: il funzionamento del sistema operativo e del kernel e le relative chiamate.
Conoscenze derivanti dal corso di reti di calcolatori: indirizzamento, NAT, ARP, reti distribuite, VLAN, gateway, modello ISO/OSI, porte.
Conoscenze basilari di programmazione. - Metodi didattici
- Lezione frontale; flipped classroom; dibattito.
- Modalità di verifica dell'apprendimento
- Esame scritto (tramite LibreEOL) e orale. Entrambe le componenti devono essere sufficienti (18/30) perché l'esame sia passato.