- Cloud Computing
- Summary
Course Syllabus
Obiettivi
Conoscenza e capacità di comprensione
Al termine dell'insegnamento, lo studente sarà in grado di:
- Comprendere i principi fondamentali del Cloud Computing e delle architetture distribuite service-oriented
- Conoscere l'evoluzione dell'Internet e del Web e il paradigma della convergenza tra network, dispositivi e applicazioni
- Padroneggiare i concetti base dello stile architetturale REST (Web API) e le sue applicazioni nel Web of Services, Web of Data e Web of Things
- Comprendere i modelli e i principi dei sistemi service-oriented (SOA) e la loro evoluzione verso architetture XaaS (Everything-as-a-Service)
- Conoscere i principi del Cloud e Fog Computing e il loro impatto sulle organizzazioni e sulla progettazione di soluzioni business
- Comprendere i concetti fondamentali della virtualizzazione e delle tecnologie container-based
Conoscenza e capacità di comprensione applicate
Al termine dell'insegnamento, lo studente sarà in grado di:
- Progettare e sviluppare applicazioni distribuite basate su architetture a microservizi
- Implementare soluzioni pratiche utilizzando tecnologie di containerizzazione come Docker
- Gestire servizi e workload in esecuzione utilizzando piattaforme di orchestrazione come Kubernetes
- Applicare pattern architetturali per microservizi in contesti reali
- Sviluppare ecosistemi "smart" (smart city, smart building, smart mobility) utilizzando architetture service-oriented
- Operare sistemi applicativi basati su microservizi e tecnologie container
- Implementare principi di monitoraggio, deployment scalabile e sicurezza in ambienti distribuiti
Competenze trasversali
Autonomia di giudizio: Il corso sviluppa la capacità di valutare criticamente le diverse soluzioni architetturali per sistemi distribuiti, scegliendo gli approcci più appropriati in base ai requisiti specifici del contesto applicativo, attraverso esercitazioni pratiche e analisi di casi di studio.
Abilità comunicative: Gli studenti sviluppano competenze comunicative attraverso la partecipazione attiva alle sessioni di laboratorio, la presentazione di soluzioni tecniche e la collaborazione in progetti di gruppo, acquisendo la capacità di illustrare soluzioni architetturali complesse a diversi stakeholder.
Capacità di apprendere: Il corso fornisce agli studenti le basi metodologiche e gli strumenti concettuali per continuare autonomamente l'approfondimento delle tecnologie emergenti nel campo del Cloud Computing e dei sistemi distribuiti, attraverso l'accesso a materiali didattici interattivi e risorse aggiornate disponibili sulla piattaforma e-learning.
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
La didattica erogativa dell'insegnamento prevede 24 ore di lezioni in aula con al più un 20% di ore erogate a distanza per via telematica (registrazioni audio-video).
La didattica interattiva è prevista sotto forma di e 36 ore di laboratorio, cui si aggiungono dimostrazioni o spiegazioni aggiuntive presenti sul sito web (e-learning) come web forum e faqs. Lo scopo di queste attività è di fornire supporto da parte dei docenti e degli studenti partecipanti con dimostrazioni o suggerimenti operativi su come si risolve un problema, un esercizio e similari.
L'attività di studio individuale è supportata dai materiali didattici e le attività interattive disponibili sul sito di 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 al terminale 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 del primo appello 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)
Orario di ricevimento
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
Knowledge and Understanding
At the end of the course, students will be able to:
- Understand the fundamental principles of Cloud Computing and distributed service-oriented architectures
- Know the evolution of the Internet and the Web and the paradigm of convergence between networks, devices and applications
- Master the basic concepts of the REST (Web API) architectural style and its applications in the Web of Services, Web of Data and Web of Things
- Understand the models and principles of service-oriented systems (SOA) and their evolution towards XaaS (Everything-as-a-Service) architectures
- Know the principles of Cloud and Fog Computing and their impact on organizations and the design of business solutions
- Understand the fundamental concepts of virtualization and container-based technologies
Applying Knowledge and Understanding
At the end of the course, students will be able to:
- Design and develop distributed applications based on microservice architectures
- Implement practical solutions using containerization technologies such as Docker
- Manage services and workloads at runtime using orchestration platforms such as Kubernetes
- Apply architectural patterns for microservices in real-world contexts
- Develop "smart" ecosystems (smart city, smart building, smart mobility) using service-oriented architectures
- Operate application systems based on microservices and container technologies
- Implement principles of monitoring, scalable deployment and security in distributed environments
Transferable Skills
Making Judgements: The course develops the ability to critically evaluate different architectural solutions for distributed systems, choosing the most appropriate approaches based on the specific requirements of the application context, through practical exercises and case study analysis.
Communication Skills: Students develop communication competencies through active participation in laboratory sessions, presentation of technical solutions and collaboration in group projects, acquiring the ability to illustrate complex architectural solutions to different stakeholders.
Learning Skills: The course provides students with methodological foundations and conceptual tools to autonomously continue the study of emerging technologies in the field of Cloud Computing and distributed systems, through access to interactive teaching materials and updated resources available on the e-learning platform.
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
Lecture-based teaching. The teaching form for the course includes 24 hours of classroom lectures, with at most 20% of the hours delivered remotely (audio-video recordings).
Interactive teaching. Interactive teaching is provided in the form of additional 36 hours of classroom lab sessions, along with demonstrations or explanations available on the website (e-learning) such as web forums and FAQs. The purpose of these activities is to provide support from teachers and participating students with demonstrations or practical advice on how to solve a problem, an exercise, and similar tasks.
Individual study activities are supported by teaching materials and interactive activities available in the e-learning site.
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
Structure of the written test:
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 for the first exam (appello) will 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)
Office hours
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.