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.