SISTEMI CLOUD E LABORATORIO
Modulo LABORATORIO

Anno accademico 2026/2027 - Docente: SALVATORE NICOTRA

Risultati di apprendimento attesi

Al termine del corso lo studente sarà in grado di comprendere i principi di containerizzazione e orchestrazione applicativa con Docker, progettare ambienti multi-container con Docker Compose e Swarm, applicare Infrastructure as Code con Terraform/OpenTofu e CloudFormation, configurare macchine e servizi in modo riproducibile con Ansible e automatizzare deployment tramite pipeline CI/CD e GitOps

Modalità di svolgimento dell'insegnamento

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.

Prerequisiti richiesti

Sono utili familiarità con programmazione di base, concetti fondamentali di rete e sistemi operativi, uso del terminale Linux e nozioni introduttive di cloud computing e Git

Frequenza lezioni

La frequenza delle lezioni rispecchia le modalità e le limitazioni previste dal Manifesto degli studi del corso di Laurea per la coorte corrente e dal Regolamento Didattico di Ateneo

Contenuti del corso

Il corso propone un percorso laboratoriale che va dalla containerizzazione delle applicazioni fino all’automazione di infrastrutture e pipeline di deployment, con particolare attenzione a Docker, orchestrazione, Infrastructure as Code, configurazione automatica e CI/CD

Testi di riferimento

  1. Documentazione online, puntualmente indicata nelle Note delle lezioni (pubblicate attraverso la piattaforma Teams d'ateneo o il portale Studium).
  2. Note delle lezioni, suddivise in gruppi dal titolo corrispondente agli argomenti elencati alla sezione "Programmazione".

Programmazione del corso

 ArgomentiRiferimenti testi
1Containerizzazione e architettura di Docker: concetti di container, immagini, Dockerfile, volumi, porte e Docker Hub.
2Composizione di applicazioni: Docker Compose, servizi, network, volumi, config e secrets, introduzione a Docker Swarm.
3Orchestrazione con Docker Swarm: cluster, manager e worker, scaling di servizi, visualizzazione dello stato e bilanciamento.
4Infrastructure as Code con Terraform/OpenTofu: provider, resources, variables, outputs, workflow init/plan/apply/destroy e gestione dello stato.
5 Infrastructure as Code su AWS: provisioning con OpenTofu e confronto con CloudFormation, security group, istanze EC2 e deploy/destroy
6 Configuration Management con Ansible: inventory, playbook, task, module e role, installazione di Docker su nodi remoti e bootstrap di cluster Swarm.
7CI/CD e GitOps: pipeline, automazione con Gitea Actions, AWS CodePipeline, GitHub Actions, gestione segreti e least privilege.
8 GitOps su AWS con GitHub Actions: OpenID Connect (OIDC), backend S3 per lo stato condiviso di Terraform e integrazione con AWS

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame finale consiste in un colloquio orale che verterà sugli argomenti del corso e sull'analisi di un progetto, svolto dallo studente individualmente. La realizzazione del progetto comporterà l'impiego di tecnologie e strumenti presentati nel corso.

La verifica dell’apprendimento potrà essere effettuata anche per via telematica, previa indicazione degli organo accademici preposti, qualora le condizioni lo dovessero richiedere.

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.

Per l'attribuzione del voto si seguiranno di norma i seguenti criteri:

  • Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di risolvere semplici quesiti pratici.
  • 18-20: lo studente dimostra una padronanza appena sufficiente dei concetti base, e/o riesce ad impostare le soluzioni dei quesiti pratici con molta difficoltà e vari errori.
  • 21-24: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici quesiti pratici.
  • 25-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve i quesiti pratici con pochi errori.
  • 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve i quesiti pratici in modo completo e senza errori di particolare rilievo. 

Gli studenti con disabilità e/o DSA dovranno contattare, con sufficiente anticipo rispetto alla data dell'esame il docente, il referente CInAP del DMI (prof.ssa Daniele) e il CInAP per comunicare che intendono sostenere l'esame fruendo delle opportune misure compensative.

Esempi di domande e/o esercizi frequenti

  • spiegare i principi di containerizzazione e il ruolo di Docker nella distribuzione delle applicazioni; 
  • descrivere il funzionamento di Docker Compose e Docker Swarm; 
  • progettare una semplice infrastruttura con Terraform/OpenTofu o CloudFormation; 
  • automatizzare la configurazione di un cluster con Ansible; 
  • illustrare il funzionamento di una pipeline CI/CD e di un workflow GitOps