95646 - SISTEMI VIRTUALIZZATI

Scheda insegnamento

SDGs

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.

Istruzione di qualità Lavoro dignitoso e crescita economica Imprese innovazione e infrastrutture

Anno Accademico 2021/2022

Conoscenze e abilità da conseguire

Al termine del corso, lo studente conosce il sistema operativo Linux, il linguaggio di scripting bash ed è in grado di realizzare applicazioni che sfruttano processi concorrenti. Conosce i principi della virtualizzazione, il concetto di container e gli strumenti per realizzare sistemi informatici virtualizzati. Conosce il concetto di microservizi e le principali piattaforme cloud. Conosce il modello Infrastructure as code (IaC) ed è in grado di utilizzare gli strumenti ed i linguaggi di orchestrazione per realizzare infrastrutture di servizi scalabili automaticamente e che bilanciano il carico.

Contenuti

Il corso fornisce le conoscenze teoriche sulla virtualizzazione e sulle piattaforme cloud e le abilità pratiche per applicare il modello Infrastructure as Code.

  • Casi di studio più significativi.
  • Bash scripting.
  • Richiami sulla Gestione locale di un sistema Linux.
  • Cenni su sicurezza dei sistemi informatici, delle server farm e delle reti. Protocolli e utilities (tls/ssl, ssh, dtls). Strumenti essenziali in ambito Linux (iptables/netfilter). NAT e protocolli per superamento di NAT (STUN,TURN, ICE), Proxy/Relay, protocolli e strumenti per proxying, Socks.
  • Principi di Virtualizzazione. Piattaforme di virtualizzazione. Container. Applicazioni della virtualizzazione.
  • Sistemi Cloud: Servizi cloud di tipo SaaS, PaaS, IaaS.
  • Cenni su Piattaforme per Cloud on premise (OpenStack, Proxmox).
  • Un primo esempio del modello Infrastructure as Code (IaC): creazione automatizzata di macchine virtuali Linux  (Vagrant, Cloud init).
  • Architetture a Microservizi: architetture software language-independent a componenti. Bus dei messaggi (a livello kernel, locali e in cloud). Esempi notevoli di architetture a Microservizi in ambito locale e in ambito cloud. Servizi SaaS, PaaS, IaaS.

  • Un esempio di virtualizzazione a livello di container: Docker. Le API di docker. Le reti virtuali tra container di docker. Costruire un immagine di container automaticamente mediante Dockerfile; Introduzione a Docker Compose; Docker Swarm - eseguire applicazioni multicontainer in cluster di host utilizzando uno strumento nativo di docker. 

  •  Kubernetes: Orchestrazione di macchine virtuali, servizi e containers. Prodotti per orchestrazione on premise su cluster o su singolo nodo (minikube).

  • Modello Infrastructure as Code: Linguaggi e sistemi di orchestrazione (Terraform, Juju, ...). 

  • Sistemi serverless e modello Function-as-a-Service (FaaS): Microsoft Azure Functions, AWS Lambda, Google Cloud Functions.
  • Cenni su IDentity Management (IDM). IDM a base Windows (Active Directory, LDAP) e Linux (Kerberos, openLDAP) .
  • Sviluppo di applicazioni distribuite: continuous development

Testi/Bibliografia

dispense del docente pubblicate sul sito personale a partire dall'inizio delle lezioni (vedi link)

Metodi didattici

Lezioni Frontali e Esercitazioni in aula e in laboratorio informatico.

I fondamenti teorici sono esposti durante le lezioni frontali. Numerosi esercizi pratici sono svolti in aula ad anticipare gli esercizi che gli studenti dovranno successivamente svolgere nelle esercitazioni guidate in laboratorio, con la supervisione del docente.

Estensioni delle esercitazioni sono regolarmente suggerite, e le soluzioni pubblicate sul web, allo scopo di promuovere e favorire lo studio individuale e le attività di laboratorio autonome.

Alcune esercitazioni in aula e in laboratorio sono dedicate a simulare lo svolgimento della prova teorico/pratica che costituisce la prova d'esame.

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, in modalità e-learning [ https://elearning-sicurezza.unibo.it/ ].

Modalità di verifica e valutazione dell'apprendimento

L'esame consiste di una verifica teorico/pratica delle conoscenza degli aspetti teorici e pratici della disciplina, effettuata mediante una prova scritta;

La prova teorico/pratica consiste di una prova scritta che dura 2 ore e prevede risposte aperte ad una serie di domande ed alcuni semplici esercizi di programmazione e configurazione. La prova teorico/pratica scritta spazia tra tutti gli argomenti presentati durante il corso.

Se la prova teorico/pratica viene superata, il voto viene verbalizzato dopo 2 settimane. Lo studente ha perciò due settimane di tempo per rifiutare il voto.

NOTA BENE: in caso che l'emergenza covid-19 perdurasse, le prove d'esame si svolgeranno in modalita' online, con gli studenti a casa propria al lavoro sul proprio pc. In tale contingenza, la prova teorico/pratica durerà solo un'ora.

Strumenti a supporto della didattica

Lezioni: proiezione di diapositive a disposizione via Web e dimostrazioni pratiche dei concetti, algoritmi, tecniche, API e strumenti esposti nelle discussioni a lezione. Le dimostrazioni pratiche utilizzano script e files che sono preventivamente messi a disposizione nella pagina web del corso. In tal modo, gli studenti possono meglio seguire le dimostrazioni e replicarle durante la stessa lezione sui loro laptop, verificando personalmente lo sviluppo delle operazioni e individuando e proponendo immediatamente al docente eventuali dubbi, così da sollecitare al massimo l'interazione tra studenti e docente durante le lezioni.

Attività in laboratorio: il docente guida gli studenti nell'imparare progressivamente gli strumenti, le API e le strategie di risoluzione dei problemi concernenti tutti gli argomenti del corso. A ciascuno studente è fornito un proprio ambiente di lavoro virtualizzato, in cui lo studente opera con i privilegi di amministratore di sistema, in modo da effettuare realisticamente procedure operative di amministrazione dei sistemi.

Link ad altre eventuali informazioni

http://www.cs.unibo.it/~ghini/didattica/sistemivirtualizzati/index.html

Orario di ricevimento

Consulta il sito web di Vittorio Ghini