¿Por qué un solo sitio web como Netflix necesita cientos de desarrolladores?

En el mundo real, hay algo así como tres cubos en los que puede colocar proyectos web. (Descargo de responsabilidad: probablemente hay más cubos, pero esto hace una mejor explicación)

Primero, tiene pequeños sitios web y pequeños proyectos que nunca reciben tráfico o tracción más allá de unos pocos cientos o miles de usuarios. Por lo general, se pueden manejar con una sola instancia de Heroku, un pequeño servidor que se ejecuta en Digital Ocean, o incluso algo de alojamiento compartido como BlueHost o algo así si es algo pequeño como un pequeño blog de WordPress o sitio web de negocios.

Los sitios pequeños generalmente necesitan un desarrollador y no siempre a tiempo completo. En algunos casos, se necesita un pequeño equipo de tres o cuatro desarrolladores, pero en esos casos es porque hay mucha más funcionalidad y dinero detrás del proyecto que los usuarios.

En segundo lugar, tiene sitios web de medianos a grandes con mucho uso, pero crucialmente, sin mucho crecimiento. En este escenario, podría ser necesario un equipo de cinco o diez desarrolladores, y lo más importante, se necesita una cantidad relativamente pequeña y estable de infraestructura. Como en el caso, tal vez necesite cinco o diez servidores, pero el crecimiento es pequeño y lo suficientemente predecible como para planificar las necesidades de infraestructura en un ciclo de 1 a 3 años.

El crecimiento lento y predecible significa que es fácil de administrar con recursos relativamente pequeños y predecibles.

En tercer lugar, tienes sitios web que crecen y crecen y crecen. Pueden comenzar de a poco, pero se duplican (o más) cada año. Esto crea la necesidad de cientos de desarrolladores por una razón muy simple …

El crecimiento exponencial abruma a los equipos pequeños.

Puede ser muy difícil escalar a suficientes servidores lo suficientemente rápido y de manera rentable, incluso con herramientas como AWS o Azure a sus espaldas. No es tan simple como simplemente agregar más instancias de servidores web o almacenamiento en caché.

En términos prácticos, no se trata de tráfico que crece con el tiempo, las características crecen a un ritmo similar y las personas de ventas / marketing exigirán nuevas cosas para vender de forma continua.

Se llama Software Gravity y The Katamari Damacy Effect.

Por ejemplo, Netflix solía ser un servicio de alquiler de DVD. Tenían una infraestructura de software completa construida alrededor de una biblioteca de alquiler de DVD que se conectaba a algún tipo de centros de distribución que enviaban sobres de DVD. Hay una base de código completa en Netflix de probablemente un millón de líneas de código (me imagino) solo para asegurar que todo el proceso de envío y recepción de DVD funcionó de manera confiable y manejó todos los casos de esquina.

En un momento, Netflix entró en el juego de transmisión web y creó una base de código completamente nueva en torno a la transmisión web. Creo que se creó en Microsoft Silverlight en los primeros días, por lo que creo que es un montón de código C #. Solo tenía que funcionar en la web y solo unos pocos navegadores.

Luego, Netflix construyó Roku (aunque se llamaba de otra manera). Y tuvieron que construir el código para hacer funcionar un decodificador de streaming. Y luego Netflix desechó la idea de tener sus propias cajas de transmisión y, en cambio, estaría EN TODAS PARTES.

Así que ahora, Netflix está disponible en reproductores Blu-ray, cajas de roku, decodificadores de Android como Fire TV, Chromecast streaming, iOS, Apple TV, Android, la web, transmisión en realidad virtual, y Dios mío, ni siquiera estoy seguro de qué de lo contrario, pero apuesto a que una vez que lleguemos a Marte, Netflix estará allí.

Por lo tanto, Netflix tiene necesidades de crecimiento compuesto tanto en el lado de la infraestructura como en el lado de las características. Incluso equipos relativamente eficientes de 10-20 por proyecto podrían consumir fácilmente unos pocos cientos de desarrolladores.

Ni siquiera mencionemos el hecho de que algo como Salesforce se está ejecutando en Netflix, por lo que probablemente haya equipos para modificar y generar informes sobre los sistemas internos, equipos que crean cosas para administrar análisis, big data, otros informes, herramientas para soporte al cliente, y probablemente software para respaldar los diversos esfuerzos de ventas y marketing en curso.

Ah, y probablemente haya un personal separado de I + D dedicado a “lo siguiente”, como transmisión 4k, realidad virtual, realidad aumentada y más. Ah, y una cierta cantidad de desarrollo de software para cualquier empresa conjunta o asociación que hagan.

Además, Netflix incluso tiene su propio hardware de servidor para que lo instalen las compañías de banda ancha, de modo que reduce los costos de transmisión.

A la escala de Netflix, se necesita un pequeño ejército para mantener los trenes funcionando a tiempo para hablar así.

¿Mencioné que todavía tienen un negocio de alquiler de DVD?

Entonces, así es como las empresas como Netflix logran tener cientos de desarrolladores.

-Brian

PD: También podrías disfrutar de mi otro escrito …

En Inwedo, a todos nos gustó la respuesta de Sean Grogg a una pregunta similar aquí:

Mirar desde afuera parece un tanto atroz. Hay personas que realizan aplicaciones increíbles solo, en un sótano, sin pagar y, sin embargo, obtienes unos cientos de ingenieros y obtienes … bueno … para seguir usando Twitter. Entonces, ¿qué da?

