¿Es posible alojar Facebook en AWS?

Facebook es actualmente un monstruo tecnológico bastante complejo. ¿Qué retos tecnológicos supondría alojarlo en AWS?

Tras su lanzamiento en 2004, Facebook ha pasado de estar alojado en un único servidor en una habitación de Harvard a poseer siete data centers alrededor del mundo. Aunque nos parece obvio a estas alturas que una empresa como Facebook tenga sus propios data centers, no es una práctica descabellada alojar un servicio de estas características en AWS en sus primeros años de vida.

Hace poco la compañía Snap cerró un acuerdo con Google por valor de 2.000 millones de dólares, y otro con AWS por valor de 1.000 millones de dólares para alojar y mantener en funcionamiento su plataforma. Tras esta noticia la gente de SQLizer se preguntó: ¿y si alojáramos Facebook en AWS? ¿podrá AWS alojar semejante monstruo tecnológico? ¿cuánto costaría anualmente?

Para contestar a todas estas preguntas, han hecho bastantes suposiciones, como capacidad y número de servidores, número de usuarios, costes, etc. En ningún momento plantean si es viable alojar Facebook en AWS, aunque tras ver los números la respuesta parece bastante obvia.

Servidores

 

Data center de Facebook en Prineville
Data center de Facebook en Prineville

Facebook no ha compartido el número de servidores exactos que tiene en la actualidad, así que vamos a suponer muchas cosas partiendo de datos antiguos y extrapolándolos.

Debido al tamaño de Facebook, en este apartado hay que plantearse dos preguntas: cuántos servidores tiene Facebook, y cúantos tiene AWS.

¿Cuántos servidores tiene Facebook?

En 2012, Data Center Knowledge estimó que Facebook tenía 180.000 servidores. Con esta estimación, podemos calcular el número de servidores en base a tres datos distintos: usuarios por servidor, ingresos por servidor y empleados por servidor.

Usuarios por servidor

En 2012, Facebook tenía 1.000 millones de usuarios y 180.000 servidores.

  • 1.000.000.000 usuarios / 180.000 servidores = 5.556 usuarios / servidor

En 2017, Facebook está cerca de los 2.000 millones de usuarios.

  • 2.000.000.000 usuarios / 5.556 usuarios por servidor = 360.000 servidores

Teniendo en cuenta que Facebook no solo ha duplicado sus usuarios, sino la cantidad de fotos, vídeos, etc., y que además también aloja Instagram, duplicamos ese número: 360.000 * 2 = 720.000 servidores.

De acuerdo a estos cálculos, Facebook tiene ~720.000 servidores en 2017.

Ingresos por servidor

En 2012, los ingresos de Facebook fueron de 5.089 millones de dólares. Si cogemos esta cantidad y la dividimos entre el número de servidores, nos da aproximadamente 28 mil dólares por servidor.

  • 5.089.000.000 / 180.000 servidores = 28.272 dólares por servidor

En 2016, los ingresos de Facebook fueron de 27.638 mil millones de dólares. Si dividimos esta cantidad por los 28.000 dólares calculados anteriormente, obtenemos unos 978.000 servidores.

  • 27.638.000.000 dólares / 28.272 dólares por servidor = 977.574,98 servidores

De acuerdo a estos cálculos, Facebook tiene ~978.000 servidores en 2017.

Empleados por servidor

En 2012, Facebok tenía 4.619 empleados, lo que nos da unos 40 servidores por empleado.

  • 180.000 servidores / 4.619 empleados = 38,96 servidor por empleado

En 2016, Facebook tenía 17.048 empleados. A 40 servidores por empleado, nos da unos 682.000 servidores.

  • 17.048 empleados * 40 servidores por empleado = 681.920 servidorers

De acuerdo a estos cálculos, Facebook tiene ~682.000 servidores en 2017.

Total

El rango entre estos cálculos es de 296.000 servidores.

  • 978.000 – 682.000 = 296.000

Como estimación final, nos quedamos con la mitad de esta diferencia sumada a la cantidades mayor, o restada a la cantidad menor.

  • 296.000 / 2 = 148.000
  • 682.000 + 148.000 = 830.000 ó 978.000 – 148.000 = 830.000

Como estimación total final, Facebook tiene 830.000 servidores en 2017.

¿Cuántos servidores tiene AWS?

 

AWS global infrastructure, AWS
Infraestructura global de AWS. En naranja, las regiones actuales; en verde, las regiones próximas.

AWS puede ser dividido en:

  • Regiones: áreas geográficas muy grandes, normalmente continentes (Europa, por ejemplo), excepto en casos como “US West”.
  • Availability Zones (AZs): áreas más pequeñas que las regiones con varios data centers (por ejemplo, Londres).
  • Data centers: granjas de servidores, normalmente entre 50 mil y 80 mil servidores.

