Netflix : Python est derrière chaque film que vous regardez
Voici comment l'entreprise utilise le langage de programmation pour ses services

Le , par Bill Fassinou

123PARTAGES

15  0 
Netflix est une entreprise américaine implantée qui propose des films et séries télévisées en flux continu sur Internet. En prévision de la conférence PyCon de la Python Software Foundation à Cleveland, le géant de la diffusion en continu a expliqué en détail comment il utilise le langage open source. Rappelons que Python est un langage de programmation interprété, multiparadigme et multiplateformes. En 2017 déjà, L’Institute of Electrical and Electronics Engineers (IEEE), la plus grande association mondiale de professionnels techniques, classait le langage comme le meilleur en 2017 en dépassant C et Java.

En début de cette année, Python est sacré langage de programmation de l'année 2018 par l'index TIOBE. Le langage est de plus en plus sollicité dans presque tous les domaines de la programmation allant de la programmation web au développement de l'intelligence artificielle. « De nos jours, c’est le premier langage le plus enseigné dans les universités. Il est numéro un dans le domaine statistique, numéro un en programmation d’IA, numéro un en rédaction de scripts et numéro un en tests de système d’écriture. En outre, Python est également un chef de file de la programmation Web et de l’informatique scientifique, etc. », a écrit TIOBE.


Chez Netflix, bon nombre des périphériques composant Open Connect, son réseau de diffusion de contenu, sont principalement gérés par des applications Python, qui effectuent différentes tâches telles que le suivi de l'inventaire des périphériques réseau, de leur état et de leur emplacement. Netflix explique que divers logiciels sont nécessaires à la conception, à la construction et à l'exploitation de leur infrastructure CDN (content delivery network, en français réseau de diffusion de contenu), et un nombre important d'entre eux sont écrits en Python. Les périphériques réseau qui sous-tendent une grande partie du CDN sont principalement gérés par les applications Python.

Ces applications suivent l’inventaire du réseau. La configuration de ces périphériques est contrôlée par plusieurs autres systèmes, notamment les serveurs d'origine de contenu, l'application de configurations des périphériques et le système de sauvegarde. L'interaction entre périphériques pour la collecte de données opérationnelles et la vérification de l'intégrité de ces données est aussi pilotée par une autre application Python. « Python est depuis longtemps un langage de programmation populaire dans l’espace réseau, car c’est un langage intuitif qui permet aux ingénieurs de résoudre rapidement les problèmes de réseau », déclare Netflix.

Pour améliorer l’expérience utilisateur, Netflix utilise Python pour la répartition du trafic, les opérations de capacité et de l'efficacité du cloud Netflix. À cet effet, « nous sommes fiers de dire que les outils de notre équipe sont construits principalement en Python », précise Netflix. Le service qui orchestre les basculements régionaux utilise des bibliothèques et extensions comme numpy et scipy pour effectuer une analyse numérique, boto3 (un SDK d'AWS pour Python) pour apporter des modifications à l'infrastructure AWS, RQ (une bibliothèque pour la création et le traitement de tâches en arrière-plan) pour exécuter des charges de travail asynchrones et le tout est géré avec des API Flask. « Nous sommes de gros utilisateurs de Jupyter Notebooks et nteract pour analyser des données opérationnelles et des outils de visualisation de prototypes qui nous aident à détecter les régressions de capacité », ajoute Netflix.


L'équipe en charge du noyau de Netflix utilise Python pour les travaux d’alerte et d’analyse statistique et s'appuie sur de nombreuses bibliothèques statistiques et mathématiques comme numpy, Scipy, ruptures, panda, pour automatiser l'analyse des signaux connexes lorsque les systèmes d'alerte indiquent des problèmes. L'équipe de maintenance et de surveillance en charge de la création et de l’exploitation des outils d’information opérationnelle, d’alerte, de diagnostic et de correction automatique, prend désormais en charge les clients Python pour la plupart de leurs services à l'exemple de Spectator (une bibliothèque d'instruments de code permettant d'enregistrer des métriques de séries temporelles dimensionnelles).

L’équipe en charge de la sécurité de l’information utilise Python pour atteindre un grand nombre d’objectifs de Netflix : automatisation de la sécurité, classification des risques, correction automatique et identification des vulnérabilités. Cette équipe utilise Python pour protéger les ressources SSH avec Bless, pour faciliter le réglage des autorisations IAM à l'aide de Repokid. Elle utilise aussi Python pour générer des certificats TLS avec Lemur.