Oh … hola mundo
Crear una aplicación increíble es bastante sencillo hasta que cumpla con lo que probablemente sea su primer obstáculo real: la multitud de usuarios que aprovechan su aplicación. La mayoría de los desarrolladores en solitario se implementan en servidores individuales (incluso, y me estremezco , servidores compartidos ) sin pruebas (¡es una pena!) Y tienden a tener la experiencia de DevOps suficiente para identificar Stack Exchange como su equivalente en Linux de Stack Overflow. Cuando encuentran su primer error paralizante de aplicaciones, su aplicación deja de funcionar y, a menudo, ni siquiera saben por qué .

Si compañías como Twitter, Facebook, Google, etc., cayeron por períodos de tiempo y la compañía ni siquiera sabía cómo evitar que ocurriera en el futuro , probablemente no durarían tanto. Desafortunadamente, a los desarrolladores a menudo se les enseña cómo introducir una lógica paralizante en su aplicación mucho antes de que se les enseñe a implementar procedimientos de prueba para atraparlos antes de que lleguen a un entorno de producción. Además, incluso un buen ingeniero de software puede carecer de experiencia DevOps y ser incapaz de construir una infraestructura que permita escalar su aplicación.

El ramen no es una buena fuente de nutrientes.
Finalmente, la dura verdad se establece … realmente necesitas comida para vivir. El problema es que todavía no puedes esperar vivir de tu aplicación. Es posible que tenga alrededor de mil usuarios y se las arregló para buscar un amigo que lo ayude a saber tanto sobre Linux como Angular. Pero necesitas dinero. Si le preguntaras a todos los que usan tu aplicación por $ 5 por mes, ganarías ~ $ 5,000 ($ 2,500 después de dividirlo con tu amigo, porque eres legítimo).

Pero seamos realistas: muchos de los usuarios se irían si requiriera el pago por el servicio e incluso si la mayoría de ellos se quedaran, se enfrentaría a la dura realidad de los impuestos que le quitarían una gran parte de eso al final del año. Además, a menos que estructura una LLC o Corporación, todos sus activos personales están en riesgo. Incluso si ese sofá es horrible, es mejor que la bancarrota. En este punto, la mayoría de las personas tienen que lidiar con la posibilidad de trabajar en su aplicación como un pasatiempo y conseguir un trabajo diario o ponerse serio y comenzar un negocio .

Ser dueño de un negocio
Así que ahora eres dueño de un negocio (porque estamos hablando de Facebook y Twitter, aquí). Se las arregló para obtener algo de fondos (por suerte, su tía era amiga de la esposa de un VC a quien podría convencer, a regañadientes , de escuchar su discurso y darle una miseria de unos cientos de miles) y le dieron suficiente dinero para pagar comida de personas reales. Desafortunadamente, parte de eso se perdió en honorarios legales y contables, pero bueno, no puedo ganarlos a todos.

Pero ahora está pasando una gran cantidad de tiempo lidiando con minucias administrativas, marcando las casillas y saltando a través de los aros requeridos por el gobierno. Te las arreglaste para discutir con algunas personas que tus amigos dijeron que sabían codificar; no está completamente seguro de creer que saben la diferencia entre $ emit y $ broadcast, pero podría convencerse de que no acepten prácticamente ningún salario aceptando acciones. Todavía estás codificando, pero ahora tienes que lidiar con el control de versiones, fusionar conflictos y preguntarte qué demonios están haciendo esas tres funciones no comentadas con nombres extraños . En serio, ¿quién nombra su función getRektKid ? Lo que sea, las características están saliendo y estás obteniendo más usuarios.

Sirviendo a millones
Finalmente, has alcanzado un millón de usuarios. Organizas una fiesta para tu pequeña empresa; ahora está administrando cuatro equipos de programadores (cada uno de los cuales cuenta con cinco miembros) que poseen características propias; escriben el código, las pruebas, implementan seguridad, registran errores … todas las cosas en las que ni siquiera pensaba cuando programaba.

Oh sí, dejaste de hacerlo hace un tiempo. Bueno … de vez en cuando miras a través de los registros de Git, tal vez te diviertas entendiendo todo lo que está sucediendo desde que hiciste que el equipo refactorizara para reaccionar, pero luego te recordó sobre otra reunión para asistir con uno de tus desarrolladores, tus accionistas o algunos reportero que quiere preguntar sobre su historia de éxito. Entre todo esto, pasas tu tiempo enfocándote en cómo hacer el mejor negocio posible. Y ahí es cuando te golpea: una nueva característica que es tan radical para todo el concepto de tu negocio que cambiará la escena por completo.

No solo inventar, innovar
Por ahora, básicamente no puedes programar. Usted se mantiene al tanto de la programación desde un punto de vista conceptual , eligiendo nuevos marcos y bibliotecas como sus asesores técnicos (que fueron, ellos mismos, programadores antes de llegar a la gestión y luego comenzaron a consultar más que la programación). Tiene un sistema distribuido que funciona en todo el mundo; tiene servidores en varios países y cuenta con equipos de traducción que se aseguran de que su aplicación no sea víctima de “Todas sus bases nos pertenecen”.

Tienes cientos de programadores trabajando en un momento dado; mientras que la mayoría se enfoca en crear nuevas funciones para apaciguar a sus usuarios, accionistas, etc., también tiene otros equipos; varios están desarrollando herramientas internas que aumentarán la eficiencia operativa, otros están trabajando en la refactorización de las buenas herramientas de hace dos años en código fuente abierto, usted tiene un equipo dedicado a entrevistar a posibles contrataciones (que a menudo han usado sus herramientas de código abierto), muchas esos programadores son gerentes que escriben menos código y pasan más tiempo administrando otros programadores, y todavía hay otros que están vinculados a la administración de recursos para garantizar que su aplicación se mantenga en el mágico 99.9% de tiempo de actividad.