En 2017, AWS tiene 16 regiones y 42 AZs. Si tomamos de media unos 65 mil servidores por data center, y una media de 1.5 data centers por AZ, nos quedan (redondeando) unos 4.100.000 servidores.

  • (42 AZ * 1.5 data centers) * 65.000 servidores = 4.095.000 servidores

Como estimación total final, AWS tiene unos 4.100.000 servidores en 2017.

Capacidad de los servidores

Una simple división nos da que AWS tiene bastantes más servidores de los que Facebook necesitaría, así que en términos de pura capacidad de los servidores, AWS sería capaz de hostear Facebook sin ningún problema.

Rendimiento

No podemos asumir que los servidores de AWS proporcionarán el mismo rendimiento a Facebook que sus propios servidores. Facebook ha gastado miles de millones de dólares en mejorar su propia infraestructura de servidores a lo largo de los años.

Los servidores que se encuentran en los data centers de Facebook están optimizados al milímetro para dar un rendimiento y eficiencia máximos. Desde el diseño arquitectónico del propio data center, hasta el chasis de cada servidor, todo es de diseño y creación propia de Facebook.

Facebook tiene sus servidores optimizados para hacer funcionar Facebook. Por ejemplo, tienen una sección llamada “cold storage” en sus granjas de servidores donde almacenan fotos y vídeos que ya no se ven (por ejemplo, fotos subidas a la red hace varios años). Este almacenamiento solamente se pone en funcionamiento cuando alguien accede a ese contenido, con lo cual su estado depende de la demanda. En contrapartida y pese a que AWS también crea su propio hardware, AWS está diseñado con un propósito más genérico.

Así que suponiendo que si Facebook fuera alojado en AWS necesitaría servidores extra (ya que no están ajustados al milímetro a Facebook), podemos estimar que Facebook necesitaría un 10% más de capacidad de la que tendría en sus servidores propios. Esto nos daría que Facebook necesitaría 913.000 servidores en AWS para obtener un rendimiento similar (830.000 servidores * 1,1 = 913.000 servidores).

Software

Facebook ha desarrollado a lo largo de los años un conjunto de tecnologías basándose en tecnología open source ya existente para adaptarla a las necesidades de su negocio. Desde HipHop Virtual Machine (HHVM) como máquina virtual para su código PHP hasta sus propias adaptaciones en el motor de MySQL, Facebook utiliza varias tecnologías (algunas adaptaciones, y otras de desarrollo propio), así que podría pensarse que no todas ellas serían compatibles al 100% con AWS. Al igual que le ocurrió a Netflix, lo más probable es que Facebook necesitara adaptar gran parte de su código a los recursos de AWS.

Costes

La pregunta del millón: ¿y cuánto costaría alojar Facebook en AWS? Aquí las suposiciones son aún mayores, ya que es prácticamente imposible saberlo con exactitud debido a que no sabemos qué tecnologías de todo el stack de AWS serían necesarias usar, en que medida y que transferencia mensual de datos se maneja.

Para calcular estos costes, vamos a seguir suponiendo que Facebook tiene 913.000 servidores divididos entre diferentes servicios de AWS, como EC2, S3, RDS, almacenamiento y transferencia de fotos y vídeos, una combinación que nos daría unos 1.265,5 Petabytes de datos mensuales (1.256.000 Terabytes). Esto supone:

  • 300 millones de fotos subidas cada día, a una media de 4Mb por foto.
  • 100 horas de vídeo subido a una media de 200Mb por vídeo.

Los cálculos se pueden ver en este enlace usando la calculadora de AWS, y entre el gran número de suposiciones podemos encontrar:

  • 713.000 instancias EC2 de tipo r3.2xlarge
  • 1256,5 Petabytes de almacenamiento en S3
  • 200.000 instancias RDS de tipo db.r3.2xlarge en Multi AZ con 1TB de espacio.

El resultado es una bestialidad: 5.970 millones de dólares anuales.

Conclusión

La respuesta a la pregunta ¿es posible alojar Facebook en AWS? es rotundamente afirmativa, aunque el verdadero reto no creo que sea el coste, sino el software. Todo el tech stack de Facebook está preparado para funcionar a la perfección en sus propios servidores (que también están adaptados al milímetro), con lo cuál una migración de este calibre llevaría AÑOS realizarla (a Netflix le llevó ocho años migrar a AWS).

Por tanto, lo mejor que pueden hacer es dejarlo todo como está. A fin de cuentas, se habían gastado casi 4.000 millones de dólares en 2012 en su infraestructura de servidores, que en la actualidad podría ser tranquilamente el triple.

Enlaces relacionados

test