Projet : Avenirs-ESR / ePortfolio.
Objet : Architecture logicielle du module Communication.

Révision : 1.0.0
Date : 25/04/2024
Auteur : A. Deman
Commentaire : Version initiale

Contexte

Module de communication du portfolio industriel, qui permet de gérer les notifications utilisateur, les notifications système et la communication entre utilisateurs.

Objectifs

  • Faciliter les usages :
    • Notamment autour des Activités de Mise en Situation ou de l’évaluation par des pairs.
    • Permettre aux utilisateurs d’avoir accès à la bonne information au bon moment, sans être noyé par un flux trop important de messages.
    • Guider les utilisateurs avec une communication claire, contextualisée et des indications pertinentes.
  • Servir de base technique pour la mise en place de fonctionnalités temps réel.

Contraintes

  • Les notifications doivent être en temps réel.
  • Le service doit pouvoir être contrôlé finement et les limites doivent être bien positionnées pour éviter le SPAM et les usages détournés ou abusifs. Il peut s’agir, par exemple, d’être en mesure de mettre hors ligne tout ou partie des fonctionnalités de communication. [TODO] déterminer le périmètre : ensemble du système, établissement, catégories d’utilisateurs, utilisateurs spécifiques ?
  • Gestion du système de messagerie : possibilité de s’appuyer sur une infra existante pour le service SMTP ?
  • Contrainte de performance, à valider surtout au niveau des notifications système, basées sur les web sockets.
  • Maintenir une cohérence, notamment en terme de format de messages sur l’ensemble de la plateforme.

Principaux composants

Communication - Main components
Communication - Main components

Notifications

Une expérimentation a été menée concernant les notifications temps réel autour de Kafka, APISIX et une API développée Java/Spring Boot.
Remarques : les fonctionnalités d’APISIX liées à Kafka sont trop limitées pour notre cas d’utilisation (c.f. GitHub issue).

Communication - Notifications
Communication - Notifications