Distributed systems engineering and Lab
Module LAB

Academic Year 2025/2026 - Teacher: EMILIANO ALESSIO TRAMONTANA

Expected Learning Outcomes

1. Knowledge and understanding: Students will master advanced programming mechanisms with REST-based web services, microservices, the Spring Boot framework, and various distributed programming constructs. They will deepen their understanding of the main design patterns for microservices: 2PL, Saga.

2. Applying knowledge and understanding: Students will be able to design, integrate, and implement distributed software systems using the patterns studied. They will be able to use tools and technologies (microservice frameworks, messaging systems such as RabbitMQ) to implement scalable and reliable solutions, effectively managing session state, data exchange (DTO), and data storage (SLOB).

3. Making judgements: The student will be able to independently evaluate the most appropriate architectural solution for a given application context, analyzing various influencing factors and choosing an appropriate solution.

4. Communication skills: the student will be able to describe distributed software systems using a proper technical language.

5. Learning skills: the student will be able to solve typical problems, by studying, analysing and using novel distributed technologies. 

Course Structure

Frontal lessons for concepts, techniques and code. 

Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.

Required Prerequisites

Ability to understand software requirements, and to design, implement, and test object-oriented systems in C++ or Java.

Attendance of Lessons

Attending lessons is strongly encouraged.

Detailed Course Content

The laboratory module of the Distributed Systems Engineering course effectively and intimately complements the content of the main module. Various examples of small applications based on the design patterns discussed will be presented, and some of the content will be expanded to lead to the development of complete, robust, secure, and modern distributed applications. Design and implementation solutions for microservices architecture will be highlighted, along with some key design patterns such as Leader-Followers, Heartbeat, Idempotent Receiver, and Request Pipeline. Spring Boot will be used for microservices and RabbitMQ for communication between them.

Textbook Information

1. C. Richardson. Microservices patterns: with examples in Java. Manning, 2019

2. U. Joshi. Patterns of Distributed Systems. Addison-Wesley, 2024

3. B. Burns. Designing Distributed Systems. O’Reilly, 2018

4. S. Newman. Building Microservices: designing fine-grained systems. O’Reilly, 2021

Course Planning

 SubjectsText References
1Design pattern Scatter/Gather[3] C. 7
2Design pattern Leader-Followers, Heartbeat, Idempotent Receiver[2] C. 6, 7, 15
3Design pattern Two-Phase Commit, Request Batch, Request Pipeline[2] C. 21, 31, 32
4Microservices, coordination, service discovery, Spring boot[4] C. 1, 2, 3, 4, 5
5Design pattern for microservices: database per service, saga, event sourcing[1] C. 4, 5, 6
6Design pattern for microservizi: API gateway, service registry, health check API[1] C. 8, 11

Learning Assessment

Learning Assessment Procedures

The exam consists of a project assigned to individual students or groups of up to three people. Once the project has been completed and the documentation submitted, an oral exam may be held at the end of the exam. The project involves the design and implementation of a small distributed and/or concurrent software system that uses some of the course technologies.

The exam is designed to thoroughly assess the student's preparation, analytical and reasoning skills on the topics covered in the course, as well as the appropriateness of the technical language used.

The exam will be graded excellently (28-30 cum laude) if the student demonstrates in-depth knowledge and precision in the presentation of the course concepts, assessed both through analysis of the completed project and an oral exam. An intermediate grade (24-27) will be given if the exam demonstrates a partial understanding of some course topics. A passing grade (18-23) will be given if, despite partial knowledge of the course topics, they are presented superficially or inaccurately.

Students with disabilities and/or learning disabilities (LD) must contact the instructor, the DMI CInAP representative (Prof. Daniele), and CInAP well in advance of the exam date to communicate their intention to take the exam with appropriate compensatory measures.

The learning assessment may also be conducted online, if circumstances require it.

Examples of frequently asked questions and / or exercises

Describe design pattern Saga

Describe how a microservice is implemented using Spring boot

Describe the main design strategies that solve issues related to using microservices

VERSIONE IN ITALIANO