Scheda programma d'esame
DISTRIBUTED ENABLING PLATFORMS
PATRIZIO DAZZI
Anno accademico2023/24
CdSINFORMATICA E NETWORKING
Codice534AA
CFU6
PeriodoSecondo semestre
LinguaInglese

ModuliSettore/iTipoOreDocente/i
PIATTAFORME ABILITANTI DISTRIBUITEINF/01LEZIONI48
PATRIZIO DAZZI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Al termine del corso, gli studenti avranno acquisito le seguenti conoscenze relative ai Distributed Enabling Platforms:

Conoscenze di base:

  • Fondamenti dei sistemi distribuiti, compresi algoritmi distribuiti, protocolli di consenso e sincronizzazione distribuita.
  • Principi di architettura e progettazione di sistemi distribuiti.
  • Concetti di scalabilità, affidabilità e tolleranza ai guasti in sistemi distribuiti.

Conoscenze caratterizzanti:

  • Piattaforme di storage e processing distribuito (es. Apache Hadoop, Apache Cassandra e Apache Kafka).
  • Framework di elaborazione dati in streaming (es. Apache Flink e Apache Beam).
  • Modelli di partizionamento, replicazione e coerenza dei dati nei sistemi di storage distribuito.
  • Tecniche per l'elaborazione distribuita di grandi volumi di dati in tempo reale e batch.

Conoscenze affini/trasversali:

  • Principi di fault tolerance e strategie per la gestione degli errori in sistemi distribuiti.
  • Concetti di scalabilità orizzontale e verticalità in ambienti distribuiti.
  • Considerazioni sulle prestazioni nella progettazione e implementazione di applicazioni distribuite.
  • Metodi di monitoraggio, gestione delle prestazioni e ottimizzazione delle risorse in sistemi distribuiti.
Knowledge

At the end of the course, students will have acquired the following knowledge related to Distributed Enabling Platforms:

Foundational knowledge:

  • Fundamentals of distributed systems, including distributed algorithms, consensus protocols, and distributed synchronization.
  • Principles of architecture and design of distributed systems.
  • Concepts of scalability, reliability, and fault tolerance in distributed systems.

Characterizing knowledge:

  • Distributed storage and processing platforms (e.g., Apache Hadoop, Apache Cassandra, and Apache Kafka).
  • Streaming data processing frameworks (e.g., Apache Flink and Apache Beam).
  • Data partitioning, replication, and consistency models in distributed storage systems.
  • Techniques for distributed processing of large volumes of data in real-time and batch.

Related/transversal knowledge:

  • Principles of fault tolerance and strategies for error management in distributed systems.
  • Concepts of horizontal and vertical scalability in distributed environments.
  • Performance considerations in the design and implementation of distributed applications.
  • Methods for monitoring, performance management, and resource optimization in distributed systems.
Modalità di verifica delle conoscenze

Per accertare l'acquisizione delle conoscenze obiettivo indicate, saranno adottate le seguenti modalità di verifica:

  • Valutazione delle prove (facoltative) in itinere: Saranno svolte prove durante il corso per valutare la comprensione degli argomenti trattati. Queste prove potrebbero includere test a risposta multipla o domande aperte che mettono alla prova la conoscenza teorica e l'applicazione pratica delle Distributed Enabling Platforms.
  • Valutazione dei progetti: Gli studenti svilupperanno un progetto che richiede l'applicazione delle conoscenze acquisite durante il corso. I progetti verranno valutati sulla base della corretta implementazione, la scelta appropriata delle tecnologie e l'efficacia nel raggiungimento degli obiettivi prefissati.
Assessment criteria of knowledge

To assess the acquisition of the stated learning outcomes, the following assessment methods will be adopted:

  • In-course assessment (optional): Tests will be conducted during the course to evaluate the understanding of the topics covered. These assessments may include multiple-choice questions or open-ended questions that assess both theoretical knowledge and practical application of Distributed Enabling Platforms.
  • Project evaluation: Students will develop a project that requires the application of the knowledge acquired during the course. Projects will be evaluated based on correct implementation, appropriate selection of technologies, and effectiveness in achieving the set objectives.
Capacità

