La plateforme de streaming Netflix est aussi une entreprise avec un fort intérêt pour les évolutions technologiques. On se souvient que ses équipes ont donné ses lettres de noblesse à l’ingénierie du chaos pour éprouver les développements en cas de problème. Aujourd’hui, la firme explique la refonte de sa plateforme Reloaded, qui sert à ingérer (notamment le ré-encodage) et à distribuer les médias. Cette modernisation passe par la création d’une autre plateforme baptisée Cosmos.

Une dette technique à supprimer

Dans un blog, le spécialiste du streaming indique que Cosmos est la quatrième génération (la première datant de 2007) d’un outil capable « de traiter les fichiers médias issus de nos partenaires et studios afin de les rendre lisibles sur tous les terminaux ». A noter que Reloaded existait depuis 7 ans et montrait ses limites. « Quand Reloaded a été conçu, nous étions une petite équipe de développeurs exploitant un cluster de calcul limité et nous nous étions alors concentrés sur un cas d’utilisation : le pipeline de traitement vidéo/audio », se souvient Franck San Miguel, développeur senior chez Netflix.

Mais « avec le temps, le nombre de développeurs a plus que triplé, l'étendue et la profondeur de nos cas d'utilisation ont augmenté, et notre mise à l’échelle a plus que décuplé, l'architecture monolithique a considérablement ralenti la livraison de nouvelles fonctionnalités », reconnait le responsable. Au final, il constate, « la gestion des problèmes de production est devenue une corvée coûteuse qui a imposé une dette technique à tous les développeurs car le code de l'infrastructure était mélangé avec le code de l'application ». Il était donc nécessaire de remplacer l’ancien système.

Une combinaison microservices, workflow et serverless

Le blog donne quelques indications sur les services attendus par la plateforme Cosmos. Premier élément important, Franck San Miguel précise qu’« un service Cosmos n’est pas un microservice, mais il y a des similitudes ». Pour lui un microservice classique se définit comme « une API avec un Business Logic stateless qui est automatiquement dimensionnée en fonction de la charge de la demande, elle fournit des contrats solides avec ses pairs tout en séparant les données d’application et les dépendances binaires des autres systèmes ». Dans le cadre de service Cosmos, « il garde les contrats solides et la séparation des données et des dépendances d’un microservice, mais en ajoutant à plusieurs étapes des ressources serverless asynchrone de workflow et de calcul intensif », observe le développeur.

Un service Cosmos type (Crédit Photo: Netflix)

Dans le détail, il souligne que dans un service Cosmos, « les clients envoient des requêtes à une API de service d’encodage vidéo. Un ensemble de règles orchestrent les différentes étapes des workflow et plusieurs fonctions serverless alimentent des algorithmes spécifiques. Ces fonctions sont encapsulées sous forme d’images Docker et apportent leurs propres dépendances dédiées aux médias (par exemple des paquets Debian). Elles sont mises à l’échelle en fonction de la taille ou de la file d’attente et peuvent fonctionner sur des dizaines de milliers de conteneurs différents. Cosmos dispose ainsi de trois sous-systèmes : Optimus qui va gérer la couche API, Plato pour s’occuper de la couche workflow et Stratum pour la couche serverless et les appels aux fonctions de calcul intensif. Au final, Franck San Miguel indique dans le blog, « nous avons trouvé que « les micro-services qui déclenchent des flux de travail qui orchestrent des ressources serverless » est un paradigme puissant.

Les trois strates des services Cosmos (Crédit Photo: Netflix)

Netflix a commencé à travailler sur Cosmos en 2018, l'a utilisé en production depuis 2019 et l'utilise maintenant pour environ 40 services. En 2021, la migration de Reloaded vers Cosmos va être accélérée.