Objectives of the teaching unitAfter 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).
Software InstallationTODO beforeTODO before the first lab
- Middleware, interaction styles, application servers service oriented architecture, component-based architecture
- 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
Tuesday 09/14Component middleware (1/3)Component middleware (1/3)
- 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
- Finish and return Lab
- Introduction to software architecture : View the video (link in moodle) and 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 (JAVA Architecture for XML Binding), serialisation, Un/Marshalling, Annotations,
- JAX-RS, RESTful WebServices, Annotations.
- 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 :
- Install a REST Client
- Understand the skier example.
- Download the microproject skeleton
- 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)
- Finish and return REST Lab before the first DEBS lecture
Tuesday 09/28BroadcastMicro project work
- Prepare micro project design report
- Finish drawing the path of one user on the map, with interactions with the emulation server.
- Finish the tour management module
Wednesday 09/29DEBS (1/4)Distributed Event-Based Systems (1/4)
- 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 *)
- Finish the study of the questions on RabbitMQ
Wednesday 10/06Workshop (1)Workshop, article presentations
Friday 10/08DEBS (2/4)Distributed Event-Based Systems (2/4)
- AMQP, virtual host
- MQTT: QoS0/"At most once", QoS1/"At least once", QoS2/"Exactly once", session and CleanSessions, and RETAIN flag, wildcards (/, #, and +)
- Go as far as you can for the group communication system, and prepare questions on RabbitMQ.
Tuesday 10/12DEBS (3/4)Distributed Event-Based Systems (3/4)
- 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
- Go as far as you can for the microproject
- Prepare questions you have for the microproject, it is the last lab for it.
Monday 10/18DEBS (4/4)Distributed Event-Based Systems (4/4)
- 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