
This course explores how to design, implement and evaluate microservices architectures. It introduces the principles and trade-offs of monolithic, service-oriented and microservices architectures, with particular attention to performance, scalability, resilience, security and maintainability.
Topics include service boundaries and Domain-Driven Design, REST APIs and asynchronous messaging, API gateways and service discovery, distributed data management, resilience patterns and observability. The emphasis is on justifying architectural decisions according to a specific usage context and understanding their benefits, costs and limitations.
Working in groups of 3 to 5, students apply these concepts to one of four projects: resource reservation, IoT data collection, on-demand file processing, or order and delivery coordination. Each group defines its own context and requirements, designs and documents the architecture and API contracts, then implements a working system with reproducible deployment.
The final submission includes the architecture dossier, source code, deployment and update guides, and a validation report. Through experiments and a demonstration, students assess their system under load, during failures and against unauthorised access, providing evidence to support their design choices.
- Profesor: Johann Bourcier
- Profesor: Pascaline Dagher