« Nous utilisons de manière intensive Python dans notre infrastructure plus large d'apprentissage automatique pour former certains des modèles d'algorithmes aux aspects clés de l'expérience Netflix : des algorithmes de recommandation à la personnalisation des illustrations, en passant par les algorithmes marketing. Par exemple, certains algorithmes utilisent TensorFlow, Keras et PyTorch pour apprendre par les réseaux de neurones profonds, XGBoost et LightGBM pour apprendre les arbres de décision optimisés par gradient ou la pile scientifique plus large en Python (par exemple, numpy, scipy, sklearn, matplotlib, pandas, cvxpy). Parce que nous essayons constamment de nouvelles approches, nous utilisons des blocs-notes Jupyter pour mener bon nombre de nos expériences. Nous avons également mis au point un certain nombre de bibliothèques de niveau supérieur pour les intégrer au reste de notre écosystème (par exemple, accès aux données, consignation des faits et extraction des fonctionnalités, évaluation et publication des modèles) ».

Outre la personnalisation, Netflix dit qu'il applique l'apprentissage automatique à des centaines de cas d'utilisation dans toute l'entreprise. Beaucoup de ces applications sont alimentées par Metaflow, un framework Python qui facilite l’exécution de projets ML depuis le stade du prototype jusqu’à la production. Pour Netflix, Metaflow repousse les limites de Python. «Nous exploitons du code Python bien parallélisé et optimisé pour extraire des données à 10 Gb/s, gérer des centaines de millions de points de données en mémoire et orchestrer des calculs sur des dizaines de milliers de cœurs de processeur », explique l'entreprise.

L'équipe qui s’occupe de l’encodage (et du réencodage) du catalogue Netflix, ainsi que de la valorisation de l’apprentissage automatique pour mieux comprendre ce catalogue utilise Python pour environ 50 projets tels que vmaf et mezzfs, « nous construisons des solutions de vision par ordinateur utilisant une plateforme de carte multimédia appelée Archer, et nous utilisons Python pour de nombreux projets internes. Nous avons également ouvert quelques outils pour faciliter le développement / la distribution de projets Python, tels que setupmeta et pickley ».

Source : Medium

Et vous ?

Qu'en pensez-vous ?
Utilisez-vous aussi Python pour certain de vos projets ? Quelles sont les raisons de ce choix ?

Voir aussi

Python est sacré langage de programmation de l'année 2018 par l'index TIOBE, deviendra-t-il le langage le plus utilisé des programmeurs ?

IEEE : Python devient le meilleur langage en 2017 en dépassant C et Java, découvrez le classement complet selon divers critères

Python va supprimer les termes "master/slave" de sa documentation et sa base de code pour des raisons de diversité et leur connotation à l'esclavage

Un ingénieur en informatique de Netflix gagne plus de 300 000$ par année, pourquoi cette entreprise paie-t-elle plus que Google et Facebook ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de htoukour
Membre régulier https://www.developpez.com
Le 03/05/2019 à 15:01
En lisant cette article on se dirait que Netflix c'est du Python.
Avatar de r0d
Expert éminent https://www.developpez.com
Le 03/05/2019 à 17:44
Citation Envoyé par Bill Fassinou Voir le message
En début de cette année, Python est sacré langage de programmation de l'année 2018 par l'index TIOBE. Le langage est de plus en plus sollicité dans presque tous les domaines de la programmation allant de la programmation web au développement de l'intelligence artificielle. « De nos jours, c’est le premier langage le plus enseigné dans les universités. Il est numéro un dans le domaine statistique, numéro un en programmation d’IA, numéro un en rédaction de scripts et numéro un en tests de système d’écriture. En outre, Python est également un chef de file de la programmation Web et de l’informatique scientifique, etc. », a écrit TIOBE.
Je me permets de réagir ici dans le but de tempérer un peu ce panégyrique à la gloire du Python. Il faut savoir que derrière tous les modules stars du langage (numpy, scipy, XGBoost, etc.), et sans lesquels le Python ne serait pas réellement utilisable, se cache en fait du code compilé, écrit généralement en C, et parfois en C++.

Python est un excellent langage, je l'utilise régulièrement, et je fais souvent en sorte que les logiciels sur lesquels je travaille soient ouverts au scripting pyhton. Mais certains ont tendance à présenter Python comme le langage ultime qui va supplanter tous les autres, et c'est contre cette illusion que je dénonce ici. Sans l'utilisation des langages compilés, et notamment le C, le python serait beaucoup trop lent pour faire de l'AI, du data mining et autre.
Avatar de remi_inconnu
Membre du Club https://www.developpez.com
Le 04/05/2019 à 12:09
"Mais certains ont tendance à présenter Python comme le langage ultime qui va supplanter tous les autres, et c'est contre cette illusion que je dénonce ici. Sans l'utilisation des langages compilés, et notamment le C, le python serait beaucoup trop lent pour faire de l'AI, du data mining et autre."