Al termine del corso, gli studenti svilupperanno le seguenti capacità/abilità in relazione alle Distributed Enabling Platforms:

  • Capacità di progettazione: Gli studenti saranno in grado di progettare soluzioni distribuite utilizzando strumenti appropriati per soddisfare i requisiti specifici. Saranno in grado di identificare le componenti necessarie, definire l'architettura del sistema distribuito e prendere decisioni informate sulla scelta delle tecnologie e dei modelli di progettazione.
  • Capacità di implementazione: Gli studenti saranno in grado di implementare sistemi distribuiti utilizzando gli strumenti trattate nel corso. Saranno in grado di utilizzare gli strumenti e le librerie corrispondenti per realizzare le funzionalità richieste, gestire la distribuzione delle risorse e garantire la corretta comunicazione tra i componenti del sistema.
  • Capacità di gestione e monitoraggio: Gli studenti acquisiranno la capacità di gestire e monitorare sistemi distribuiti. Saranno in grado di configurare e ottimizzare le risorse di calcolo, monitorare le prestazioni, rilevare e gestire eventuali problemi di errore o degrado delle prestazioni.
  • Capacità di valutazione e ottimizzazione delle prestazioni: Gli studenti saranno in grado di valutare le prestazioni dei sistemi distribuiti. Saranno in grado di analizzare i risultati delle misurazioni, identificare eventuali collo di bottiglia e proporre soluzioni per ottimizzare le prestazioni del sistema.
Skills

At the end of the course, students will develop the following abilities in relation to Distributed Enabling Platforms:

  • Design skills: Students will be able to design distributed solutions using appropriate tools to meet specific requirements. They will be able to identify the necessary components, define the architecture of the distributed system, and make informed decisions regarding the choice of technologies and design patterns.
  • Implementation skills: Students will be able to implement distributed systems using the tools covered in the course. They will be able to utilize the corresponding tools and libraries to implement the required functionalities, manage resource distribution, and ensure proper communication between system components.
  • Management and monitoring skills: Students will acquire the ability to manage and monitor distributed systems. They will be able to configure and optimize computing resources, monitor performance, and detect and handle any error issues or performance degradation.
  • Performance evaluation and optimization skills: Students will be able to evaluate the performance of distributed systems. They will be able to analyze measurement results, identify potential bottlenecks, and propose solutions to optimize system performance.
Modalità di verifica delle capacità

Lo studente dovrà preparare e presentare una relazione scritta che riporti i risultati dell'attività di progetto, che inquadri quanto realizzato nelle tematiche del corso, sottolineando le problematiche affrontata, i vantaggi e i limiti della soluzione proposta. 

Assessment criteria of skills

Students will prepare and present a written report describing the results achieved with the project, framing it into the course context, while highlighting the challenges, the pros and cons of the proposed solution.

Comportamenti

Al termine del corso lo studente acquisirà la sensibilità necessaria ad identificare le piattaforme abilitanti distribuite più opportune per diverse classi di applicazioni. Lo studente sarà inoltre in grado di approcciare il problema dal punto di vista più opportuno e che gli garantisca di ottimizzare le prestazioni del sistema utilizzato.

Behaviors

By the end of the course, students will acquire the ability to identify the proper distributed enabling platform given a problem to deal with. Students will be also able to approach the problem from a proper perspective in order to be able to optimize the performances of the solution considered.

Modalità di verifica dei comportamenti

La congruità della metodologia di indagine per la selezione degli strumenti più opportuni, e per l'inquadramento e definizione del problema saranno determinati dalla valutazione del progetto e della relazione ad esso allegata.

Assessment criteria of behaviors

The aptness of the methodology, approach and instruments adopted by students will be assessed by evaluating the project they are called to deliver and the associated report.

Prerequisiti (conoscenze iniziali)

Conoscenze e abilità/capacità utili per seguire il corso in modo proficuo.

Conoscenze:

  • Conoscenza di base dei concetti fondamentali dei sistemi di elaborazione, compresi i concetti di architettura dei computer, reti di computer, sistemi operativi e basi di dati.Familiarità con almeno un linguaggio di programmazione, possibilmente Java o Scala. Conoscenza dei concetti di programmazione, strutture dati e algoritmi.
  • Comprendere i concetti di base dei sistemi concorrenti, come la comunicazione e la sincronizzazione tra processi, la gestione delle risorse condivise.
  • Comprensione dei principi di base delle reti di computer, inclusi i protocolli di comunicazione, l'architettura client-server e la gestione dei pacchetti.