Hay una anomalía básica en el enfoque del interrogador: la cantidad de desarrolladores no está vinculada a la cantidad de sitios web, sino más bien a la cantidad y la fuerza de las funcionalidades y la cantidad de visitantes que el sitio puede alcanzar.

Netflix tiene más de 90 millones de espectadores que pagan (ref) y las características para las que tiene un equipo dedicado son las siguientes:

  1. Tecnología de transmisión de video
  2. Codificación
  3. Reproductor de video
  4. Personalizaciones en Player
  5. Servidor + gestión de CDN
  6. Android, iOS diferentes aplicaciones
  7. Personalización
  8. Analítica
  9. Apoyo
  10. DRM – Protección contra la piratería
  11. Retrocesos en caso de falla del servidor
  12. Pasarela de pago
  13. Aprendizaje automático

Entonces, si ve de esta manera en términos de una primera categorización y número de espectadores, se convierte en muchos campos. Cada uno de este campo tiene su subdivisión para atender el desarrollo de productos. Esto requiere grandes esfuerzos.

Para las pequeñas empresas que buscan comenzar con una tecnología de transmisión de alta seguridad y confiable tercerizada, pueden echar un vistazo a mi empresa VdoCipher.

Si eres un geek curioso al que le gustaría saber en profundidad cómo evolucionó Netflix su tecnología, su negocio y qué tan bien comprende + monetiza las necesidades del consumidor, entonces puedes echar un vistazo a la historia de crecimiento de Netflix aquí.

¿Sabes lo que es esto?

Este es un lector de RSS a escala de Netflix.

Me pregunto si ha usado Amazon Web Services anteriormente y me pregunto si sabe cómo surgió. AWS surgió porque Amazon necesitaba mucha más potencia de procesamiento para su sitio web y motor de recomendación en su único día pico (el Viernes Negro), que pudieron crear un servicio masivo basado en su exceso de potencia de procesamiento cada dos días del año.

El servicio de recomendación de Amazon es fenomenal, pero está muy asistido por su consulta de búsqueda. ¿Sabes qué servicio tiene un servicio de recomendación tanto MÁS fenomenal que casi NUNCA usarías la barra de búsqueda?

Netflix

Cuando estaba trabajando en arquitectura de datos en el Banco de Desarrollo de Singapur, cuando queríamos saber cómo construir una arquitectura de análisis de datos a escala, volamos el CTO de Netflix a Singapur para preguntarles. Es un vuelo de 16.5h, casi exactamente en todo el mundo, pero sabíamos que estábamos hablando con los mejores.

Netflix era el mayor usuario de Cassandra DB del mundo. Estaba. También fueron probablemente la primera compañía en superarlo.

Lo mismo puede decirse de Hadoop, donde sus propias herramientas como Genie son líderes del mercado.

Finalmente, quiero mencionar algo que no es directamente relevante. Los ingenieros aman a Netflix y Netflix ama a los ingenieros. Todo lo que Netflix usa en producción está profundamente documentado y disponible en github para cualquiera. Eso solo habla directamente al corazón del ingeniero. Lea más en Netflix TechBlog

Llamar a Netflix un sitio web es una simplificación excesiva engañosa. (Un sitio web estático, incluso “a escala de Netflix”, se puede ejecutar desde una PC de quince años en una conexión de internet residencial, si es lo suficientemente pequeño).

Una mejor manera de pensar en Netflix es como una amplia gama de servicios en su mayoría no relacionados que son accesibles a través de una interfaz web. La mayoría de los usuarios no usan la interfaz web (en lugar de ejecutar una aplicación en su teléfono, consola de juegos o televisor inteligente), y la mayoría de la interfaz web no es realmente una interfaz web (sino un programa que se ejecuta en Silverlight). Aun así, muy poca de la complejidad que ocurre detrás de escena en Netflix es vista por usuarios ocasionales o entregada a sus máquinas.

Primero, Netflix ofrece video. El video es grande, lo que significa que una plataforma confiable de entrega de video debe tener una redundancia masiva y un buen equilibrio de carga, los cuales son difíciles de hacer bien. Netflix no entrega video en un solo fragmento: sí transmite video, que (a pesar de tener varios beneficios como poder cambiar entre servidores en el backend en medio de la reproducción, así poder cortar el video en un mayor número de trozos más pequeños y distribuirlos de manera más uniforme) es aún más difícil de hacer bien: después de todo, significa que, en lugar de almacenar el video completo, tienes un buffer mucho más pequeño y determinar el tamaño apropiado de ese buffer (para que no enviar demasiado demasiado temprano y desperdiciar ancho de banda, pero tampoco enviar muy poco e inducir demoras de almacenamiento en búfer) es en sí muy complicado. Netflix almacena múltiples copias de cada video con diferentes niveles de compresión, para que las personas con conexiones rápidas puedan ver videos de alta calidad y las personas con conexiones lentas se degraden a videos menos bonitos que todavía se reproducen a la velocidad correcta (y esto necesita hacerse dinámicamente porque las velocidades de conexión de las personas a menudo cambian espontáneamente en respuesta a la carga).

