Cassandra, moteur des données utilisateurs de 6Play
M6Web a choisi la base de données NoSQL Cassandra et Datastax pour stocker les données utilisateurs de la plateforme 6Play. Les événements et l’historique de la consommation vidéo assurent le dispositif de reprise de lecture multi-terminal.
Lorsque l’on met en place une TV de rattrapage (Catch-up TV), la consommation des vidéos et sa maniabilité est au cœur du projet. Ce constat, M6Web, entité du groupe M6 en charge des activités numériques et Web de la chaîne, l’a fait lors du déploiement de 6Play, la portail Web qui sert de porte d’entrée Web à toutes les chaînes du groupe. Cette plateforme permet non seulement de visionner les émissions en décalage mais également de regarder les chaînes M6 en direct. Depuis sa création en 2013, M6Web a également inscrit la mobilité et le multi-terminal dans sa stratégie.
Quelques chiffres d’abord : plus de 3 millions de vidéos sont vues par jour, avec un record à plus de 5 millions, 10 millions d’utilisateurs y sont inscrits (avec un moyenne de 30 000 inscriptions par jour) et quelque 300 programmes y sont référencés (soit 3 000 heures de contenus). Autant d’utilisateurs désormais en attente d’une expérience fluide dans le visionnage des vidéos, et ce que l’on soit sur son PC, sur son smartphone ou encore sa tablette.
Concrètement, a résumé Olivier Mansour en charge des activités Backends & Engineering Video, M6Web, qui s’exprimait lors du Datastax Day Paris qui s’est tenu le 14 juin , l’utilisateur doit pouvoir « retrouvé ce qu’il a vu et ce qu’il n’a pas encore vu ». Et encore plus loin : « il doit pouvoir stopper une vidéo et la reprendre plus tard au même endroit, et sur un terminal différent. »
Pour cela, M6Web a mis en place un système de profil d’utilisateurs, désormais commun à ce type de plateforme. Lorsqu’ils s’enregistrent sur 6Play, les utilisateurs se créent donc un profil, en donnant leurs préférences en matière de thèmes d’émissions, et peuvent aussi y ajouter des favoris, par exemple. Les vidéos consommées sont également journalisées et la plateforme peut aussi suggérer des émissions à visualiser. Aujourd’hui, confie Olivier Mansour, « toutes ces données utilisateurs sont stockées dans Cassandra ».
Un historique douloureux avec PHP et MySQL
Ce déploiement de Cassadra n’a pourtant pas constitué le point de départ de ce dispositif. Le groupe a auparavant connu ce que Olivier Mansour qualifie un « historique douloureux » il y a 3 ans. S’appuyant sur un historique PHP et sur MySQL, M6Web avait tenté de mettre en place cette mécanique de visionnage en continu, mais avait rencontré « une très mauvaise tenue en charge ». Au final, la plateforme n’avait pas trouvé son public – logiquement.
Intervient alors la mise en place de Cassandra. M6Web a choisi la solution DataStax Entreprise (DES) de Datastax, qui comporte outre la base de données, une offre de support premium et une série d’outils d’administration et de configuration d’un cluster Cassandra (dont Opscenter).
Pour mémoire, Cassandra est une base de données Open Source dite NoSQL, hébergée par la Fondation Apache. Née chez Facebook, elle a notamment la particularité de pouvoir stocker de très gros volume de données, d’écrire des milliers de valeurs par seconde, mais avec une latence très faible. Elle est aussi connue pour ses capacités de dimensionnement linéaire et sa haute disponibilité, rendues possibles grâce à une architecture en cluster dit masterless. Bref, comme toutes les bases NoSQL, elle propose une alternative aux bases dites relationnelles, peu adaptés aux gros volumes, à la rapidité de traitements et aux multiples connexions concurrentes.
Deux applications reposant sur Cassandra
Chez M6Web, Cassandra sert ainsi de socle de base à deux applications qui permettent le stockage des données des utilisateurs. Une première application stocke donc les préférences, remonte l’historique des clics, les vidéos consommées et les programmes jugés « intéressants ». Une seconde, celle-ci baptisée « heartbeat », sert quant à elle à stocker les sessions de lectures ainsi que tous les événements de l’utilisateur effectués sur la plateforme. Cette dernière génère le plus fort trafic, résume d’ailleurs Olivier Mansour, avec une fréquence de mise à jour différente de la première.
Ces deux applications ont été développées en PHP 7, explique encore le responsable, et directement sur Cassandra. Seulement, lorsque les développements ont démarré, il n’existait pas d’extension PH7 pour la base de données. Cette extension a été développée par DataStax en collaboration avec les équipes de M6Web, explique Olivier Mansour.
Le projet, qui a nécessité 2 mois de développement, fonctionne sur 8 tables Cassandra, dont une à plus de 30 millions de lignes. Cassandra est supportée par un cluster de 3 nœuds physiques, 16 CPU à 2,6 Ghz, 64 Go de RAM et 5To de SSD, explique le responsable de M6Web. Des nœuds « un peu costauds » confie-t-il. Et cela repose sur des VM standard, ajoute-t-il.
Au final, la mise en place de Cassandra a permis d’accélérer les temps de réponses de requêtes PHP. En moyenne, la plateforme est capable de traiter 20 000 requêtes par minutes aux heures de pointe (entre 20.00 et 22.00). D’ailleurs, s’étonne Olivier Mansour, « Cassandra accélère lorsque le trafic augmente ».