- Cloud Computing
- Summary
Course Syllabus
Obiettivi
Lo
scopo del corso è fornire allo studente gli elementi fondamentali per comprendere
e progettare applicazioni distribuite e a servizi. Al termine del corso
lo studente conoscerà i principali modelli di sistemi distribuiti basati su tecnologia Cloud e le caratteristiche fondamentali delle architetture e degli strumenti per la
loro realizzazione.
Con questo bagaglio di conoscenze sarà in grado di progettare, sviluppare ed eseguire sistemi di applicazioni basati su tecnologia a microservizi e container.
Contenuti sintetici
Le attuali applicazioni distribuite utilizzano il Web
come piattaforma di riferimento e il concetto di servizio come metafora per la
realizzazione di componenti autonomi che realizzano le funzionalità
necessarie. L'insegnamento studia i principi e i modelli delle tecnologie software
distribuite e il loro impatto sulla progettazione delle applicazioni di
"Cloud Computing" e "Internet of Things" (IoT).
Durante l'insegnamento verrà analizzata in
particolare l'evoluzione dei paradigmi di progettazione delle
architetture software distribuite e dei servizi che le popolano. Inoltre, una consistente parte dell'insegnamento è
dedicata all’approfondimento delle tecnologie a container per virtualizzare i microservizi e gestirli in produzione, con esercitazioni pratiche.
Programma esteso
- Introduzione al corso. Evoluzione di Internet e del Web: convergenza di reti, device e applicazioni. Il modello architetturale REST (Web API): Web of Services, Web of Data, e Web of Things.
- Sistemi service-oriented: Definizione di servizio, modelli
organizzativi a servizi, architettura dei sistemi orientati ai servizi
(SOA). Processi di business e servizi. Modelli e principi di cloud e fog computing
e loro impatto sul piano organizzativo e di architettura delle soluzioni:
i modelli di "system of records" e "system of
engagement".
- Cloud Computing: concetti fondamentali, virtualizzazione. Architetture XaaS (anything-as-a-service). Architetture a servizi per ecosistemi “smart”: smart city, smart building, smart mobility, ecc. Principi di interoperabilità di IoT e altri tipi di sistemi.
- Architetture a microservizi: concetti fondamentali, pattern architetturali. Modelli di sviluppo DevOps (cenni). Architetture a container: concetti fondamentali, pattern architetturali. Principi di monitoring,
deployment at scale e sicurezza (cenni).
- Laboratorio: Progettazione e realizzazione di applicazioni a microservizi in container con tecnologia Docker. Gestione dei servizi e del carico a run-time con Kubernates.
Prerequisiti
Conoscenze approfondite di funzionamento delle reti e
dei principi di progettazione e realizzazione di applicazioni
distribuite.
Modalità didattica
Il corso prevede lezioni ed esercitazioni (laboratorio) in aula con attività di studio individuale supportate da materiali didattici in e-learning.
Lingua di erogazione dell’insegnamento: inglese
Materiale didattico
Non
c’è un unico testo di riferimento. Verranno indicati articoli e risorse sul
sito di elearning.
Periodo di erogazione dell'insegnamento
Primo Semestre
Modalità di verifica del profitto e valutazione
L'esame consta di una prova scritta con domande aperte e chiuse (su argomenti di lezione e di laboratorio) del valore di punti 28.
La prova consiste in:
a) domande sulle nozioni presentate
b) domande di ragionamento e deduzione
c) risoluzione di esercizi che richiedono lo sviluppo di una soluzione ad un problema assegnato
Struttura della prova scritta:
- parte generale: 10 domande chiuse + 2 aperte [10*2+2*4=28 punti)
Chi ha frequentato i laboratori può ottenere 5 punti supplementari così assegnati:
1 punto per la frequenza (>=75%)
1 punto per la partecipazione attiva (svolgimento delle esercitazioni in aula)
3 punti per lo svolgimento dell'esercizio finale (concordato con il docente)
L'esame può essere integrato da una prova orale su richiesta del docente e/o dello studente.
La prova orale può determinare un incremento o un decremento del voto dello scritto.
Prove in itinere
La prova scritta può essere sostituita dallo svolgimento di due prove in itinere.
Ciascuna
prova è composta da domande aperte e chiuse, + semplici esercizi sugli
argomenti del laboratorio per complessivi 33 punti.
L'accesso alla seconda prova si ottiene con un punteggio maggiore o uguale a 18 punti nella prima prova.
Il voto della prova scritta è dato dalla media delle due prove. Non sono previste prove di recupero.
VOTO FINALE = VOTO PROVA SCRITTA + PUNTI LABORATORIO (se frequentato) + (eventuale integrazione orale)
Nel periodo di emergenza Covid-19 la prova scritta sarà sostituita da una prova da remoto supervisionata: una sessione con domande aperte/chiuse sul sito di e-learning con monitoraggio attivo dei docenti, e una sessione orale in teleconferenza. Le prove in itinere potrebbero non essere svolte.
Orario di ricevimento
prof. De Paoli: Mercoledì dalle 10:00 alle 12:00 o su appuntamento scrivendo a flavio.depaoli@unimib.it
prof. Ciavotta: Martedì dalle 12:30 alle 14:30 o su appuntamento scrivendo a michele.ciavotta@unimib.it
Domande e discussioni sugli argomenti dell'insegnamento possono essere fatte utilizzando i forum presenti in elearning.
Aims
The goal of the course is to provide students with fundamental elements to understand and design distributed service-oriented applications. After the course, students will master the most important models for distributed systems based on Cloud technology, and the basic characteristics of languages and tools for their development.
They will be able to design, develop and operate application systems based on
microservices and container-based technology.
Contents
Current distributed applications exploits the Web as a reference platform, and the concept of service as a metaphor for building independent components that implement the requested functionalities. This course studies the emerging distributed software technology principles and models, and their impact on "Cloud Computing" and "Internet of Things" (IoT) applications.
In particular, the course will analyse how the design paradigms of software
architectures and the services that populate them are evolving. The
course includes a part devoted to the
close examination of technologies to virtualize microservices into containers and their operational management with practical exercises.
Detailed program
- Introduction. Evolution of the Internet and the Web: network, devices and applications convergence. The REST (Web API) architectural style: Web of Services, Web of Data, and Web of Things.
- Service-oriented systems:
Definition of service and service model; service oriented architecture
(SOA); Service Science: business processed and design alternatives;
Principles and models of Cloud and Fog computing and their impact on
organizations and
design of business solutions: system-of-record and
system-of-engagement models.
- Cloud Computing: basic concepts and virtualization. XaaS (everythig-as-a-Service) architectures. Service-oriented architectures for "smart" ecosystems: smart city, smart building, smart mobility, etc. Interoperability principles for IoT and other types of systems.
- Microservice-based architecture: basic concepts and architectural patterns. DevOps development modes (overview). Container-based architecture: basic concepts and architectural patterns. Principles of monitoring, deployment at
scale e security (overview).
- Laboratory: Design and implementation of microservice applications in containers with Docker technology. Management of services and workload at run-time with Kubernates.
Prerequisites
Thorough comprehension of networking
and distributed system principles to design and develop distributed
applications.
Teaching form
The course includes theoretical and exercise (laboratory) lectures integrated with individual study activities with e-learning support.
Teaching language: English
Textbook and teaching resource
There is not a single reference text. Articles and resources will be indicated on the e-learning site.
Semester
First semester
Assessment method
The examination consists of a written test with open-answer and multiple-choice questions (on lecture and laboratory topics) with a value of 28 points.
The test deals with:
(a) questions on the concepts presented
(b) requests for reasoning and deduction
(c) resolution of exercises that require the development of a solution to an assigned problem
General part: 10 closed + 2 open questions (10*2 + 2*4 = 28 points)
Students that attended the laboratories can obtain 5 additional points thus awarded:
1 point for frequency (>=75%)
1 point for active participation (carrying out of classroom exercises)
3 points for the performance of the final exercise (agreed with the teacher)
The exam may be supplemented by an oral exam at the request of the teacher and/or student.
The oral test may result in an increase or decrease in the mark in the written test.
In-itinere examination
The written test may be replaced by two in-itinere tests.
Each test shall consist of open-answer and multiple-choice questions, with a value of points 33.
Access to the second test will be obtained by scoring 15 or more points in the first test.
The marks in the written test are given by the average of the two tests. No recovery tests are foreseen.
FINAL MARK = WRITTEN MARKS + LABORATORY MARKS (if attended) + (possible oral integration)
In the Covid-19 emergency period the written test will be replaced by a supervised remote test: a session with open/closed questions on the e-learning site with active monitoring by the teachers, and an oral session in teleconference. The in-itinere tests may not be held.
Office hours
prof. De Paoli: Wednesday from 10:00 to 12:00 or by appointment by writing to flavio.depaoli@unimib.it
prof. Ciavotta: Tuesday from 12:30 to 14:30 or by appointment by writing to michele.ciavotta@unimib.it
Questions and discussions on teaching topics can be posed using the forums in e-learning.
Key information
Staff
-
Michele Ciavotta
-
Flavio Maria De Paoli
-
Alessandro Tundo