No hace mucho tiempo, House of Cards regresó para la quinta temporada, y finalmente terminó con una larga espera para los observadores de todo el mundo que están interesados en el despiadado ascenso de un político estadounidense a la presidencia. Para ellos, comenzar una maratón es tan simple como llegar a su dispositivo o control remoto, abrir la aplicación Netflix y presionar Play. Sencillo, rápido y gratificante al instante.
Lo que no es tan simple es lo que implica Netflix, un servicio que transmite alrededor de 250 millones de horas de video por día a alrededor de 98 millones de suscriptores que pagan en 190 países. A esta escala, no es una broma proporcionar entretenimiento de calidad en cuestión de unos pocos segundos a cada usuario. Y si bien significa construir una infraestructura de primera categoría a una escala que ningún otro servicio de Internet ha hecho antes, también significa que muchos participantes en la experiencia deben negociarse y mantenerse saciados, desde las compañías de producción que suministran el contenido hasta Los proveedores de Internet que se ocupan del tráfico de red que Netflix les ofrece.
Esto es, en resumen y en términos más simples, cómo funciona Netflix.
Cientos de microservicios, un servicio gigante.
Intentemos comprender cómo Netflix está estructurado en el aspecto tecnológico con un ejemplo simple.
Asumamos que asumimos que la aplicación Maps en su teléfono rastrea su ubicación todo el tiempo y guarda información compleja sobre todos los lugares en los que se encuentra en un archivo, locations.txt. Y termina creando una aplicación llamada LocoList, que, siempre que haya una aplicación Mapas en su teléfono, busque este archivo locations.txt y muestre todos los lugares registrados en ese archivo en una lista simple. Funciona a la perfección.
Ahora, solo digamos que los desarrolladores de la aplicación Maps se dan cuenta de que es una mejor idea almacenar toda la información de su ubicación en otro lugar que no sea en el archivo locations.txt, y actualiza la aplicación para que ya no cree ni almacene ese archivo en su teléfono. Y ahora, parece que LocoList no puede encontrar ese archivo locations.txt del que dependía para todos sus datos, y tampoco hay otra forma de extraer esa información de la aplicación Maps. LocoList ya no funciona. Estás en problemas.
Todo su trabajo en LocoList se ha ido a la basura porque se realizó un cambio en Maps que rompió su aplicación. Y si bien, puede que no parezca un gran problema aquí, en un servicio enorme como Netflix, la aplicación completa se desactiva porque un cambio realizado en una parte no solo puede arruinar la experiencia para los usuarios, sino que también significa que todas las otras partes de la aplicación deben volver a escribirse para adaptarse a ese pequeño cambio que realizó en una parte de la aplicación. Tal estructura es lo que llamamos una arquitectura monolítica.
Netflix literalmente marcó el comienzo de una revolución hace unos diez años al reescribir las aplicaciones que ejecutan todo el servicio para que se ajusten a la arquitectura de microservicios, lo que significa que cada aplicación, o el código y los recursos de microservicio son los suyos. No compartirá nada de eso con ninguna otra aplicación por naturaleza. Y cuando dos aplicaciones necesitan hablar entre ellas, usan una interfaz de programación de aplicaciones (API), un conjunto de reglas estrechamente controlado que ambos programas pueden manejar. Los desarrolladores ahora pueden realizar muchos cambios, pequeños o grandes, en cada aplicación, siempre y cuando se aseguren de que funcione bien con la API. Y como un programa conoce la API del otro correctamente, ningún cambio interrumpirá el intercambio de información.
Netflix estima que utiliza alrededor de 700 microservicios para controlar cada una de las muchas partes de lo que conforma todo el servicio de Netflix: un microservicio almacena lo que todos los programas que vio, uno deduce la tarifa mensual de su tarjeta de crédito, uno le proporciona a su dispositivo la información correcta. archivos de video que puede reproducir, uno mira su historial de visualización y utiliza algoritmos para adivinar una lista de películas que le gustarán, y uno proporcionará los nombres e imágenes de estas películas que se mostrarán en una lista en el menú principal. Y esa es la punta del iceberg. Los ingenieros de Netflix pueden realizar cambios en cualquier parte de la aplicación y pueden introducir nuevos cambios rápidamente, a la vez que se aseguran de que nada más en el servicio se rompa.
Para concluir, ¿por qué una arquitectura de microservicios es tan importante para Netflix? Bueno, esto es lo que lograron con solo elegir eso:
Pero... ¿Dónde se ejecutan todos estos microservicios?
Para ejecutar todo esto, necesita tener una red masiva de servidores de computadora, que Netflix alguna vez poseyó por su cuenta, pero se dieron cuenta de que el ritmo vertiginoso en el que crecían (y tenían que seguir haciéndolo) era difícil si dedicaban su tiempo construyendo sistemas informáticos que puedan admitir su software y seguir reparándolos y modificándolos para que se ajusten a sus necesidades. Tomaron la valiente decisión de deshacerse del mantenimiento de sus propios servidores y mover todo su material a la nube; es decir, ejecutan todo en los servidores de otra persona que se ocupó del mantenimiento del hardware, mientras que los ingenieros de Netflix escribieron cientos de programas y lo implementaron en los servidores rápidamente. La otra persona que eligieron para su infraestructura basada en la nube es Amazon Web Services (AWS).
Espere. ¿Amazon? ¿La gente que también corre Prime Video? ¿Cómo puede Netflix confiar todo lo que tienen a un archirrival?
Bueno, muchas empresas siguen un acuerdo de caballeros en el que trabajan juntas, a pesar de competir en las mismas categorías. Un buen ejemplo es cómo Samsung compite con Apple en los teléfonos y, al mismo tiempo, todas las partes principales del iPhone son fabricadas por el Gigante coreano. Netflix era un cliente de AWS antes de que apareciera Prime Video, pero esto no significa que sean hostiles entre sí.
Resulta que la asociación entre Netflix y Amazon resultó ser una gran situación de ganar-ganar para ambas compañías. Netflix se convirtió en el cliente más avanzado de AWS, y puso todas sus capacidades al máximo e innovando constantemente sobre cómo pueden usar los diferentes servidores que AWS proporcionó para diversos fines: ejecutar microservicios, almacenar películas, manejar el tráfico de Internet, propio apalancamiento. A su vez, AWS mejoró sus sistemas para permitir a Netflix llevar cargas masivas a sus servidores, además de hacer más flexible el uso de diferentes productos de AWS, y utilizó la experiencia obtenida para satisfacer las necesidades de miles de otros clientes corporativos. AWS se enorgullece de promocionar a Netflix como su principal cliente, y Netflix puede mejorar rápidamente sus servicios y, sin embargo, mantenerlo estable gracias a AWS. Incluso si Netflix quita la popularidad de Prime Video, o viceversa.
Del carrete a la pantalla - un largo viaje
¿De qué servirá cualquier servicio de TV / películas sin, por supuesto, programas de TV / películas para ver? Para Netflix, llevarlos del productor de la película al cliente es un proceso largo y arduo:
Si se trata de un programa/película que Netflix no produce por sí solo (es decir, no es un original de Netflix), tienen que negociar los derechos de transmisión con las compañías encargadas de distribuir películas o programas de televisión. Esto significa pagar una gran suma de dinero para obtener el derecho legal de transmitir una película o un programa de televisión a clientes en diversas regiones del mundo. Y a menudo puede ser que la compañía de distribución (o incluso Netflix) haya firmado acuerdos exclusivos con otros servicios de video o canales de TV para algunas regiones, lo que significa que Netflix no podrá ofrecer algunos programas a los clientes allí.
Almacenar la copia digital original del programa o la película en sus servidores de AWS. Las copias originales generalmente están en estándares de cine de alta calidad, y Netflix tendrá que procesarlas antes de que cualquiera pueda verlas.
Netflix funciona en miles de dispositivos, y cada uno de ellos reproduce un formato diferente de archivos de video y sonido. Otro conjunto de servidores de AWS toma este archivo de película original y lo convierte en cientos de archivos, cada uno destinado a reproducir todo el espectáculo o película en un tipo particular de dispositivo y un tamaño de pantalla o calidad de video en particular. Un archivo funcionará exclusivamente en el iPad, otro en un teléfono Android de alta definición, uno en un televisor Sony que puede reproducir video 4K y sonido Dolby, uno en una computadora con Windows, etc. Incluso más de estos archivos se pueden crear con diferentes calidades de video para que sean más fáciles de cargar en una conexión de red deficiente. Este es un proceso conocido como transcodificación. También se agrega una pieza especial de código a estos archivos para bloquearlos con lo que se denomina gestión de derechos digitales o DRM, una medida tecnológica que evita la piratería de películas.
La aplicación o el sitio web de Netflix determina qué dispositivo en particular está usando para ver la pelicula, y obtiene el archivo exacto para ese dispositivo en particular, con una calidad de video en particular basada en la velocidad de internet en ese momento.
La última parte acerca de la obtención de información es la más importante para Netflix aquí, porque después de todo, ahí es donde la red de Internet entrega el video desde los servidores de AWS de Netflix al dispositivo del cliente. Si está mal administrado o ignorado, significa un Netflix realmente lento o inutilizable y prácticamente el final para la empresa. Internet es el cordón umbilical que conecta Netflix con sus clientes, y les cuesta mucho entregar el contenido que el usuario desea, en el menor tiempo posible. En una red muy concurrida donde millones de servicios compiten por el espacio.
Carrera contra el tiempo de búfer
Toda la gama de operaciones que construyen el ecosistema de Netflix (software, contenido y tecnología) se vuelve inútil si la conexión a Internet del usuario final es demasiado deficiente para manejar la calidad del video. Así es cómo funciona básicamente todo en Internet: cuando hace algo que requiere acceso a la red, se envía una solicitud a su proveedor de servicios de Internet (ISP). El ISP lo reenvía a los servidores dedicados que manejan el sitio web, y los servidores proporcionan una respuesta que se retransmite a su computadora y forma el resultado. Para Netflix y otros sitios de primer nivel, donde se retransmiten millones de horas de contenido de video a través de Internet entre sus servidores y todos los usuarios, se necesita una red mucho más grande de servidores para mantener el rendimiento. Lo hacen construyendo algo llamado Red de entrega de contenido (CDN).
Básicamente, lo que hacen las CDN es tomar el sitio web original y el contenido multimedia que contiene y copiarlo en cientos de servidores repartidos por todo el mundo. Entonces, cuando, por ejemplo, inicie sesión desde Budapest, en lugar de conectarse al servidor principal de Netflix en los Estados Unidos, cargará una copia del mismo desde un servidor CDN que sea el más cercano a Budapest. Esto reduce en gran medida la latencia, el tiempo que transcurre entre una solicitud y una respuesta, y todo se carga muy rápido. Los CDN son la razón por la que los sitios web con una gran cantidad de usuarios como Google, Facebook o YouTube logran cargarse realmente rápido, independientemente de dónde se encuentre o cómo sea la velocidad de Internet.
Netflix anteriormente usó una variedad de redes CDN, operadas por gigantes como Akamai, Level 3 y Limelight Networks para entregar su contenido. Pero una base de usuarios en crecimiento significa que deben entregar una mayor cantidad de contenido en más ubicaciones al mismo tiempo que reducen los costos, y esto los llevó a crear su propio CDN, llamado Open Connect.
Aquí, en lugar de confiar en los servidores de AWS, Ellos se instalan en todo el mundo. Pero tiene un solo propósito: almacenar contenido de manera inteligente y entregarlo a los usuarios. Netflix logra acuerdos con proveedores de servicios de Internet y les proporciona la caja roja que vio arriba sin costo alguno. Los ISP los instalan junto con sus servidores. Estos cuadros de Open Connect descargan la biblioteca de Netflix para su región desde los servidores principales de los Estados Unidos; si hay varios de ellos, cada uno preferirá almacenar el contenido que es más popular entre los usuarios de Netflix en una región para priorizar la velocidad. Por lo tanto, una película rara vez vista puede llevar más tiempo en cargar que un episodio de Stranger Things. Ahora, cuando se conecte a Netflix, el cuadro de Open Connect más cercano a usted le entregará el contenido que necesita, por lo que los videos se cargan más rápido.
Considérelo como discos duros en todo el mundo que almacenan videos, y cuanto más cerca estén, más rápido podrá llegar a ellos y cargar el video. Cada vez que accedes a la reproducción de un programa, Netflix ubicará los 10 cuadros más cercanos de Open Connect que tienen el programa cargado. Tu aplicación/sitio de Netflix intentará detectar cuál de ellos es el más cercano o funciona más rápido en tu conexión a Internet y luego cargará el video desde allí. Esta es la razón por la que los videos comienzan borrosos pero luego se agudizan repentinamente, es decir que, los servidores de conmutación de Netflix se conectan con el que le dará la mejor calidad de video.
waooooooooooooooooooooooooooooooooo