Youtube al igual de Google o Apple es una de esas empresas que nadie se plantea cómo funcionan, símplemente lo hacen. Es algo así como un mago en un escenario, sabes que hay un truco no lo ves pero ahí está, es magia.

Hace unos meses me topé con este video donde uno de estos magos se sube a un escenario, se trata del ingeniero jefe de Youtube, Coung Do. Durante una hora, nos enseñaba (con mucho humor) al resto de los mortales como funcionaba Youtube en sus inicios.

Os dejo el video original por si alguien se anima (52 minutos)

Las cifras

  • Youtube tiene un 12000 visitantes por segundo, mil millones por día
  • Soporta la distribución de más de 100 millones de videos al día
  • Fue comprada por Google en 2009 por 1650 millones de dólares
  • Empezaron con el siguiente equipo (9 personas): 2 Sysadmins, 2 arquitectos de escalabilidad, 2 desarrolladores, 2 ingenieros de red y 1 administrador de bases de datos.

La idea inicial

El video es muy ilustrativo, desde su inicio Youtube entró en una vorágine de cuellos de botella, ante el increible éxito que alcanzaban cada mes. Para escalar tenían que mantenerlo sencillo y barato, utilizando hardware de consumo (que como veis es la tónica general en estas plataformas) y la mínima cantidad de nodos posibles. El objetivo era soportar el volumen de video a procesar y el ancho de banda de los videos de mayor éxito.

La plataforma

  • Apache: Para servir las páginas
  • Python
  • SuSe y MySQL
  • Psyco: compilador de python a C, permite ejecutar en código byte en vez de usar un intérprete aumentando la velocidad
  • Lighttpd: Para servir el video
  • NetScalar para balanceo de carga y caché de contenidos estáticos

Vamos a intentar centrarnos en el software, ya que hoy en día gracias a la Ley de Moore y el Cloud Computing la horquilla de potencia supera las necesidades de cualquier proyecto. Si os fijais, en Youtube no era necesario un servidor de videostreaming como Wowza, FMS o Red5. Youtube se encarga de estandarizar, si se puede llamar así, todos los videos que le entran a un mismo formato, permitiendo reproducir desde un player flash sin necesidad de cargar codecs.

Curiosidades sobre Youtube

  • Cada vídeo está almacenado en un mini-cluster, es decir, siempre es servido por más de un ordenador permitiendo mayor velocidad y tolerancia a fallos.
  • Los contenidos más populares se mueven a un CDN, que replica el contenido y está más cerca (en cuanto a saltos de red) del ordenador del usuario.
  • Videos con 1-20 visitas diarias, generan efecto long tail con mucho volumen de tráfico pero  no conviene cachearlos, sale caro.
  • Gran parte de los problemas venían de las imágenes en miniatura (thumbnails), era muy difícil ser eficientes. Piensa que hay 4 imágenes por cada video, son archivos pequeños por lo que están en unos pocos servidores, al final el sistema se quedaba sin iNodos, tardaban 6-10 horas en cachear un equipo para reiniciarlo y el número de lecturas/escrituras era insuficiente para servirlos ¿cómo lo solucionaron?
  • Usan Google Big Table, una base de datos noSQL que hemos mencionado en otros post, permite tener muchos elementos y su acceso es mucho más rápido, así pudieron tener un sistema redundante y con alta tolerancia a fallos.

Podemos definir un patrón común entre Justin y Youtube, el video es un arma de doble filo. Requiere un ancho de banda y una capacidad de procesamiento grande, pero mayor aún debe ser la capacidad de escalar y hacer frente a los cuellos de botella. Es imprescindible mantener una estructura lo más llana posible, con ordenadores de consumo para reducir costes y la importancia del fallo de uno de los equipos, un sistema atomizado es la mejor solución casi siempre que hablamos de tecnología.

Por último elige tus propias guerras, tanto Justin como Youtube han sabido delegar en CDNs y datacenters para centrarse en el core de sus respectivos negocios.

Si tienes curiosidad puedes aprender más en el post original de Highscalability

También te puede interesar:


This is some text prior to the author information. You can change this text from the admin section of WP-Gravatar  I´m a spanish entrepreneur focused in cloud computing and video surveillance sollutions, presently working on www.vidium.es