En segundo lugar, el video que ofrece Netflix tiene DRM. DRM es complicado: hay más personas inteligentes con un montón de tiempo libre en sus manos tratando de descubrir cómo romper el DRM de Netflix por patadas de lo que Netflix podría permitirse contratar, por lo que para que el DRM sea efectivo, Netflix necesita contratar personas para básicamente inventar continuamente formas cada vez más inteligentes de asegurarse de que las personas no puedan copiar los videos que pagaron. No importa si esta es una buena inversión o no, ya que los estudios de cine a menudo lo dictan.

Tercero, el producto principal de Netflix ni siquiera es video: en cambio, son recomendaciones de video. Básicamente están en el mismo negocio que Amazon y Google: un intermediario sentado entre un usuario y algún contenido, que recibe pequeñas cantidades de efectivo de ambos lados a cambio de constantemente hacer sugerencias mejores que el azar. Si bien los motores de recomendación simples son sencillos, Netflix invierte mucho dinero para hacer que sus motores de recomendación sean un poco mejores (de la misma manera que lo hace Google para la orientación de anuncios) porque cada pequeño aumento en la calidad de las recomendaciones significa un aumento mucho mayor en sus propias ganancias.

Cuarto, Netflix gana mucho dinero extrayendo datos de visualización y convirtiéndolos en nuevos programas. A veces, los espectáculos son propios o financiados por ellos (con House of Cards y Stranger Things como buenos ejemplos); otras veces compran franquicias existentes para reiniciar o continuar (Fuller House), mantener a los directores en el personal y pagarles para continuar creando contenido (Adam Sandler), o venden sus ideas a las salas de cine B (como con producciones de Asylum como Sharknado). Obtener predicciones significativas de los datos del espectador es difícil (mientras que obtener conexiones sin sentido es fácil), pero cada vez que dicha predicción es exitosa, Netflix gana suscriptores y sobornos de la casa de producción, junto con muchos más datos del espectador. Mucho de esto apunta al extremo inferior, observadores casuales que en su mayoría están viendo basura, porque esa es la mayoría de los espectadores y porque el presupuesto requerido es bajo, pero a escala todavía importa mucho, por lo que gastar mucho dinero en la contratación de estadísticos inteligentes tiene sentido.

Quinto, debido a que Netflix es grande y tiene mucha maquinaria complicada, y porque la confiabilidad es realmente importante para la experiencia del usuario (si Netflix fuera tan poco confiable como Funimation o Crackle, pocas personas pagarían por ello), contratan ingenieros de seguridad y confiabilidad y crean un Infraestructura complicada para monitorear servicios, reparar servicios rotos, redirigir problemas sin problemas y realizar pruebas. Algunas de las herramientas de prueba enfatizan activamente el resto del sistema (como Chaos Monkey, que mata servicios al azar en la producción para garantizar que los mecanismos para eludir los servicios muertos sean confiables).

Sexto, debido a que el catálogo de Netflix es enorme y cambia constantemente, hay una carga mucho mayor en todos estos servicios debido a la escala de solo los posibles videos. Las predicciones deben tener en cuenta no solo todos los videos que están disponibles actualmente que un usuario vio, sino todos los videos que desde entonces se han desconectado del servicio que vio un usuario, y todos los videos que no vio que pudo haber visto (en en caso de que una predicción basada solo en aspectos positivos se pierda algo que está evitando sistemáticamente y se lo siga recomendando, lo que lo molesta para que abandone su suscripción).

Nada de lo que he mencionado es parte del front-end visible para los usuarios, aunque informa qué contenido está disponible desde ese front-end. En comparación con cualquiera de estas cosas, el front-end es fácil (aunque Netflix es lo suficientemente grande como para que, como Google, probablemente científicamente A / B pruebe cambios menores en la interfaz de usuario para determinar qué mejora la usabilidad en usuarios reales, a través de mediciones indirectas, que requiere un gran equipo de estadísticos para hacerlo de manera confiable). Pero es una pequeña fracción de la infraestructura de Netflix, y no donde la mayoría de los desarrolladores están empleados.

Como se dijo en la respuesta de Robin Thomas, Netflix no es solo la interfaz de usuario (la apariencia) que vemos.

Algunos de esos factores importantes son:

  1. API del lado del servidor: el lugar de donde proviene todo
  2. Gestión de bases de datos: donde todo se almacena y recupera de
  3. Interfaz de usuario y experiencia de usuario: lo único que se ve
  4. Control de versiones: para coordinar entre diferentes equipos
  5. Gestión de desastres (caos): para proporcionar un servicio no interrumpido aunque algunas partes del sistema fallen a veces.

El equipo del lado del servidor es el equipo responsable de mostrar los videos y todo lo que debe mostrarse.

El equipo de UI es responsable de la forma en que vemos las cosas de manera organizada.

El equipo de experiencia del usuario aconseja mejoras para la interfaz.

El equipo de gestión de la base de datos es el responsable de organizar los datos en el almacén de datos (al igual que una tienda de hardware donde se organizan las cosas)

Como también puede ver, Netflix o cualquier otra aplicación con millones de usuarios en todo el mundo no puede comprometer la falla de los servidores (¡Videos no disponibles o el sitio no aparece! ¡Desastroso!). Es por eso que tienen un equipo de gestión de desastres (tal vez un nombre cambiado) con personas que realmente saben qué hacer cuando ocurren estos problemas. y el problema principal es que cada vez el problema será diferente.

Y es posible que haya notado que ve una lista de videos que le gusta que estará allí en su computadora y que la ve diferente para las computadoras de diferentes personas. Para predecir el tipo de videos que le gustan (anuncios personalizados personalmente como se los llama), deberán monitorear periódicamente su actividad (como la categoría de videos que generalmente ve). ¡Hay personas empleadas para hacer programas para predecir y hacer una lista de videos para usted!

