netflix-iconoEl website de Netflix responde a más de 2 billones de consultas por día utilizando una arquitectura de despliegue basada en Java.

Permitiendo a sus suscriptores el control del contenido basado en sus preferencias hace de Netflix el líder en TV por internet. El modelo basado en la demanda de Netflix ya es muy bien conocido. Incluso muchos están cambiando los servicios de TV satelital y cable por este servicio basado en “Todo lo que puedas consumir”. Por un costo aproximado de $ 9 al mes, lo suscriptores de Netflix pueden visualizar películas y series en cualquier momento y lugar que ellos deseen, utilizando una conexión a internet. Se puede visualizar, hacer un alto o ver un resumen de la película, sin comerciales de por medio.

La escalabilidad innata de Java juega un rol importante permitiendo a Netflix expandir su servicio a más de 57 millones de suscriptores en más de 50 países. En forma colectiva Netflix proporciona más de 1 billon de horas de películas y series por mes, incluyendo series originales, documentales y características de las películas.

La mayor parte de los servicios y arquitectura están construidos con Java y la Java Virtual Machine” indica Andrew Glover, jefe de ingenieros de entrega de servicios en Netflix. “Netflix utiliza una arquitectura de Stateless (arquitectura sin estado), entonces a más miembros es fácil brindar más instancias en forma sencilla. Tenemos miles de procesadores Java ejecutándose al mismo tiempo, así al crecer no requerimos grandes cambios de infraestructura. Así mismo tenemos un gran número de herramientas de código abierto basados en Java, que hacen fácil monitorear, modernizar y escalar nuestros servicios”.

Como trabaja Netflix

Los suscriptores de Netflix pueden elegir el elemento de visualización, seleccionar y ver la película con algunos clics del control remoto o el mouse, pero no muchos se ponen a pensar en cuanto a la complejidad en software o hardware que hay detrás para enviar dicho contenido. Cuando visualiza una película, Netflix ejecuta alguno de los procesos Java para determinar quién eres, donde vives, si está al día en el pago y que tipo de dispositivo está utilizando. Luego la red de entrega determina el cache para el streaming, el buffer para la adecuada calidad de audio y video para su conexión. “Este tipo de orquestación de procesos se realiza gracias a un conjunto de herramientas de código abierto basado en Java” indica Glover.

Netflix guarda copias de las películas en Amazon Web Services y la nube Amazon Simple Storage Services. Cada película es guardada en más de 50 versiones basada en la resolución del video y la calidad de audio. Desde ahí es distribuido por redes de contenido como Akamai, Limeligth y Level3, los cuales alimentan a la red de proveedores de servicios locales y luego a los espectadores.

La arquitectura está basada en una tecnología SOA que administra aproximadamente 2 billones de consultas al día.

Entrega continua

Los ingenieros de Netflix se encuentran proporcionando mejoras y nuevas características en forma constante. De acuerdo a Glover, esta automatización del despliegue permite a los equipos de ingenieros de Netflix entregar, funcionalidades desde desarrollo y pruebas hacia el entorno de producción en forma estable. “El software de Netflix cambia un poco cada día” agrega Glover. “El entorno para entrega continua es un conducto para la velocidad y la innovación. No podemos darnos el lujo de decirle a nuestros suscriptores que regresen en tres horas cuando terminemos de realizar el despliegue”.

Los problemas de rendimiento pueden causar problemas de buffering para los espectadores, entonces Netflix utiliza su sistema de despliegue continuo para planificar el despliegue de acuerdo a las estadísticas de uso en cada región, así el despliegue se realiza fuera de las horas pico de uso. ”Uno de los indicadores del negocio es la calificación que tenemos de parte de nuestros espectadores, si el número de estrellas para el streaming disminuye, se lanza una alerta en forma inmediata” indica Glover.

Basado en Java

Netflix Open Connect incluye procesos Java que son instalados en centros de datos de terceros que gobiernan como el contenido es intercambiado, almacenado y reproducido. De acuerdo a Glover, estos servicios SOA incluye miles de instancias que se interconectan una con otra para ejecutar procesos de negocio. “Como Sun solía decir, ‘La red es la computadora’. Todo es hardware que se ejecuta con Linux Ubuntu y Java EE 7. Si un nodo falla, se puede ir a otro fácilmente”.

Mientras la infraestructura está basado en servidores Linux, la codificación del video se realiza en máquinas con Window, facilitado mediante un framework basado en Java. La portabilidad de Java entre diferentes plataformas permite esta flexibilidad, ahora y en el futuro. Esto también hace fácil encontrar ingenieros. “A la hora de reclutar, es fácil encontrar desarrolladores Java”. Glover indica “es fácil encontrar talentos pues no estamos utilizando una tecnología nueva o un lenguaje que solo algunos conocen”.

Para Glovers, Java 8 ha revolucionado Java, denominándolo “la versión más significativa de Java en los últimos 10 años”. Él especialmente resalta los métodos por defecto, las expresiones Lambda y el API java.util.stream, que permiten la programación funcional en los elementos stream, tal como la transformación de los collection en Hadoop MapReduce.

Netflix utiliza Spring Boot como la base de sus servicios SOA por que le ofrece escalabilidad y madurez sobre la JVM. “Netflix es un SOA gigante”, nos dice Glover. Java permite ambos flexibilidad y escalabilidad que Netflix necesita. “Nuestra infraestructura tecnológica no es una casa de naipes” concluye.


Este artículo fue obtenido de la revista Java Magazine edición de Abril, donde puede leer el artículo completo.

Caso: Netflix
Si te gusto, comparte ...Share on email
Email
Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
Linkedin
Share on google
Google
Etiquetado en:            

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook