PROGETTAZIONE DI SISTEMI DISTRIBUITI
Academic Year 2018/2019 - 2° YearCredit Value: 9
Scientific field: ING-INF/05 - Information processing systems
Taught classes: 49 hours
Exercise: 30 hours
Term / Semester: 1°
Learning Objectives
Currently, all enterprise software systems are distributed systems.
The course aims to deal with issues concerning large-scale distributed systems design in today's scenario. the aim of the course is to provide knowledge on modern technologies in distributed architecture, and especially to offer to student the ability to apply algorithms and project methodologies in the realization of complex, large-scale solutions.
More in detail, the course aims to
1) provide skills on
- component and service design techniques.
- model, architectures and components of software architectures as a Service (_aaS);
- algorithms and patterns for sharing resources, controlling competition and managing data.
- algorithms for managing heterogeneity and interoperability of components and services, Quality of Services, scalability, dependability and fault tolerance.
- techniques for resource virtualization and "containerization" (Docker)
2) allow students to apply large-scale design techniques and tools in today's actual scenarios.
3) accomplish the design, development and implementation of enterprise systems.
The typical problems of SOA, P2P, CDN, Cloud and Fog Computing will be treated.
Course Structure
Lessons ex-catedra and laboratory activities.
Detailed Course Content
Paradigms, models and software architectures of large scale distributed systems - multithreading vs virtualization, Patterns for distributed software architectures, components, containers and application servers, multitier systems and vertical and horizontal distribution, Enterprise Systems (ex. JEE), Service Oriented Architecture (WS and REST ) and _aaS, microservices and containerization (Docker), message-oriented systems (such as MQTT or Rabbit MQ), P2P Systems - Structured (DHT) and unstructured (flooding, es Gnutella) solutions, CDN, Cloud and Fog computing.
Communication model - C / S and Group communication. Multicast and Broadcast. CallBack and Event Notification messaging systems, web sockets.
Systems Requirements for integration and interoperability, Quality of Services (QoS), Scalability, Fault Tolerance and Data Consistency.
Distributed Algorithms - synchronous vs. asynchronous systems, clock models: clock and Lamport clocks and vector clocks, events ordering and concurrency, global snapshot; Dependability and Fault tolerance. Fault classification: crash and Byzantine faults, reliability and agreement algorithms under various types of fault topologies. fault detectors. cooperative algorithms. Election. Mutual exclusion, deadlock detection. Distributed transactions, serializability, recoverability and commitment. Consistency and replication. Replication distribution. Load Sharing. Some notions of Distributed File System and Big Data management