En este post veremos un poco de las principales características referente a retos que diariamente enfrente la plataforma de Netflix, al brindar servicios a una gran cantidad de usuarios, y más aún cuando para ello requiere manejar una gran cantidad de datos para ello, pues se trata de servicios de video streaming (OTT TV), cuya arquitectura de red esta basada en servicios de nube.
RETOS DE LA PLATAFORMA
La Escala: Netflix atiende 130 millones de suscriptores en más de 190 países, esto la convierte en la plataforma de transmisión que procesa trillones de eventos y petabytes de información a diario con la finalidad de satisfacer las necesidades de su negocio de OTT TV de streaming.
Servicio de enrutamiento Keystone: Este servicio es responsable de enrrutar cualquier evento requerido por el usuario, dependiendo de la configuración de su perfil. Cada ruta de entrega se realiza mediante un tratamiento y procesamiento específico al flujo de datos.
Procesamiento de flujos (SPaaS): Esta plataforma solo tiene un año de operación, sin embargo demostró interesantes desarrollos en materia de ingeniería.
- Trabajos en paralelos con múltiples etapas de mezcla y lógica.
- El patrón de tráfico varía significativamente dependiendo del uso.
- Casos que requieren una latencia baja de recuperación.
Elasticidad: Aunque la mayoría de las transmisiones tienen un patrón de tráfico fijo, se diseña el sistema para soportar cambios repentinos (picos debidos a espectáculos populares o escenarios de fallos inesperados).
Responsivo basado en nube: Netflix opera sus microservicios completamente en la nube. Por ello, debido a las características cambiantes y alta probabilidad de fallo de la nube, su sistema requiere monitoreo, detección y tolerancia a fallas de red, congestión , hasta fallas en desastres naturales, etc.
PRINCIPIOS DE DISEÑO DE LA PLATAFORMA
1. HABILITACIÓN
Uno de los objetivos de la plataforma que maneja Netflix es permitir que los equipos de trabajo se centren en la lógica empresarial, facilitando la implementación y la operación tecnológica de la plataforma. Al tener una plataforma que abstraer el «trabajo complicado», genera una mayor agilidad del equipo y la innovación de productos dentro de su linea de negocio que es el video streaming (OTT TV).
Gracias a este esquema de trabajo, los equipos de estrategia de negocio pueden:
- Descubrir y experimentar rápidamente soluciones basadas en datos, orientados a innovación,
- Obtener información sobre el rendimiento, costo, y estados del ciclo de vida de un proyecto, y de esta forma tomar decisiones en tiempo real,
- Proporcionar herramientas para que los equipos de estrategia de negocio puedan autoproveerse de recursos.
2. PERSONALIZACIÓN DE COMPENSACIONES
Cualquier sistema distribuido complejo trae de manera inherente con ciertas limitaciones, por lo tanto, los diseños de dicho sistema deben tener en cuenta varias compensaciones, es decir, la posibilidad de sopesar por ejemplo latencia versus reenvios, consistencia versus disponibilidad, orden estricto versus orden aleatorio, etc. Ciertos casos de uso pueden requerir diferentes combinaciones para estas compensaciones, por lo que es esencial que la plataforma exponga, de manera sencilla, la capacidad para que se personalicen estos requerimientos.
3. UN LUGAR PRIVILEGIADO PARA LAS FALLAS
Las fallas son inherentes a cualquier sistema distribuido a gran escala, especialmente en un entorno de nube. Cualquier sistema nativo en nube diseñado correctamente debe tratar las fallas como un visitante privilegiado dispuesto a estar presente siempre.
Aquí hay algunos aspectos importantes que se consideran referente al manejo de las fallas:
- Asumir una red poco confiable,
- Diseñar capacidades de recuperación automática,
- Imponer el aislamiento de trabajo para múltiples usuarios, especialmente ante fallas,
- Reducir el radio de explosión cuando surja la falla.
4. SEPARACIÓN DE INTERESES
- Entre usuarios y plataforma: el usuario debe poder declarar el objetivo a través de la interfaz de usuario. Los estados del objetivo se almacenan en una única fuente de almacenamiento, la ejecución real para pasar del «estado actual» al «estado objetivo» se maneja mediante el flujo de trabajo de la plataforma sin interacción con los usuarios.
- Entre el plano de control y el plano de datos: el plano de control es responsable de la gestión de los flujos de trabajo, mientras que el plano de datos hace el trabajo pesado para asegurarse de que los eventos culminen exitosamente.
- Infraestructura de tiempo de ejecución: los trabajos de procesamiento de flujo se implementan en el servicio de tiempo de ejecución «Netflix Titus Container» de código abierto, este servicio proporciona aprovisionamiento, programación, aislamientos de nivel de recursos (CPU, red, memoria), redes avanzadas, etc.
Fuentes: The Netflix Tech Blog