Distributed systems engineering and LabModule LAB
Academic Year 2025/2026 - Teacher: EMILIANO ALESSIO TRAMONTANAExpected 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
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
Subjects | Text References | |
---|---|---|
1 | Design pattern Scatter/Gather | [3] C. 7 |
2 | Design pattern Leader-Followers, Heartbeat, Idempotent Receiver | [2] C. 6, 7, 15 |
3 | Design pattern Two-Phase Commit, Request Batch, Request Pipeline | [2] C. 21, 31, 32 |
4 | Microservices, coordination, service discovery, Spring boot | [4] C. 1, 2, 3, 4, 5 |
5 | Design pattern for microservices: database per service, saga, event sourcing | [1] C. 4, 5, 6 |
6 | Design 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