Python en Netflix

  
3 de Abril de 2014   0  

Hace ya aproximadamente un año que Netflix escribió en su blog oficial sobre la manera en que usa Python en diferentes módulos de su infraestructura.

En esa entrada de blog publicada comentan  “… queremos destacar el uso de Python en Netflix”,  y continúan expresan que se le da libertad a sus programadores de elegir la tecnología más adecuada para su trabajo, y se han topado a que cada vez más, los programadores recurran a Python gracias a la riqueza y variedad de librerías que se pueden encontrar en ella, esto y mucho más han llevado a generalizar el uso de Python dentro de Netflix por lo cual ya se ha convertido en uno de los lenguajes más importantes en la organización.

Algunos de los módulos que utilizan Python se enlistan a continuación:

 

Alerting.

Su puerta de enlace central de alertas es una aplicación web RestFUL que utiliza Python para que cualquier proceso pueda enviar un aviso. Estas alertas son enviados por email, enviarlo a un sistema de notificación en la página de contacto de los ingenieros, eliminarlas si ya se ha alertado a alguien, o llevar a cabo las acciones de corrección automáticas. Se generan cientos de miles de alertas cada día y se manejan de manera automática todos los que sean posibles.

Chaos Gorilla

Se integra con Asgard y Edda, y permite simular la pérdida de disponibilidad de una zonan en una región dada.

Security Monkey

Este módulo está diseñado para realizar un seguimiento del historial de configuraciones y alertas de cambio en las políticas relacionadas con la seguridad de EC2, tales como seguridad en grupos, roles IAM, listas de control de acceso S3, entre otros. Esto permite que el equipo de Cloud Security esté feliz, ya que sin este módulo no hay manera de saber cuándo, o cómo se produjo un cambio en el environment.

Howler Monkey

Este módulo está diseñado para detectar automáticamente y realizar un seguimiento de los certificados SSL en los environments y nombres de dominio, sin importar en dónde residan, y alertar a medida que se acerca una fecha de expiración de un certificado SSL, con un flexible y poderoso mecanismo de suscripción y alertas. Es una herramienta simple que hace una gran diferencia para el equipo Netflix y sus decenas de certificados SSL.

Chronos

Cronos  reporta de forma automática al equipo Netflix  de los cambios realizados en su environment. Acepta eventos a través de una interfaz REST y permite que los humanos y las máquinas interactuen haciéndose preguntas como: “¿Que pasó en la última hora?” “¿Que software desplegamos en el último día ?”. Algunos de los tipos de cambios que reporta son: despliegues, tests AB, eventos de seguridad y otras acciones automáticas.

Aminator

Es la herramienta que hace el trabajo pesado en la producción de cada imagen AMAZON que refuerza el poder de Netflix. Animator asocia una imagen a una instancia EC2 que esté corriendo, instala los paquetes en la imagen, y pasa los resultados de la imágen a una aplicación completa en Netflix. Simple en concepto y ejecución, pero absolutamente vital para el éxito del equipo.

Cass Ops

Las operaciones Netflix Cassandra utilizan Python para las herramientas de automatización y monitoreo. El equipo ha creado varios módulos para administrar y mantener los clusters de Cassandra. Estos módulos utilizan apis REST para comunicarse con otras herramientas de Netflix para administrar las instancias dentro de AWS, assí como interactuar directamente con las mismas instancias de Cassandra. Estas actividades incluyen la creación de clusters utilizando Asgard, dar seguimiento al inventario con Edda, monitoreo Eureka para asegurarse de que los clusters son visibles para los clientes, Administrar las reparaciones de Cassandra y compactaciones, y realizar actualizaciones de software. El uso de Python en estas herramientas ha permitido desarrollar rápidamente y mejorar herramientas como Cassandra que ha crecido en Netflix.

Data Science and Engineering

El equipo de trabajo de Data Science e ingeniería depende mucho del uso de Python para ayudar a la penetración superficial de las enormes cantidades de datos generados por la organización. Python se usa en herramientas para el monitoreo de la calidad de los datos, gestión de movimientos de datos y sincronización, expresando la lógica de negocios dentro de los flujos de trabajo ETL así como correr varias aplicaciones web para visualizar los datos. Una de las aplicaciones que se utilizan es Sting, el cual está escrito completamente en Python, la cual hace que tenga buen uso de librerías como pandas y numpy para realizar operaciones rápidas de filtrado y agregación.

Como pudimos observar, el equipo de ingenieros ha realizado diversos módulos que han sabido aprovechar para que Netflix sea escalable y pueda tener la mayoría de sus procesos automatizados y reducir las cargas de trabajo. Si bien hace un año Netflix había alcanzado este potencial, no puedo imaginar qué tantos módulos más tendrá trabajando en su infraestructura actualmente.

Si deseas leer más sobre estos módulos te invito a leer la nota completa en el Blog de Netflix



Alex Dzul

FullStack Python / Django Developer. #jslove

Etiquetas

Temas relacionados