Certes le C ou le C++ apporte un gain de puissance sur le langage python, mais le nombre de lignes qu'il te faut pour faire la même chose qu'en python est largement 10 à 20 fois supérieur. D'ailleurs les langages C/C++ sont souvent à la base de plein d'autres langages, voire aussi le compilateur C lui même écrit en C. Quand à sa lenteur, quand on code mal c'est lent, mais tu serai surpris de voir ce que l'on peut faire en pure python, je l'utilise professionnellement pour parser en temps réelle des logs, qui crache sur réseau a un débit soutenu, j'extrais, colorise, change le contenu en dynamique, et affiche, tout cela en temps réelle sans ralentissement. Ceci n'est possible cependant qu'après profiling du code python et optimisation. Si j'avais dû le coder en C ou c++, il m'aurait fallu un temps considérable en dev, et le résultat n'aurait probablement pas était plus performant, et pour optimiser du code C/C++, il te faut des outils costaud, pas toujours simple à mettre en oeuvre. Sans compter la portabilité, le même script tourne sans recompilation sur windows, osx, linux, raspberry. L'origine de la lenteur de python se situe souvent entre la chaise et le clavier.
Avatar de archqt
Membre confirmé https://www.developpez.com
Le 04/05/2019 à 21:32
Citation Envoyé par remi_inconnu Voir le message
"Mais certains ont tendance à présenter Python comme le langage ultime qui va supplanter tous les autres, et c'est contre cette illusion que je dénonce ici. Sans l'utilisation des langages compilés, et notamment le C, le python serait beaucoup trop lent pour faire de l'AI, du data mining et autre."

Certes le C ou le C++ apporte un gain de puissance sur le langage python, mais le nombre de lignes qu'il te faut pour faire la même chose qu'en python est largement 10 à 20 fois supérieur.
Je veux bien croire, puisque j'en fait aussi, que l'on gagne un peu en ligne de code. Sachant que les IDE mettent les {}...et en utilisant C++14 ou C++17 on a des syntaxes qui sont très compactes mais on gagne, aller je suis large, 40% de lignes en moins. On gagne surtout sur la compilation.

D'ailleurs les langages C/C++ sont souvent à la base de plein d'autres langages, voire aussi le compilateur C lui même écrit en C. Quand à sa lenteur, quand on code mal c'est lent, mais tu serai surpris de voir ce que l'on peut faire en pure python, je l'utilise professionnellement pour parser en temps réelle des logs, qui crache sur réseau a un débit soutenu, j'extrais, colorise, change le contenu en dynamique, et affiche, tout cela en temps réelle sans ralentissement. Ceci n'est possible cependant qu'après profiling du code python et optimisation. Si j'avais dû le coder en C ou c++, il m'aurait fallu un temps considérable en dev, et le résultat n'aurait probablement pas était plus performant, et pour optimiser du code C/C++, il te faut des outils costaud, pas toujours simple à mettre en oeuvre. Sans compter la portabilité, le même script tourne sans recompilation sur windows, osx, linux, raspberry. L'origine de la lenteur de python se situe souvent entre la chaise et le clavier.
Sauf que le code C++ aurait été bien plus rapide, et n'aurait pas demandé de faire du profiling système.
Sur la comparaison de différents algorithmes faits en python pur, https://programmation.developpez.com/actu/253829/Programmation-une-etude-revele-les-langages-les-plus-voraces-en-energie-Perl-Python-et-Ruby-en-tete-C-Rust-et-Cplusplus-les-langages-les-plus-verts/ python est 71 fois plus lent que le C.

Idem sur des benchmarks de framework en python (Django, Flask...) qui ne peuvent pas fournir 5% de réponses à des requêtes réseaux que les meilleurs frameworks faits en C.
Le python est "cool" quand tous les éléments consommateurs de ressources sont faits en un langage compilé sinon ça rame.

