Objectives of the teaching unit
After this teaching unit, you should be able to:- Identify and use the main interaction patterns between distributed components (synchronous requests and publish/subscribe)
- Learn master technologies for producing enterprise distributed applications (RestFul WebServices, JavaEE, Rabbit-MQ).
- 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 disributed applications.
- Define the quality of a distributed architecture and discuss architecture choices to respond to quality of software architecture requirements (e.g. interoperability, security, scalability).
Sequencing
-
SubjectMaterialKey notions
-
Software InstallationTODO beforeTODO before the first lab
-
Monday, 09/13IntroductionIntroduction
- Presentation of the teaching unit
- Who are you ? Could you answer the questions in this shared file.
-
Presentation
of the workshop
- Discover the list of Articles
- Middleware definitions and overview
- Discover the Micro-Project subject
- Middleware, interaction styles, application servers service oriented architecture, component-based architecture
-
Home WorkTODOTODO
- Who are you ? If you have not finished already, fill in the who are you form
- Choose your favorite articles from the list Articles
- Read carefully the subject of the micro-project (see above), and write down your questions for the next class.
- Be aware of the prerequisites and do the necessary home work to be operational, with java tutorial, and relational database tutorial.
- Discover some of the tools that will be used during the labs
- Discover maven (it will be used during labs and microproject)
- Read "Maven by example" Chapter "Customizing a Maven Project"
- Make the tutorial "Maven Getting Started Guide"
- Read "Maven by example" Chapter "A Simple Web Application"
- Read "Maven by example" Chapter "A Multi-module Project"
- Discover maven (it will be used during labs and microproject)
-
Tuesday 09/14Component middleware (1/3)Component middleware (1/3)
- Component Middleware
- EJB Lab 1 — Stateless and Stateful Beans
- Explanations on code samples
- Introduction to distributed design patterns
- Notion of interface, component, container, application server
- Functional vs extra-functional services
- Enterprise JAVA Beans, RMI-IIOP, JAVA Naming and directory interface, Persistence
- Stateless/Stateful Session bean, Annotations, Asynchronous Method Invocation (Future)
-
Wednesday 09/15Component middleware (2/3)Component middleware (2/3)
- EJB Lab 2 — Entity Bean
- Entity bean, Multiplicities (one-to-one, one-to-many, many-to-one, many-to-many)
- Persistence management mode, persistence context
-
Wednesday 09/15Component middleware (3/3)Component middleware (3/3)
- Start microproject - EJB part
- Develop an application integrating session and entity beans
- Incremental design with unit tests
-
Home WorkTODOTODO
- Finish and return Lab
- Introduction to software architecture : study the slides
- Software architecture, views,
- attribute-driven design, quality attributes,
- tactics, architectural patterns
-
Tuesday 09/21RESTREST, Web Services
- Architectural style, WWW, RESTful, REST resource
- CRUD (HTTP): Create (POST), Read (GET), Update (PUT), Delete (DELETE)
- JAXB, Format (plain text, html, xml, json [JavaScript Object Notation], image, video),
- JAXB (JAVA Architecture for XML Binding), serialisation, Un/Marshalling, Annotations,
- JAX-RS, RESTful WebServices, Annotations.
-
Home WorkTODOTODO
- Discover the article you have to present
- Understand the REST examples code and come with questions
-
Wednesday 09/22 am and pmREST - labREST labSeveral steps are proposed for the REST lab :
- Getting started with the microproject
- Write a client for the emulated visit REST server
- Write a client and a server for the Vlib bike stations OpenData (optional functionality; to be included in the project if you have time)
-
Home WorkTODOTODO
- Finish and return REST Lab before the first DEBS lecture
-
Tuesday 09/28BroadcastMicro project work
- Finish drawing the path of one user on the map, with interactions with the emulation server.
- Finish the tour management module (if necessary)
-
Wednesday 09/29DEBS (1/4)Distributed Event-Based Systems (1/4)
- DEBS — Basics (slides 1/3)
- DEBS with topic-based filtering — Start Lab to discover RabbitMQ
- Event-based (a.k.a. publish-subscribe) (initiator = provider and adressee = indirect) versus request/reply, callback (a.k.a. observer/observable), anonymous request/reply
- Architecture of a DEBS system: data distribution with routing overlay and dissemination, data management layer with representation and processing
- Routing overlay: centralized architecture versus decentralized architecture (flat versus hierarchical)
- Dissemination: sensor direct access, flooding-based (data flooding or subscription), selection-based (system wide scope versus limited scope), gossip-based
- EBS service: 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 *)
-
Wednesday 10/06Workshop (1)Workshop, article presentations
- Workshop schedule,
-
Friday 10/08DEBS (2/4)Distributed Event-Based Systems (2/4)
- DEBS with topic-based filtering — Continue Lab to discover RabbitMQ
- AMQP questions after the Topic-Based DEBS lab on RabbitMQ
- DEBS Lab on the micro-project — Start group communication system
- AMQP, virtual host
-
Home WorkTODOTODO
- Go as far as you can for the group communication system and the integration phase, and prepare questions on RabbitMQ.
-
Tuesday 10/12DEBS (3/4)Distributed Event-Based Systems (3/4)
-
DEBS — Basics
(slides 2/3)
- Survey paper DEBS for IoT systems
- DEBS Lab on the micro-project — Continue group communication system
- DEBS Lab on the micro-project — Start the integration phase
- MQTT: QoS0/"At most once", QoS1/"At least once", QoS2/"Exactly once", session and CleanSessions, and RETAIN flag, wildcards (/, #, and +)
-
DEBS — Basics
(slides 2/3)
-
Home WorkTODOTODO
- Go as far as you can for the microproject
- Prepare questions you have for the microproject, next lab is the last lab.
-
Monday 10/18DEBS (4/4)Distributed Event-Based Systems (4/4)
- DEBS — Basics (slides 3/3)
- DEBS Lab on the micro-project — group communication system
- DEBS Lab on the micro-project — the integration phase
- DEBS Lab on the micro-project — adding authentication
- DEBS Lab on the micro-project — lobby room
- Kafka: cluster-based architecture, structured commit/append logs, partitions, consumer groups,
- Content-based data and filter models: tuples, structured records, semi-structured records (à la XML), objects
-
Home WorkTODOTODO
- Read carefully the microproject subject (info about the defense and the deliverables)
- Prepare your micro-project defense
- Return the microproject deliverables on moodle
-
Wednesday 11/10DefenseDefense of the Micro-project