MICROSERVICES-ORIENTED PROGRAMMING
cod. 1011605

Academic year 2023/24
3° year of course - First semester
Professor
Tommaso NANU
Academic discipline
Informatica (INF/01)
Field
A scelta dello studente
Type of training activity
Student's choice
48 hours
of face-to-face activities
6 credits
hub:
course unit
in ITALIAN

Learning objectives

The purpose of the course is to provide students with the tools and skills to design and develop cloud-native applications based on complex microservices architectures.

Prerequisites

None

Course unit content

Part I – Evolution of Enterprise IT Systems
Part II – Microservices Architecture
Part III – Patterns
Part IV – Development in .NET
Part V – Data Access (Entity Framework)
Part VI – Web APIs (JSON, REST, ..)
Part VII – Containers and K8S
Part VIII – Communication between Microservices (Kafka, gRPC..)
Part IX – Security, Authentication and Authorization

Full programme

Part I – Evolution of Enterprise IT Systems
Overview of the evolution of IT systems specifically on the topics of monolithic enterprise application architectural models, web 2.0 and cloud-native.

Part II – Microservices Architecture
Focus on microservices: characteristics, scaling, and data sovereignty. Advantages and disadvantages in adopting this type of architecture.

Part III – Patterns
Architectural patterns for designing microservices-based applications. Challenges and points of attention. Data replication vs. synchronous communication. In-depth exploration of patterns such as Domain-Driven Design (DDD) and Circuit Breaker. Distributed transactions using the SAGA pattern.

Part IV – Development in .NET
The .NET development framework and the C# language. Object-oriented programming, generic types, dependency injection. ASP.NET Core and web services.

Part V – Data Access (Entity Framework)
.NET and interaction with relational databases. ADO.NET and basic operations and transactions. Introduction to ORM (Object-Relational Mapping) and in-depth exploration of Entity Framework.

Part VI – Web APIs (JSON, REST, ..)
Introduction to web APIs. SOAP and REST web services. Object serialization using JSON. ASP.NET Core and web APIs, HTTP methods (GET, POST, PUT, DELETE).

Part VII – Containers and K8S
Microservices and container architectures. Introduction to Docker. ASP.NET applications in a container context. Kubernetes and container orchestration topics. Deployment, PODs and YAML files for configuration.

Part VIII – Communication between Microservices (Kafka, gRPC..)
Microservices and their communication for exchange of information. Synchronous communication using gRPC and asynchronous communication through the use of the Kafka message bus.

Part IX – Security, Authentication and Authorization
Web API and security. In-depth exploration of making methods secure through authorization. In-depth discussions on client authentication and authorization.

Bibliography

Teaching material:
course slides

Teaching methods

Standard classes with laboratory

Assessment methods and criteria

Assessment of learning will be conducted through a final project, which will consist in the development of an application that utilizes all the technologies/techniques learned during the course. The project will be discussed during the exam with the instructor

Other information

- - -

2030 agenda goals for sustainable development

- - -

Contacts

Toll-free number

800 904 084

Student registry office

E. segreteria.scienze@unipr.it
T. 0521 90 5116

Quality assurance office

Education manager
dr. Claudia Buga
T. 0521 90 2842
Office e-mail: smfi.didattica@unipr.it
Manager e-mail: claudia.buga@unipr.it

President of the degree course

Prof. Alessandro Dal Palù
E. alessandro.dalpalu@unipr.it

Faculty advisor

Prof. Vincenzo Arceri
E. vincenzo.arceri@unipr.it

Career guidance delegate

Prof. Roberto Alfieri
E. roberto.alfieri@unipr.it

Tutor Proffesors

Prof. Enea Zaffanella
E. enea.zaffanella@unipr.it

Erasmus Delegates

Prof. Roberto Bagnara
E. roberto.bagnara@unipr.it
Student tutor dr. Anna Macaluso
E. anna.macaluso@studenti.unipr.it

Quality assurance manager

Prof. Roberto Alfieri
E. roberto.alfieri@unipr.it

Internships

Prof. Roberto Alfieri
E. roberto.alfieri@unipr.it

Tutor students

Tutor a.a. 2021-2022 dr. Francesco Manfredi
E. francescosaverio.manfredi@studenti.unipr.it

Student representatives: 
Greta Dolcetti 
Massimo Frati
Davide Tarpini