Je viens de découvrir le projet jGroups qui est une bibliothèque permettant d’échanger des messages entre serveurs (plutôt sur un même LAN).

Nous allons l’utiliser pour broadcaster ou plus exactement multicaster des messages reçus par des agents vers des superviseurs : dans les centres d’appels,les superviseurs ont entre autre, la charge de surveiller des appels dont la durée dépasse un seuil configuré selon de objectifs définis (qualité de service ou prise en charge d’un grand volume d’appels).

Comme le nombre de superviseur est inconnu à l’avance, que leurs connexions sont dynamiques et à détecter automatiquement (pour des gains de trafic réseau), on a décidé (Merci François O**** pour cette suggestion originale) d’utiliser une technologie de bas niveau utilisée dans les serveurs applicatifs pour envoyer tous les messages échangés entre utilisateurs selon leur profil.

En effet le logiciel en cours de réalisation étant proposé en SaaS, il est basé sur des composants permettant la HA (haute disponibilité) et donc on ne sait pas vraiment sur quel serveur chaque utilisateur sera connecté. De même on ne sait pas à l’avance combien de serveurs seront actifs, et on doit détecter leur apparition / disparition par abonnement. De ce fait on ne sait pas comment envoyer des messages téléphoniques en évitant du broadcast pénalisant pour le réseau.

Avec jGroups on peut définir un groupe d’agent à monitorer comme étant un cluster (un ensemble de machines) et utiliser les messages internes pour connaitre les états de chacun. Une fois les messages échangés très rapidement en UDP (donc sans ACK), la technologie Websocket déjà en place permet de remonter les informations vers les postes clients sur internet.

Alternative : les MOMs

Il est certains qu’utiliser jGroups pour faire du MOM peut-être vu comme “une enclume pour écraser une mouche”.

Habituellement on utilise plus simplement :

  • JMS ou AMQP pour échanger des messages (transactionnel et persistant)
  • XMPP est également très pratique pour échanger des messages entre machines ou pour faire du push server (Cisco l’utilise sur son produit Finesse)

Ou encore une autre alternative :

Mais ces outils nécessitent une exploitation opérationelle beaucoup plus lourde, et comme on est DevOps, on préfère l’éviter.

Projet jGroups

jGroups

(361 mots)