Middleware for Distributed Applications

Catalog of Télécom SudParis courses

Code

IGFE CSC 7321

Level

MSc

Graduate

PostGraduate

Semester

Fall

Domain

Informatique

Program

Master of Science

Language

Anglais/English

ECTS Credits

5

Class hours

42

Workload

84

Program Manager(s)

Department

  • Informatique

Educational team

Organisation

Cours/TD/TP/projet/examen :

Learning objectives

After this teaching unit, you should be able to:
- Identify and use the main interaction patterns between distributed components (synchronous call, callbacks, orchestration, asynchronous calls, publish/subscribe) through the study and practise of several middleware (RestFul Services, Web Services, AMQP, JavaEE).
- Design and implement a distributed application made of several functional modules with computing components, persistent components, client components. The application will be realised in the context of a microproject lasting during all the teaching unit.
- Identify design patterns and architectural patterns used by middleware for distributed applications.
- Define the quality of a distributed architecture and discuss architecture choices to respond to the quality requirements a of software architecture (e.g. interoperability, security, scalability).

CDIO Skills

  • 1.3 - Advanced engineering fundamental knowledge, methods and tools
  • 4.3.2 - Defining Function, Concept and Architecture
  • 4.4.1 - The Design Process
  • 4.4.3 - Utilization of Knowledge in Design
  • 4.8.5 - Designing products and services around new technologies

Prerequisites

Unix user commands, application modeling with UML, object oriented programming, Java language, database systems, fundamentals of distributed applications

Keywords

middleware, microservices, hexagonal architecture, ports and adapters, distributed applications

Content

- Fundamentals of middleware and software architectures
- Monolithic and microservice-based software architectures
- REST Architecture Style, REST with JAX-RS, XML serialisation and Basics of HTTP
- Synchronous and asynchronous interaction patterns, Server-Sent Events
- Hexagonal Architecture, Design Pattern Ports & Adapters
- Domain Driven Design of Microservices Applications
- Fundamentals of application servers, Persistence and Object Relational Mapping
- Distributed Event-Based Systems, AMQP with RabbitMQ
- Feature Flagging; Observability; Benchmarking
- Micro-project
- Conferences by external experts

Evaluation

Class attendance and participation will be taken into account in the evaluation.
The evaluation for this course is based on continuous control (CC) consisting of graded lab assignments and/or a micro-project and/or case studies with oral presentations, as well as a final written exam (FE) taken in class without reference materials.
The course is considered passed if and only if the final grade is 10 or higher.
Only one final exam is administered.

Assessment formula

Final grade = 0.3 * CC + 0.7 * FE

References

- Supports de cours

- Alistair Cockburn and Juan Manuel Garrido de Paz, "Hexagonal Architecture Explained: How the Ports & Adapters Architecture Simplifies Your Life, and How to Implement It", Ed. Humans and Technology Press, Series on Object-Oriented Design, EAN 9781737519799, 2024
- L. Bass, P. Clements, and R. Kazman. “Software Architecture in Practice, 3rd Edition”. Addison-Wesley, 2012.
- M. Richards. “Software Architecture Patterns”. O’Reilly, 2022.
- C. Richardson. “Microservices Patterns”. Manning, 2018.
- V. Khononov. “Learning Domain-Driven Design”. O'Reilly, 2022.
- R.T. Fielding. “Architectural Styles and the Design of Network-based Software Architectures”. PhD Dissertation, University of California, Irvine, 2000.
- OASIS AMQP Consortium. “AMQP: Advanced Message Queuing Protocol, Version 0-9-1”. Protocol specification, November 2008.
- OASIS MQTT Consortium. “MQTT specification Version 5.0”. Standard, March 2019.

Pedagogical methods

ASSIDUITE : CC
All the subjects of the module will be illustrated by research articles as well as practical labs. Through a micro-project students will design and implement a distributed application.