Je dis cela, et pourtant j'adore le python.
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 05/05/2019 à 16:06
Citation Envoyé par remi_inconnu Voir le message
..Certes le C ou le C++ apporte un gain de puissance sur le langage python, mais le nombre de lignes qu'il te faut pour faire la même chose qu'en python est largement 10 à 20 fois supérieur...
je ne connais pas Python, mais peux-tu m'expliquer ce qui permet à Python d'être 10 à 20 fois moins long que le C ? Je précise mon hypothèse de départ, Python possède un certain nombre de fonctions (j'imagine) qui n'ont pas forcément un équivalent direct en C...mais si je possède une bibliothèque C qui propose les mêmes fonctions - ce qui doit être disponible si Python est lui-même écrit en C - en quoi le code sera-t-il plus court ?

Merci
Avatar de archqt
Membre confirmé https://www.developpez.com
Le 05/05/2019 à 21:26
Citation Envoyé par Paul TOTH Voir le message
je ne connais pas Python, mais peux-tu m'expliquer ce qui permet à Python d'être 10 à 20 fois moins long que le C ? Je précise mon hypothèse de départ, Python possède un certain nombre de fonctions (j'imagine) qui n'ont pas forcément un équivalent direct en C...mais si je possède une bibliothèque C qui propose les mêmes fonctions - ce qui doit être disponible si Python est lui-même écrit en C - en quoi le code sera-t-il plus court ?

Merci
Je suis d'accord avec toi On ne fait pas beaucoup moins de lignes en python qu'en C+14 / C++17. Là ou il y a un peu de gains c'est que c'est interprété donc on peut tester plus facilement quelques lignes de codes rapidement. Après j'aimerais bien voir si quelqu'un utilise cling (interpréteur C/C++) pour éviter une compilation et ainsi avoir l'avantage d'un langage de script.
Avatar de Bubonik software
Membre régulier https://www.developpez.com
Le 11/05/2019 à 19:22
Ce que vous dites est vrai*: si vous utilisez de bonnes bibliothèques en C, vous pourrez écrire votre application avec un nombre de lignes de code beaucoup plus réduit… mais quand même pas aussi réduit qu’en Python car Python possède aussi des raccourcis syntaxiques très pratiques (à commencer par… les valeurs par défaut pour les arguments de fonctions, que je n’ai pas quand je fais du C).

Mon opinion sur le succès de Python est que ce langage est simplement très bien géré par la fondation Python, en particulier en ce qui concerne sa bibliothèque standard et son évolution. Il y a moins de choix de bibliothèques non standard, mais ce qui existe est d’assez bonne qualité*: les choix deviennent plus faciles. Oui, le langage lui-même est sympathique et bien fichu, mais il existe d’autres langages sympathiques et bien fichus sur le même créneau, et qui n’ont pas le même succès, selon moi parce que leurs écosystèmes sont moins abordables et plus fragmentés*: on a l’embarras du choix (on passe en revue les bibliothèques existantes, on leur trouve des défauts et des qualités qu’il faut pondérer, on finit par commencer à faire sa propre bibliothèque…).

Bien sûr, ce n’est pas la seule chose*: il y a évidemment une part de chance dans le succès actuel de Python.

@r0d*: oui, tu as entièrement raison. Cependant, on peut aussi dire que le Python pur repose sur du C (en fin de compte, le code machine exécuté est quasi-toujours issu de GCC et consorts*: la distribution standard de Python est elle-même programmée en C).
Le Python "pur" (c’est à dire sans bibliothèque externe en C autre que la bibliothèque standard) est certes très souvent lent par rapport à du C (et alloue des quantités de mémoire invraisemblables à fonctionnalité égale), mais justement, faire comme si les bibliothèques externes en C n’existaient pas n’a pas beaucoup de sens en pratique*: personne ne songerait à recoder TensorFlow ou Numpy en Python pur (en tout cas, pas pour mettre ce code en production ). Par contre, beaucoup de programmeurs utilisent TensorFlow avec Python et la "lenteur" de Python devient assez négligeable.

@remi_inconnu*: on peut faire pas mal de choses impressionnantes en Python pur, c’est vrai. Cependant, si on gère des milliers d’objets en mémoire (sur lesquels on boucle, on fait des filtres ou des transformations), on arrive facilement aux limites des classes en Python sur des ordinateurs un peu âgés, alors qu’en C (avec des structures classiques) ou en C++ (avec des classes), le même applicatif tournera sans qu’on ait besoin de racheter de RAM ou de changer de CPU. Si je préfère quand même faire ces programmes en Python, c’est parce que c’est souvent plus pratique à développer. Ça m’est déjà arrivé d’avoir ce problème de performance et, à l’époque, j’avais résolu ça en remplaçant mes instances de classe par des tuples ne contenant que des types de base (aujourd’hui, j’utiliserais sûrement des namedtuples à la place).
Contacter le responsable de la rubrique Python

Partenaire : Hébergement Web