El gigante de streaming Netflix ha revelado cómo está aprovechando al máximo el versátil lenguaje de programación Python.
La compañía ha detallado las formas en que usa Python, uno de los lenguajes de más rápido crecimiento en el mundo, para todo, desde la administración y el análisis de operaciones hasta la seguridad y la creación de redes.
Netflix se basa en una combinación de paquetes conocidos y bibliotecas de software internas, y Python aparentemente se usa en casi todos los rincones del negocio, que se ejecuta principalmente en la plataforma en la nube de Amazon Web Services (AWS).
“Usamos Python durante todo el ciclo de vida del contenido, desde decidir qué contenido financiar hasta operar la CDN que sirve el vídeo final a 148 millones de miembros”
Ingenieros de Netflix en una publicación de blog.
Así es como Netflix usa Python.
Operaciones
El equipo de ingeniería de demanda de Neftlix crea resistencia en la red al proporcionar conmutaciones por error regionales y organizar la distribución del tráfico de Netflix.
“Estamos orgullosos de decir que las herramientas de nuestro equipo están construidas principalmente en Python”, escribe el equipo.
«La capacidad de acceder a un shell de bpython e improvisar ha salvado el día más de una vez».
Las herramientas utilizadas por el equipo incluyen:
- NumPy y SciPy para realizar análisis numéricos
- Boto3 para realizar cambios en la infraestructura de AWS
- rq para ejecutar cargas de trabajo asincrónicas
- Las API de Flask se utilizan como contenedor de las herramientas de orquestación anteriores.
- Los cuadernos Jupyter y nteract se utilizan para analizar datos operativos y crear prototipos de herramientas de visualización. Neflix utiliza Python para crear extensiones personalizadas para el servidor Jupyter que permiten a los ingenieros administrar tareas como el registro, el archivo, la publicación y la clonación de cuadernos.
Mientras tanto, el equipo de orquestación de big data proporciona servicios y herramientas para programar y ejecutar ETL (Extraer, Transformar, Cargar / Extract, Transform, Load) de datos y canalizaciones de datos ad hoc.
El equipo utiliza cuadernos Jupyter con papermill para permitir que el programador proporcione tipos de trabajo basados en plantillas, por ejemplo, Spark.
También se utiliza pygenie, un cliente creado por Netflix que interactúa con Genie, un servicio de ejecución de trabajos federado.
Análisis Estadístico
El equipo CORE de Netflix utiliza muchas bibliotecas estadísticas y matemáticas de Python, incluidas NumPy, SciPy, ruptures, y Pandas,, que ayudan a analizar miles de señales después de una alerta.
Python también se ha utilizado para desarrollar un sistema de correlación de series de tiempo, así como un sistema de trabajo distribuido para paralelizar grandes cargas de trabajo analíticas.
Además de eso, Python también se usa típicamente para tareas de automatización, exploración y limpieza de datos y visualización.
Monitoreo y Respuesta Automatizada
El equipo de Ingeniería de información de Netflix es responsable de construir y operar las herramientas para generar alertas, diagnósticos y remediación automática.
Ahora admiten clientes de Python para la mayoría de sus servicios, incluida la biblioteca cliente de Spectator Python, una biblioteca para registrar métricas dimensionales de series de tiempo.
Los marcos de Python Gunicorn, Flask, Flask-RESTPlus también se utilizaron para crear las plataformas de diagnóstico y remediación Winston y Bolt de Netflix.
Seguridad
El equipo de seguridad de la información de Netflix utiliza Python para una amplia variedad de tareas, incluida la automatización de la seguridad, la clasificación de riesgos, la reparación automática y la identificación de vulnerabilidades.
Los proyectos de Python incluyen:
- Security Monkey: una biblioteca de Netflix de código abierto para monitorear AWS, Google Cloud Platform, OpenStack y GitHub para detectar cambios en los activos.
- La autoridad de certificación SSH Bless para proteger los recursos SSH.
- Repokid permite que Python se utilice para ayudar con el ajuste de permisos de IAM (administración de identidades y accesos).
- Lemur se utiliza para ayudar a generar certificados TLS y Netflix también utiliza la herramienta de triaje forense Diffy, que construyó completamente con Python.
Aprendizaje Automático
Netflix se basa ampliamente en Python al entrenar modelos de aprendizaje automático que utiliza para todo, desde algoritmos de recomendación hasta personalización de obras de arte y algoritmos de marketing.
Algunos algoritmos utilizan TensorFlow, Keras, y PyTorch al entrenar redes neuronales profundas, mientras que XGBoost y LightGBM se utilizan para construir árboles de decisión potenciados por gradiente.
Netflix también utiliza la pila científica más amplia en Python, como NumPy, SciPy, scikit-learn, Matplotlib, Pandas y cvxpy.
Metaflow, un marco de Python que facilita la ejecución de proyectos de ML desde la etapa de prototipo hasta la producción, se utiliza en toda la empresa a escala. Con Metaflow, Netflix se basa en código Python bien paralelizado y optimizado para obtener datos a 10 Gbps, manejar cientos de millones de puntos de datos en la memoria y orquestar la computación en decenas de miles de núcleos de CPU.
Los cuadernos Jupyter también se utilizan para trabajar en nuevos experimentos.
Experimentación
El equipo de computación científica de Netflix para experimentación proporciona una plataforma para que científicos e ingenieros analicen pruebas AB y otros experimentos.
Entre los marcos de Python que utilizan se encuentran:
- Metrics Repo, un marco de Python basado en PyPika que permite a los usuarios escribir consultas SQL parametrizadas y reutilizables.
- La biblioteca de modelos causales, un marco de Python y R, que utiliza PyArrow y RPy2, y permite a los científicos contribuir con nuevos modelos para la inferencia causal.
Mientras tanto, la biblioteca de visualizaciones de Netflix se basa en Plotly.
Codificación de Vídeo y Análisis de Contenido Automatizado
Netflix tiene un equipo dedicado a codificar el catálogo de Netflix y utilizar el aprendizaje automático para analizarlo, por ejemplo, para extraer las mejores imágenes fijas de una película.
Entre los alrededor de 50 proyectos donde se utiliza Python se encuentran la biblioteca de evaluación de calidad de vídeo vmaf y la biblioteca mezzfs para montar contenido desde el almacenamiento de objetos en la nube como archivos locales.