Abilità/Capacità:

  • Capacità di problem-solving: Essere in grado di analizzare i problemi, identificare gli obiettivi e sviluppare soluzioni efficaci. Capacità di pensiero critico e di applicazione dei concetti teorici a situazioni pratiche.
  • Pensiero analitico: Essere in grado di analizzare e valutare criticamente le informazioni, identificare i collegamenti tra i concetti e cogliere le implicazioni pratiche delle conoscenze acquisite.
  • Curiosità e interesse per la tecnologia: Mostrare un interesse attivo per le Distributed Enabling Platforms, mantenendo la curiosità e l'apertura mentale verso le nuove tendenze e gli sviluppi nel campo dei sistemi distribuiti.
Prerequisites

Knowledge and skills/abilities useful for successfully following the course:

Knowledge:

  • Basic understanding of fundamental concepts of computing systems, including computer architecture, computer networks, operating systems, and databases.
  • Familiarity with at least one programming language, preferably Java or Scala. Knowledge of programming concepts, data structures, and algorithms.
  • Understanding of basic concepts of concurrent systems, such as inter-process communication, process synchronization, and management of shared resources.
  • Understanding of basic principles of computer networks, including communication protocols, client-server architecture, and packet management.

Skills/Abilities:

  • Problem-solving skills: Being able to analyze problems, identify goals, and develop effective solutions. Ability for critical thinking and applying theoretical concepts to practical situations.
  • Analytical thinking: Being able to analyze and critically evaluate information, identify connections between concepts, and grasp the practical implications of acquired knowledge.
  • Curiosity and interest in technology: Showing active interest in Distributed Enabling Platforms, maintaining curiosity and open-mindedness towards new trends and developments in the field of distributed systems.
Corequisiti

N/A

Co-requisites

N/A

Prerequisiti per studi successivi

N/A

Prerequisites for further study

N/A

Indicazioni metodologiche

Il corso si articola nel seguente modo:

  • lezioni frontali, con ausilio di slides;
  • i materiali didattici, comunicazioni docente-studenti, pubblicazione di test per esercitazioni a casa, formazione di gruppi di lavoro, sono indicati sulla pagina classroom del corso;
  • è prevista la presenza di prove intermedie facoltative
Teaching methods

The course is structured as follows:

  • lectures supported by slides;
  • documents of various types are published on the classroom page of the course;
  • (optional) evaluations during the course;