Y peinar todo esto no es una tarea muy fácil. Habrá personas que interactúen con los diferentes equipos para establecer estándares. Ellos son los chicos de control de versiones.

A estas alturas supongo que ya conoces la complejidad involucrada. Entonces, cuando se va a hacer un pequeño cambio en este mecanismo altamente complicado, la gente discute múltiples soluciones y elige la mejor.

Y como dicen los gurús de los estudios de gestión, cuando la innovación se detiene, la gente se aburrirá. Por lo tanto, para aportar innovación en el producto, ¡la compañía necesita muchos cerebros innovadores con ideas únicas!

Es mejor tener un millón de cerebros innovando en Netflix cuando tienen otro millón o más en YouTube o Chromecast con productos similares para el mercado. La competencia es dura duh!

¡Supongo que es suficiente explicación como respuesta a esta pregunta!

¿Es Netflix un sitio web simple?

¿Un sitio web que funcione bien en su computadora, dispositivo móvil, tableta, Smart TV, Play Station, Xbox, Chromecast, Apple TV, reproductor de Blu-ray y más?

¿Un sitio web que cuenta con más de 100 millones de usuarios mensuales?

¿Un sitio web que genera alrededor de $ 8,5 mil millones al año en ingresos?

¿Un sitio web que cuesta alrededor de $ 6 mil millones al año?

¿Un sitio web que transmite más de 250 millones de horas cada día?

Ese no es cualquier sitio web.


Netflix tiene un algoritmo de video que analiza todas y cada una de las tomas en cada video, y cambia su configuración de codificación en consecuencia, es decir, una tasa de bits promedio más baja con la misma calidad de imagen. Esa es una compresión de video inteligente.

Incluso con frecuentes interrupciones de AWS, apenas afecta a Netflix. ¿Por qué? Porque siguen a Chaos Engineering . ¡Han desplegado herramientas como Chaos Monkey y Chaos Kong que causan estragos deliberadamente en sus sistemas de producción!

Netflix tiene su propia red de entrega de contenido (CDN) llamada Open Connect, que utiliza popularidad y predicción para almacenar los mejores videos en sus decenas de miles de servidores. Y eso viene con todos los perfiles de codificación y tasas de bits para admitir la amplia variedad de usuarios finales.

Editar: Para las personas que sugieren que es individual , no simple : Gracias. Te escucho fuerte y claro. Pero desde que lo vi antes de responder la pregunta, no, gracias.

La razón por la que escribí simple sobre single es para mostrar que Netflix podría ser un sitio web “single”, pero de ninguna manera es un sitio web simple . Lo que justifica su necesidad de cientos de desarrolladores.

Los análisis en Netflix han demostrado que, en el conteo actual, Netflix tiene 103.95 millones de clientes de transmisión en todo el mundo. Tener esta gran base de usuarios permite a Netflix reunir una gran cantidad de datos.

El usuario promedio de Netflix transmite películas y programas durante dos horas al día, según estimaciones de Rich Greenfield, analista de BTIG Research.

Si bien la vertical de suscripción de transmisión internacional de Netflix representa solo el 30% del valor estimado de Netflix, el crecimiento de suscriptores internacionales de Netflix ha sido hasta ahora muy fuerte. Creemos que las suscripciones internacionales continuarán creciendo a un ritmo robusto en el futuro cercano, ya que la compañía tiene presencia en 190 países.

Es posible que aún no haya superado a las principales redes entre semana, pero se está acercando cada vez más a medida que Netflix se vuelve cada vez más omnipresente entre los televidentes tradicionales y los cortadores de cable y espera seguir creciendo. Ahora se comprende completamente la necesidad de un equipo tan grande.

Si bien, no soy un empleado de Netflix, sino que estoy tratando de dar mi punto de vista sobre la pregunta desde mi experiencia con el Software.

Porque lo estás mirando solo desde arriba (frontend). El sitio web es un punto de entrada para el usuario externo. Los algoritmos de backend y frontend son muy complejos. Además, estamos hablando de la representación de video en calidad HD, cargas diarias, transmisiones, descargas. Además, guardar su historial de vistas, darle sugerencias, encontrar coincidencias para su video, hacer suscripciones de video, lado de comercio electrónico del sitio. Aplicaciones móviles para iOS y Android. Y luego hay otra pieza de análisis de datos. (La lista es interminable, he puesto solo detalles que puedo adivinar)

Todo esto necesita el sudor, el cerebro y la inteligencia de muchas personas para que la experiencia del usuario sea perfecta e impecable para su vasta base de usuarios y al mismo tiempo gane dinero.

Entonces, es por eso que tienen cientos de desarrolladores (prefiero llamarlos ingenieros)

Intentando agregar algunos detalles más de las últimas 4 respuestas.

Como tal, puede haber 10 de desarrollador en el mantenimiento del sitio web. Es la cara de Netflix, no pueden permitirse tener un sitio web roto.

Netflix, como se mencionó, tiene un solo sitio web, pero si realmente observas, la mayoría del consumo podría no ser del sitio web.

Consumidor:

  • Aplicaciones de TV (SAMSUNG Smart, LG Smart, Google TV, Apple TV, muchas plataformas Fire TV)
  • Aplicaciones para teléfonos inteligentes (ios, android). Hay tantas versiones Debería funcionar bien en todas esas plataformas.

Este es solo el lado del consumidor de Netflix.

Ahora que puede ver tantos millones de videos disponibles en Netflix en el dispositivo que elija.

Almacenamiento de datos:

