- Fluency in writing programs in Java, using a Java IDE (we favor Eclipse), reading UML diagrams (use case, class, sequence), reading Shell scripts in Bash, versioning with Git.
- Some knowledge in Maven project construction, SQL programming.
- Identify and utilise the main paradigms for interaction between distributed entities (synchronous call, callbacks, asynchronous calls, publish/subscribe) through the study and practical application of various middleware technologies (REST, Server-Sent Events, AMQP, MQTT, JPA, JavaEE).
- Design and implement a distributed application comprising several microservices. The application will be developed as part of a microproject spanning the entire teaching unit.
- Identify design patterns and architectural patterns that use middleware for distributed applications: for example, microservices patterns such as the Ports & Adapters design pattern.
- Define the concept of quality in distributed architecture and analyse the architecture choices that enable software architecture quality requirements to be met (for example, interoperability and scalability), and apply these elements when designing a distributed application: for example, decomposition into microservices using the Domain Driven Design Approach.
Sequencing
-
LectureDateMaterialKey notions
-
Software InstallationsTODO beforeTODO
-
ForewordForewordForeword
-
Session1Session 1
- Lecture 1: Presentation of the Teaching Unit, Middleware, Software Architectures, Microservices, Presentation of the micro-project
- Microproject: 01—Discover the application
- Addendum: Software Architecture, Examples of Quality Attributes, etc.
- Software architecture, views, quality attributes, tactics, architecture patterns/styles (layered, microkernel, event-driven, microservices)
- Middleware, separation of concerns, models of interaction (request/reply, callback, event-based)
-
Session2Session 2
- Lecture 2: REST Architecture Style
- Discover: REST with JAX-RS
- Microproject: 02—REST for microservice MiniSocs Frontend
- Addendum: XML serialisation and Basics of HTTP
- REST architecture style, client/server, stateless, cacheable, layered system, uniform interface (CRUD)
- Resource (URI, un/marshalling), representation format (JSON, XML)
- JAX-RS (JAVA RESTful Web services), annotations (@Path, @Consumes, @Produces, @GET..., @PathParam, @QueryParam)
-
Session3Session 3
- Microproject: Recommended milestone 1, Monolith application with REST access to the façade
-
Session4Session 4
- Lecture 3: Distributed Event-Based Systems (1/2)
- Discover: AMQP with RabbitMQ
- Microproject: 03—AMQP for linking microservices MiniSocs Frontend and Anomaly Detection
- Addendum: DEBS, Formal Specification, Routing, and Algorithms
- Event-based (a.k.a. publish-subscribe), notification, advertise, subscribe, publish, notify, producer, consumer
- Notification filtering: channel-based, subject-based (a.k.a. topic-based), type-based, content-based
- AMQP: message queue, exchange, binding, binding and routing keys, wildcards (‘/’, ‘#’, and ‘*’), virtual host, access control
-
Session5Session 5
- Lecture 4: Distributed Event-Based Systems (2/2)
- Discover: MQTT with Mosquitto
- Microproject: 03—AMQP for linking microservices MiniSocs Frontend and Anomaly Detection
- MQTT: QoS0/“At most once”, QoS1/“At least once”, QoS2/“Exactly once”, session, “CleanSessions”, and “RETAIN” flag, wildcards (‘/’, ‘#’, and ‘+’)
- Unit tests and integration tests
-
Session6Session 6
- Microproject: Recommended milestone 2, MiniSocs Frontend with REST access and AMQP link to Anomaly Detection
-
Session7Session 7
- Lecture 5: Server-Sent Events
- Discover: SSE with JAX-RS
- Microproject: 04—SSE for microservice MiniSocs Frontend
- Server-Sent Events, Desing pattern Observable Observer, server to client push, media type text/event-stream, registration, broadcasting
- Context and Dependency Injection, @Singleton, @Context
-
Session8Session 8
- Lecture 6: Persistence, Object Relational Mapping and Component Containers (1/2)
- Discover: ORM JPA with EclipseLink
- Microproject: 05—ORM Persistence for microservice Anomaly Detection
- Persistence, ORM, relational model, normalization, data integrity, SQL, query, Entity Manager
- @Entity, @Id, @OneToMany
-
Session9Session 9
- Microproject: Recommended milestone 3, MiniSocs Frontend with SSE notifications
- Microproject: Recommended milestone 4, Anomaly Detection with ORM persistence
-
Session10Session 10
- Lecture 7: Design pattern Ports & Adapters
- Discover: Design pattern Ports & Adapters with a walking skeleton
- Microproject: 06—Ports & Adapters for microservices MiniSocs Frontend and Anomaly Detection
- Design pattern Ports & Adapters, hexagon, port, adapter, driving vs. driven, startup
- Dependency Inversion Principle, design pattern Adapter
- Maintainability, flexibility, decisions delayed,
-
Session11Session 11
- Lecture 8: Persistence, Object Relational Mapping and Component Containers (2/2)
- Discover Application Containers with Glassfish
- Microproject: 06—Ports & Adapters for microservices MiniSocs Frontend and Anomaly Detection
-
Session12aSession 12a
- 10h-12h - Conference: GREEN IT by Anne-Cécile Orgerie
-
Session12Session 12
- Lecture 9: Domain Driven Design
- Microproject: Recommended milestone 5, Ports & Adapters
- Microproject: 07—Client libraries and system tests
-
Session13Session 13
- Conference: Amadeus
- Microproject: 06 and 07
-
Session14Session 14
-
Delivery of the Micro-ProjectDelivery of the Micro-ProjectBefore
at 6pm - Git archive or tag
-
Exam and Project DefenseExam and Project Defense