Programma (contenuti dell'insegnamento)

Durante l'insegnamento del corso su Distributed Enabling Platforms, gli argomenti e le attività trattate saranno:

  1. Introduzione ai sistemi distribuiti

    • Concetti fondamentali dei sistemi distribuiti
    • Architetture e modelli di distribuzione
    • Scalabilità e affidabilità nei sistemi distribuiti
  2. Piattaforme per l'abilitazione distribuita: Panoramica

    • Concetti e ruoli delle piattaforme per l'abilitazione distribuita
    • Esempi di popolari piattaforme per l'elaborazione di stream di dati in tempo reale (es. Apache Kafka) e loro elementi caratterizzanti.
  3. Piattaforme per l'archiviazione distribuita dei dati

    • Piattaforme per l'archiviazione distribuita dei dati (es. Apache Hadoop, Apache Cassandra) e le loro caratteristiche distintive.
    • Partizionamento dei dati, replica e modelli di coerenza nei sistemi di archiviazione distribuita.
  4. Piattaforme per l'elaborazione distribuita dei dati

    • Piattaforme per l'elaborazione distribuita dei dati (es. Apache Flink, Apache Beam) e le loro capacità uniche.
    • Principi di progettazione e casi d'uso di queste piattaforme per l'analisi in tempo reale e l'elaborazione di grandi volumi di dati.
  5. Tolleranza ai guasti e resilienza

    • Tecniche per la gestione dei guasti nei sistemi distribuiti
    • Strategie per garantire la tolleranza ai guasti, l'alta disponibilità e il ripristino dei guasti nelle piattaforme per l'abilitazione distribuita.
  6. Ottimizzazione delle prestazioni

    • Strategie per ottimizzare le prestazioni delle piattaforme per l'abilitazione distribuita
    • Tecniche per il monitoraggio, il profiling e l'ottimizzazione dei sistemi distribuiti per ottenere prestazioni ottimali.
  7. Applicazioni pratiche e studi di caso

    • Applicazione delle piattaforme per l'abilitazione distribuita in scenari reali
    • Analisi di studi di caso e esempi pratici che illustrano l'utilizzo delle piattaforme per l'abilitazione distribuita.
  8. Progetti pratici e laboratori

    • Esercizi pratici e progetti per applicare le conoscenze delle piattaforme per l'abilitazione distribuita in scenari reali.
    • Esperienza pratica nella distribuzione, gestione e ottimizzazione di applicazioni distribuite utilizzando le piattaforme selezionate.
Syllabus

During the teaching of the course on Distributed Enabling Platforms, the topics and activities covered will include:

Introduction to distributed systems

  • Fundamental concepts of distributed systems
  • Architectures and distribution models
  • Scalability and reliability in distributed systems

Distributed Enabling Platforms: Overview

  • Concepts of Distributed Enabling Platforms
  • Examples of popular platforms for real-time data stream processing (e.g., Apache Kafka) and their distinguishing elements.

Distributed data storage platforms

  • Platforms for distributed data storage (e.g., Apache Hadoop, Apache Cassandra) and their distinctive features.
  • Data partitioning, replication, and consistency models in distributed storage systems.

Distributed data processing platforms

  • Platforms for distributed data processing (e.g., Apache Flink, Apache Beam) and their unique capabilities.
  • Design principles and use cases of these platforms for real-time analytics and processing of large volumes of data.

Fault tolerance and resilience

  • Techniques for fault management in distributed systems
  • Strategies to ensure fault tolerance, high availability, and fault recovery in Distributed Enabling Platforms.

Performance optimization

  • Strategies to optimize the performance of Distributed Enabling Platforms
  • Techniques for monitoring, profiling, and optimizing distributed systems to achieve optimal performance.

Practical applications and case studies

  • Application of Distributed Enabling Platforms in real-world scenarios
  • Analysis of case studies and practical examples demonstrating the use of Distributed Enabling Platforms.

Practical projects and labs

  • Hands-on exercises and projects to apply the knowledge of Distributed Enabling Platforms in real-world scenarios.
  • Practical experience in deploying, managing, and optimizing distributed applications using the selected platforms.
Bibliografia e materiale didattico
  • Marteen van Steen, Andrew S. Tanenbaum, Distributed Systems 3rd edition
  • Jonas Bonér, Reactive Microsystems
  • Alex Holmes, Hadoop in Practice
  • Ben Stopford, Designing Event-Driven Systems
  • https://spark.apache.org/docs/latest/index.html
Bibliography
  • Marteen van Steen, Andrew S. Tanenbaum, Distributed Systems 3rd edition
  • Jonas Bonér, Reactive Microsystems
  • Alex Holmes, Hadoop in Practice
  • Ben Stopford, Designing Event-Driven Systems
  • https://spark.apache.org/docs/latest/index.html
Indicazioni per non frequentanti

Le modalità d'esame per i non frequentanti sono le medesime. Si richiede di contattare il docente con un ragionevole anticipo, che consenta di affrontare la realizzazione del progetto in modo adeguato.

Non-attending students info

There is no specific rule or approach that non-attending students have to undertake. Non-attending students are suggested to contact the lecturer in advance;

Modalità d'esame

L'esame è composto da un progetto, concordato con il docente, ed una successiva prova orale, divisa in due parti: una che si focalizzerà sul progetto realizzato, l'altra su tematiche generali affrontate a lezione;

Assessment methods

Assessment will be achieved by means of a project and a subsequent oral examination. This last is made of two parts: the first part is tailored to the project developed, the second is focused on general concepts presented during the course.

Stage e tirocini

N/A

Work placement

N/A

Altri riferimenti web
  • https://hadoop.apache.org/
  • https://spark.apache.org/
  • https://kafka.apache.org/
  • https://flink.apache.org/
  • https://cassandra.apache.org/

 

Additional web pages
  • https://hadoop.apache.org/
  • https://spark.apache.org/
  • https://kafka.apache.org/
  • https://flink.apache.org/
  • https://cassandra.apache.org/
Ultimo aggiornamento 19/07/2023 15:01