¿Es hora de averiguar dónde están almacenados? ¿Dónde se almacenan estos millones de videos? WOW … esos videos de alta definición consumen mucho almacenamiento.

Entonces, ¿estas enormes cantidades de datos deben almacenarse en la nube / centro de datos? El almacenamiento puede ser barato, pero no para el contenido cada vez mayor que Netflix está poniendo en su catálogo. Si no hacen crecer el contenido, dejarás de suscribirte / pagarles. Necesitan poder optimizar el almacén de datos.

¿Se puede escribir una nueva compresión para el almacenamiento? Costos de la nube pública (AWS, Azure) o su propio centro de datos. Esta es una tarea realmente desafiante. A medida que los datos crecen, su sistema necesita ser escalado sin aumentar su costo exponencialmente.

También deben poder mantener la copia de seguridad de la mayoría de los datos ( Copia de seguridad de datos ). Por lo tanto, podrían quedarse con 2 o 3 copias de todo. Eso sí que es una locura. Eso no es todo, también necesitan saber quién eres. Almacenan datos personales de cada persona suscrita a Netflix, por lo que conocen videos que ya ha visto, o comenzó a ver, etc.

Redes:

Ahora que estamos impresionados por la cantidad de datos almacenados, solo con hacer clic en la pantalla, todos esos datos deben viajar desde su centro de datos a su dispositivo. Necesitan un servidor que pueda responder a las solicitudes que está haciendo para transmitir la película, ya que hay millones de suscriptores.

Un equilibrador de carga para que las solicitudes a diferentes servidores y también necesiten asegurarse, no enfrentarán ningún problema de transmisión. Cuántas veces ha transmitido una película de 3 a 4 gb de tamaño sin problemas. Es responsabilidad de Netflix garantizar que su transmisión sea de buena calidad. No son AT&T, Comcast, Verizon para construir redes, pero dependen de ellos para ofrecer una gran calidad de la mejor manera posible.

¿Te imaginas que estás en Florida y el centro de datos de Netflix está en California y la transmisión funciona perfectamente bien? Los datos tienen que viajar desde California a la velocidad a la que mira, puede reenviar, rebobinar, lo que sea y no debería llevar mucho tiempo. A menos que toda la red sea como una línea gigabit desde su casa hasta el centro de datos de Netflix, esto no es posible.

Entonces construyen algo llamado CDN (Content Delivery Networks) . Solo por simplicidad, te puedes imaginar. Trabajan con ATT, Comcast, Verizon para poner un mini servidor de Netflix en grandes ciudades como Orlando, Miami, Tampa, San Petersburgo, etc. Entonces, al hacer clic, vea cualquier video. Descargará el video completo del centro de datos de Netflix al mini servidor más cercano, para que pueda verlo sin ningún problema de transmisión desde el mini servidor.

Recomendador

Te sugieren tantas cosas que miraste la película x que quizás también te guste la película y. Esto necesita Machine Learning, AI, etc., hasta cierto punto. Este es otro tema completamente nuevo.

También recuerde que necesitan hacer una Prueba y asegurarse de que nada esté roto. Construir todo esto y probar tantos sistemas para que funcionen en conjunto es una tarea enorme.

Pero todo lo anterior aparecerá para el consumidor / usted / yo como sitio web. Sé que no apreciamos lo suficiente Netflix por su ingeniería 🙂

He simplificado muchas cosas y podría haber pasado por alto muchas otras cosas que hace Netflix). ¡Así que no me detengas por eso!

Ya hay una gran respuesta: solo desearía que la mayoría de los gerentes de ingeniería de compañías no tecnológicas entendieran lo que realmente se necesita para tener un gran servicio que escala masivamente, transmite videos de alta calidad y optimiza las ventas a través de recomendaciones. Pero yo divago.

Nunca he oído hablar del número que usaste, pero asumiré que todos los empleados de desarrollo de software de Netflix. Estoy seguro de que su personal de desarrollo de software también debe tener otros servicios comerciales en los que trabajen, como contabilidad interna, nómina, recursos humanos, etc. Claro, algunos de ellos se comprarían a otros proveedores, pero la mayoría de SaaS requiere una cantidad decente de software de integración eso necesita ser desarrollado.

Finalmente, Netflix ha puesto énfasis en el software. No estoy seguro de si esto sigue siendo cierto, pero solían entregar su contenido a través de AWS. Piénsalo. Toda esa energía de la computadora y no tenían nada de eso. Eso implica que su gerencia conocía el camino más rentable para entregar su servicio. Si supieran lo suficiente como para comprender que el uso de PaaS era el camino fiscalmente inteligente, entonces estoy seguro de que no están desperdiciando $$ en el desarrollo innecesario de software.

  • LA

316 millones de personas visitan (incluidos los clientes habituales) Tesco cada mes en el Reino Unido. Tesco tiene 460 mil empleados. Por lo tanto, hay un empleado por cada 782 clientes.

100 millones de personas visitan Netflix todos los meses. Netflix tiene 3700 empleados. Por lo tanto, hay un empleado por cada 27,000 clientes. Cada empleado de Netflix trata con 34.5 veces más clientes que un empleado de Tesco.

Dicho esto, un solo sitio web como Netflix necesita cientos de desarrolladores porque les permite tratar con más clientes con menos recursos.

Creo que alguien necesita más desarrolladores.

Netflix tiene MUCHAS características que intervienen en la fabricación del producto, muchas de las cuales parecen triviales pero requieren mucho trabajo. Dado que Netflix ha existido por un tiempo, su base de código ha crecido enormemente desde su inicio, por lo que probablemente todavía quede una cantidad significativa de código heredado allí.

