À propos du client
Le client est une startup ayant créé la première plateforme au monde pour la perception des odeurs. Basée sur une technologie brevetée par la NASA, elle permet d’identifier des conditions médicales via l'odeur de la respiration ou du corps, à l'aide d'un capteur spécialisé et de l'IA.
À propos du projet
Le client a contacté Elinext pour trouver un développeur Node.js, qui serait chargé de créer de nouveaux microservices et de maintenir ceux existants.
Lorsque le développeur Elinext a rejoint le projet, seul le service de Configuration était en développement. C'est le microservice central du projet, avec lequel tous les autres microservices interagissent pour obtenir des configurations et gérer le routage. Cela vaut également pour les appareils physiques de réception d'odeurs, dont les fonctionnalités dépendent du service de Configuration.
Parmi les autres microservices développés par notre développeur figurent :
- Service de Notifications – envoie des notifications via messages Flutter, notifications push sur iOS et Android, e-mails, et WebSocket (Redis est utilisé pour distribuer les requêtes au service de notifications) ; ce service est utilisé pour la gestion et le suivi des notifications.
- Service de Gestion de Flotte – utilisé pour la gestion des appareils, permettant de générer des numéros d'appareils et de les ajouter à Thingsboard, une plateforme dédiée à envoyer des requêtes aux appareils, les allumer/éteindre, mettre en place un mode d'économie d'énergie, et effectuer d'autres actions relatives aux appareils.
- Service OLAF Hub – utilisé pour la gestion des expériences et la collecte de données et de protocoles ; ce service fonctionne en fonction des événements et des descriptions du service d’annotation.
- Service d'Annotation – utilisé pour gérer les annotations et l'étiquetage des données, y compris les appareils, les services et les expériences. Les annotations sont dotées d'événements, qui consistent en des instructions stockées dans une configuration spécifique à chaque annotation. En fonction des événements déclenchés, on peut gérer les appareils, terminer des expériences et effectuer d'autres actions.
- Service pour Entités Commerciales et Domestiques (Service CDE) – utilisé pour séparer les accès entre les utilisateurs et les appareils, notamment les périodes d’essai, le partage d’appareils, le marquage de la zone de travail de l’appareil, etc.
Certains services communiquent entre eux via Kafka. Comme le service de Configuration est chargé et inclut un cache, les autres services communiquent avec lui via une bibliothèque développée par Elinext. Ce processus fonctionne ainsi : la requête est d'abord envoyée à Kafka pour rechercher la configuration dans le cache. Si la configuration n'est pas trouvée, la requête passe alors par gRPC. En cas d'erreur avec gRPC, la requête est effectuée via HTTPS. Le service le plus complexe a été le service de Notifications. Le problème survenait lorsque, sous forte charge, plusieurs notifications pouvaient être envoyées simultanément à un appareil. Un développeur Elinext a mis en œuvre une solution améliorant les performances du service, permettant la gestion simultanée de plusieurs notifications.
Résultats
Le développeur Elinext a produit un code stable que le client est actuellement en train de tester. Son expérience approfondie a permis de résoudre les problèmes de surcharge des services, aboutissant à une amélioration globale des performances.