RadioShop
RadioShop est une entreprise qui fournit des ambiances sonores à des commerces ou entreprises.
Afin de faciliter la gestion des musiques, nous avons dû mettre en production, en équipe de deux, une architecture Big Data et créer une API REST en NodeJS.
Présentation du projet
(10 minutes)
Après nous avoir présenté l’équipe de RadioShop, mon tuteur m’a expliqué que je devais créer une API, un programme qui permet de communiquer, traiter ou modifier les données stockées dans la base de données.
Afin de réaliser correctement cette API, mon tuteur de stage me faisait développer de petits programmes qui par la suite seraient fusionnés pour construire l’API.
Écoute et téléchargement de la musique
(5 jours)
Suite à une autoformation sur Node.js (plateforme libre permettant d’utiliser JavaScript), mon tuteur m’a donné un programme d’écoute de musique qu’un développeur avait auparavant construit. J’ai donc cherché à comprendre le fonctionnement du programme afin de le reprendre pour l’améliorer.
Mon premier programme réalisé permet donc d’écouter une musique de mon ordinateur sur une page internet en stream : l’envoi de petits morceaux de la musique sur la page internet afin d’économiser la bande passante.
Programmes de visualisation, d’insertion et de modification
(2 jours)
L’API permet de communiquer avec une base de données, il est donc essentiel de pouvoir visualiser, insérer et modifier celle-ci. Utilisant une base de données MongoDB (NoSQL), j’ai dû apprendre à utiliser le système de requête qu’elle prend en compte (JSON).
Allumer tous les serveurs de MongoDB
(2 jours)
La personne qui devait s’occuper d’allumer les serveurs MongoDB avait quelques difficultés. Je l’ai donc rejointe pour l’aider.
C’est ainsi que j’ai connu le système de réplication, un groupe de trois serveurs qui ont les mêmes données : si le serveur principal s’arrête, l’un des deux autres prendra sa place et sera élu comme serveur principal. J’ai aussi découvert le système de shard, qui partage la base de données en morceaux, un morceau sur un réplica et un autre sur un réplica différent.
Création d’une première version de l’API
(1 jour)
La première version de l’API nous permettait juste de vérifier que toutes les informations que j’insérais étaient correctement transmises sur MongoDB et de pouvoir les visualiser. Elle ne permettait donc qu’une simple insertion, modification ou visualisation. L’utilisation de l’API se fait avec une requête HTTP.
Programme d’insertion de musiques
(7 jours)
Ce programme insère une musique (en binaire) et des informations la concernant dans la base de données.
Pour ce faire, j’ai réalisé un programme qui « télécharge » une musique via un lien, en n’en récupérant que le binaire, puis qui la chiffre pour que MongoDB comprenne que la valeur est un binaire, pour ensuite créer un document JSON avec toutes les informations de la musique. Enfin le programme envoie le document JSON à l’API pour l’insérer.
OpLog
(Jusqu’à la fin du stage)
L’oplog est un fichier MongoDB qui permet la synchronisation entre les serveurs. Ce fichier nous a beaucoup posé de problèmes jusqu’à la fin du stage.
Mon programme d’insertion envoie les informations très rapidement ; le fichier d’oplog, qui sauvegarde les dernières insertions, modifications et suppressions dans la base de données, n’a pas réussi à suivre la vitesse et a fait cracher les serveurs.
L’API, sa version finale
(5 jours)
Pour m’alléger le travail, un membre de mon équipe avait programmé l’insertion des pochettes d’album et des paroles des chansons, ainsi que leur visualisation. De mon côté, j’ai réalisé l’écoute et la visualisation des musiques mono.
Une fois tous les programmes réalisés, j’ai fusionné ces applications avec l’API et créé un programme qui formate correctement les paroles dans la base de données.
Les tests de performance ont consisté à comparer le temps de téléchargement de plusieurs centaines de musiques entre les différents serveurs dont dispose RadioShop. Une fois mes programmes terminés, j’ai réalisé une documentation technique et utilisateur pour chacun d’eux.