No conozco sus actividades diarias, pero me imagino que una gran parte de ellos tienen la tarea de corregir errores y vulnerabilidades. La mayoría de los errores no tienen un solo punto de falla, y la mayoría de las vulnerabilidades no se conocen. Les tomará mucho tiempo resolverlo y arreglarlo.

Otros pueden tener la tarea de escribir nuevas características. Deben descubrir cómo hacer que esa nueva característica funcione con el resto de la base de código, qué efectos podría tener, asegurarse de que funcione como se espera, no agrega vulnerabilidades, etc.

Sé que me faltan algunas cosas aquí, pero no puedo pensar en ellas.

Multiplique eso por una docena o dos o tres … y rápidamente se encontrará necesitando mucho poder humano para manejar todas estas tareas. Y ni siquiera me estoy refiriendo a roles como administración o superior.

No es solo un sitio web.

Netflix se ejecuta en muchas plataformas diferentes, como Smart TV, PC, computadoras portátiles, teléfonos, Apple TV, Chromecast, cajas Roku, etc. Es un sitio web que genera $ 8,5 mil millones al año en ingresos. También tiene 100 millones de usuarios mensuales que pasan 250 millones de horas cada día. Claro que tienen que tener algunos problemas de escalabilidad.

Incluso los comandos más simples como la búsqueda involucran algoritmos muy complejos para los cuales se necesitan sistemas realmente bien diseñados. Manejar dicho tráfico implica construir sistemas que puedan manejar la complejidad.

Es por eso.

¿Por qué un tren necesita más de un ingeniero?

1: Infraestructura necesita ser construida y mantenida, siempre

2: un ingeniero no puede permanecer despierto 24/7/365

3: Alguien tiene que estar a cargo de los relojes, el combustible, la señalización, etc.

4: Alguien necesita desarrollar pruebas para garantizar la confiabilidad de la pista y del motor

5: Alguien tiene que estar a cargo de la seguridad del conductor

6: Alguien tiene que estar a cargo cambiando las vías y desviando todos los trenes en movimiento al mismo tiempo

7: Alguien tiene que estar a cargo de verificar que todos los motores y autos nuevos queden en la pista como se esperaba

8: Alguien tiene que estar a cargo de aprender sobre las nuevas tecnologías de trenes para asegurar el futuro de la empresa.

9: Alguien tiene que saber lo suficiente sobre la tecnología para hablar con los propietarios e inversores.

10: Alguien tiene que trabajar con la gente de dinero para verificar que los vendedores no mientan o cometan errores

11: Alguien tiene que estar a cargo de investigar accidentes

12: Alguien debería estar trabajando en inventar nuevas tecnologías para impulsar el negocio

13: Varias personas necesitan administrar a todas las personas mencionadas anteriormente

Cuando viaja en el tren, solo ve al conductor y al ingeniero, pero se necesitaron miles de personas para que la línea funcionara de manera segura y confiable.

La última cifra que pude encontrar fue de 1.100 en 2014, que fue durante su loca explosión de éxito. Con tal éxito viene un montón de trabajo: características, errores, devops, control de calidad, front-end, back-end, etc., tipos de desarrolladores.

Además, una empresa tan expansiva como Netflix probablemente tendría personal dependiente de la localidad: oficinas en diferentes partes del mundo que operan para sus respectivas regiones. Nadie comprende el clima de una cultura como las personas que viven allí, por lo que tiene sentido general que no solo aumentaría el recuento de oficinas, sino que también lo harían los esfuerzos de los desarrolladores.

Multiplique eso también por la cantidad de dispositivos para los que escriben aplicaciones de software. Decodificadores de cable, iOS, Android, Windows Mobile, Apple TV … y más. Aquí está la lista completa: Lista de dispositivos compatibles con Netflix – Wikipedia. Eso es mucho software y un montón de conocimiento de dominio. No son solo los desarrolladores web en un conteo como ese, son todos, desde el tipo Front-End hasta el tipo que escribe el código para Netflix: edición de WiiU. Muy diferentes ingenieros, diferentes códigos y personalidades (generalmente).

Pero sí, 1.100 ingenieros suena increíble. E incluso con tantas aplicaciones específicas del dispositivo como mantienen, todavía es sorprendente.

Déjame responder esto de una manera simple,

¿Cuántas personas necesita para llevar un tronco de madera de 4 pies de largo y 10 kg de peso?

Ok ahora

¿Cuántas personas necesita para llevar un tronco de madera de 10 pies de largo y 10 kg de peso?

ahora,

¿Cuántas personas necesita para llevar un tronco de madera de 10 pies y 100 kg de peso?

ahora

¿Cuántas personas necesita para llevar un tronco de madera de 100 pies y 100 kg de peso?

Entonces, si el peso y la longitud (umbral) aumentan, se necesita más potencia para manejarlos y hacer que las cosas funcionen de manera normal.

De la misma manera, Netflix también. Simplemente no es un sitio web simple, de fuente única y estático, como dijo Garry Taylor.

Tienen que mantener muchas operaciones, horarios, cosas, servidores, monitoreo, etc.

Así que definitivamente necesita un puñado de desarrolladores para manejar eso.

Netflix aparentemente representa el 37% del tráfico * total * de Internet, por lo que es justo decir que tienen algunos problemas de escala con los que lidiar.

Netflix tampoco es solo un sitio web único, también es aplicaciones en muchas plataformas diferentes, como Apple TV, cajas Roku, varios televisores inteligentes, además, por supuesto, las cosas habituales como Windows, Android, iPhone, etc. Tienen muchas cosas pasando

