BedRock Streaming bascule ses traitements Big Data sur AWS Graviton2
Leader européen des plateformes de streaming, Bedrock a récemment basculé ses instances de calcul Data vers l’offre AWS Graviton2. Un virage vers l’offre ARM d’Amazon Web Service qui a permis de réduire ses coûts, mais aussi de raccourcir ses temps de calcul.
Joint-Venture entre les groupes M6 et RTL, Bedrock conçoit et développe des plateformes de streaming dans toute l’Europe. L’éditeur compte plus de 400 collaborateurs et plus de 45 millions d’utilisateurs dans cinq pays. « L’objectif de la création de Bedrock était de répondre aux besoins de création d’une plateforme de streaming, qui apparaissent partout en Europe, avec une offre industrialisée capable de pouvoir porter très rapidement des services SVOD et AVOD pour de multiples clients, sans devoir réinventer la roue à chaque fois » résume Quentin Nambot, Data Engineer chez Bedrock.
Une migration « naturelle » vers le cloud public
En 2008, le Groupe M6 a démarré cette activité depuis des serveurs sur site, mais les ingénieurs de ce qui allait devenir Bedrock se sont très rapidement intéressés au cloud public.
« Nous avons basculé progressivement notre infrastructure sur AWS à la fin des années 2010. C’est une migration qui a pris du temps, mais la raison est évidente. Les services de streaming connaissent de très forts pics d’activité : l’audience peut être très faible la nuit, à 3 heures du matin, mais une finale de coupe du monde de Football va faire exploser les records d’audience à coup sûr. »
Quentin NambotData Engineer, Bedrock
Lorsque le service s’appuyait sur une plateforme sur site, la performance et donc le nombre d’utilisateurs simultanés étaient bien évidemment limités par la puissance des serveurs disponibles. Sur le cloud public, cette limite saute : « Sur AWS, nous disposons d’une plateforme totalement élastique : dès que nous connaissons un pic de trafic, nous provisionnons plus de machines et, à l’inverse, la taille de la plateforme peut être réduite la nuit, lorsque l’audience est faible. »
L’autre intérêt du cloud public pour un acteur tel que Bedrock est de pouvoir gérer des comptes séparés pour chaque client. Les données des utilisateurs de chacun d’eux sont bien distinctes, de même qu’il est facile pour le prestataire de connaître précisément les ressources et les coûts engendrés par les services de chacun de ses clients.
Priorité est donnée à l’approche « infrastructure as Code »
Ce positionnement de fournisseur de plateformes SVOD et AVOS en marque blanche a naturellement poussé les équipes de Bedrock à s’investir massivement dans l’approche DevOps, afin d’industrialiser au maximum le provisionnement et la maintenance des infrastructures de ses clients.
« Nous avons une mentalité DevOps dans toutes nos équipes. Nous avons généralisé nos usages sur Terraform sur l’ensemble de notre infrastructure. Nous nous inscrivons totalement dans une démarche Infrastructure as Code, si bien qu’une infrastructure peut être montée pour un nouveau client en une ligne de code avec l’ensemble des services activés sur AWS pour ce client. »
L’équipe Data à laquelle appartient Quentin Nambot provisionne des centaines de clusters de plusieurs machines chaque jour pour transformer et analyser les données de consommation des vidéos. Elle met à disposition des clients de Bedrock les statistiques de visionnage des vidéos. Elle exécute aussi les modèles de Machine Learning qui exploitent ces données afin d’en extrapoler des profils utilisateur, faire des recommandations, etc.
Ces analyses requièrent énormément de puissance de calcul pour récupérer l’ensemble des données, les traiter, les transformer et les analyser. De manière assez contre-intuitive, pour réaliser ces gros volumes de traitements, l’équipe Data utilise aujourd’hui massivement les processeurs AWS Graviton2, les puces ARM conçues par Amazon.
Quentin NambotData Engineer, Bedrock
« Fin 2020, AWS a lancé son offre Graviton2. Le tarif était notoirement moins cher que les instances classiques à puissance comparable, ce qui m’a poussé à tester la solution. J’ai pris un cluster EMR classique que nous connaissons bien et que nous faisons tourner tous les jours et dont je connaissais le temps de calcul moyen ainsi que les coûts. J’ai passé ce cluster sur AWS Graviton2 pour tester, et le temps de calcul est instantanément passé de 40 minutes à 27 minutes. Soit 15 minutes gagnées qui plus est sur des instances où la minute est moins chère ! »
Il a suffi à Quentin Nambot de modifier une seule ligne de configuration pour basculer sur Graviton et gagner de l’argent comme du temps de calcul. « La décision de basculer sur Graviton tout ce que l’on pouvait a été facile à prendre et aujourd’hui, nous utilisons les processeurs AWS Graviton2 partout où il est possible de le faire », ajoute l’ingénieur.
Un seul cas d’incompatibilité constaté sur l’ensemble des traitements
L’équipe Data exploite essentiellement EMR, la plateforme Big Data managée d’AWS avec Apache Spark au-dessus pour réaliser ses calculs. Utiliser EMR sur Graviton implique de s’appuyer sur des versions relativement récentes de Spark. Une contrainte qui s’est avérée bloquante sur un projet : « Un de nos anciens projets fonctionne sur une version d’Apache Spark relativement ancienne, mais nous avons considéré qu’il ne justifiait pas l’investissement pour être modernisé. Nous continuons à l’exécuter sur des instances classiques. Nous avions planifié de refaire le projet en question à terme, donc nous n’avons pas pris le temps de le migrer immédiatement. »
Depuis, l’équipe Data a entrepris de refaire ce traitement non seulement pour s’appuyer sur AWS Graviton, mais aussi repenser les calculs et tirer profit pleinement du cloud. En effet, ce projet avait été bâti pour une infrastructure sur site et présentait quelques aberrations à corriger pour optimiser son fonctionnement sur une architecture cloud. Une fois ce traitement redéveloppé pour AWS, celui-ci sera beaucoup plus performant et enfin compatible avec AWS Graviton.
Quentin NambotData Engineer, Bedrock.
Quentin Nambot conclut : « Le coût du basculement de nos calculs vers AWS Graviton n’est pas nul, mais ce coût est absolument dérisoire par rapport à ce que nous avons pu gagner. Je pense qu’il ne faut pas hésiter à opter pour les machines Graviton, notamment sur les nouveaux projets. Sur un projet existant, s’il ne faut que modifier le fichier configuration de cluster, il ne faut pas hésiter à essayer. Cela ne demande que quelques minutes de travail et le résultat est évident à constater. »
« Nous n’avons noté absolument aucune différence aucun effet de bord sur l’ensemble des traitements qui étaient éligibles. Graviton intervient au niveau matériel et les couches logicielles au-dessus gomment toute différence pour les applications, notamment en ce qui concerne Spark. »
Enfin, AWS offre désormais la possibilité de choisir l’architecture Graviton pour AWS Lambda, donc exécuter des fonctions Serverless sur cette architecture à faible prix. Cette possibilité n’a toutefois pas encore été mise en œuvre par l’équipe Data, car les fonctions Lambda sont très courtes et les faire fonctionner sur Graviton ne devrait pas engendrer de gains réels, tant financiers qu’en temps de calcul.