También deben tomarse en serio la fiabilidad. Netflix funciona, para mí, el 100% del tiempo. Estoy seguro de que han tenido interrupciones, pero la confiabilidad es muy alta, no sé las estadísticas, pero no me sorprendería si son cinco nueves confiables (99.999%), que es el estándar de oro del tiempo de actividad ( nadie recibe el 100%).

Quora parece tener una fiabilidad de nueve, pero como es un servicio gratuito, nos quejamos y seguimos con nuestro día. Netflix no es gratis, lo pago, así que me enojaré bastante rápido si no funciona.

Netflix tiene muchas plataformas para soportar, mucho tráfico con el que lidiar y estándares muy altos de confiabilidad.

Creo que hay muchas compañías que parecen tener 10,000 desarrolladores para lograr muy poco, pero no creo que Netflix sea una de ellas.

** Corrección: Netflix representa el 37% del tráfico pico de descargas en el tráfico de Internet de descargas de América del Norte en América del Norte, más del doble de YouTube y muy por delante de iTunes de Apple.

Una palabra

Iceberg

La interfaz de usuario es solo la piel … hay un millón de cosas debajo que necesitan especialistas, algoritmos e infraestructura. Entregan video como negocio y representan más del 30% del tráfico de Internet. No puede llamarlo “desarrollador” porque su idea de un desarrollador es alguien que crea sitios web, pero tome al desarrollador web promedio con experiencia y póngalo haciendo algoritmos o una habilidad o infraestructura de nicho y podrán hacerlo especialmente si tener un título de CS con cursos superiores en redes y sistemas operativos.

Una aplicación profesional de iOS / Android promedio necesita 18 meses de desarrollo y media docena de desarrolladores, como mínimo.

Entonces, ¿cómo lo hace 1 chico? Sí, puedes hackear un poco de basura durante un fin de semana que se llama hackathon. Pero, olvídate del mantenimiento. El único desarrollador que pueda entenderlo será el original. Y los seguidores encontrarán que el código indocumentado y apresurado es una pesadilla para trabajar. Una buena indicación de la calidad del código es si puede ser de código abierto. Si no puede abrir el código fuente y hacer que otros lo usen, probablemente sea basura, a excepción del desarrollador original. ¿Y qué necesitas para abrirlo? Necesita documentación, cobertura de prueba y código de “caja grande” (anticipe las necesidades de otros). Es posible tener un buen código sin nada de esto. Pero es poco probable.

Las empresas existen para eliminar riesgos. Usted no quiere que su único genio o desarrollador prima donna renuncie y luego lo lleve a la bancarrota. Entonces tiene redundancia y conocimiento compartido y documentación. Totalmente diferente a un código de hackathon o garaje. Por lo tanto, no se puede hacer de esa manera, porque es una pérdida de dinero. A menos que todo su modelo de negocio * no * sea un producto, sino que consulte proyecto por proyecto (cada nuevo proyecto arroja casi el 100% del código anterior).

Solo te di media docena de razones. Tenga en cuenta que la escalabilidad no es la razón principal. Estos problemas existen tanto si es Netflix como si es una pequeña empresa o una startup.

Se trata realmente

  • Cuánto trabajo se necesita para construir, refinar y operar Netflix continuamente
  • Lo poco que uno de nosotros puede hacer en un día

Si quieres entender un poco más, te recomiendo leer el blog de ingeniería de Netflix

luego piense en cuánto tiempo le tomaría hacer todo eso, dado que todo es necesario. Y si no es técnico, sepa que después de 30 años de desarrollo de software, hay partes de las que todavía estoy aprendiendo, y mucho menos puedo hacerlo solo.

Los sitios web a gran escala con millones de usuarios que pagan son difíciles . Lo que ves en tu tele es la punta del iceberg del esfuerzo.

More Interesting

¿Podría nombrarme una buena razón para ser ingeniero de software?

Soy ingeniero de software, pero ahora tengo una cuenta de GitHub y no tengo nada que poner. ¿Qué cosas puedo desarrollar para mostrar mis habilidades de codificación?

¿Cómo es trabajar como ingeniero de software en una empresa emergente / tecnológica frente a una gran empresa como un banco?

¿Puede un ingeniero de software líder convertirse fácilmente en un científico de datos líder?

¿Qué opciones tiene un ingeniero de software harto en la vida, excepto por el sufrimiento?

Cómo hacer mi propio software comercial o cuánto cuesta hacer uno

¿Cómo obtienen los ingenieros de software autodidactas su primer trabajo remoto?

Como ingeniero de software, ¿qué ha sido lo mejor que has visto en tu equipo? La cosa puede ser una pieza de código, diseño, proceso, etc.

¿Cómo puede un pasante aumentar sus posibilidades de obtener una PPO (oferta previa a la colocación) de Arista Networks?

Cómo escribir una carta de presentación para el programa ESA-YGT (posición relacionada con el software)

¿Cuál es el mejor lugar para publicar trabajos de desarrollador en Baltimore, MD?

¿Cómo es trabajar en una empresa de TI / Software como ingeniero en Nueva Zelanda?

Para los ingenieros de software que trabajan en empresas de prestigio, ¿qué tan hábil era para responder preguntas de estilo de entrevista antes de practicar?

No soy una persona orientada a los detalles, pero me gusta cómo el desarrollo de software puede cambiar la vida de las personas, ¿me gustaría codificar?

Siendo realistas, como ingeniero de software, ¿qué podría hacer con una maestría en estudios internacionales?