: FACEBOOK. La entrada del blog es de junio de este año y ya nos hicimos eco de la misma por Twitter (@ntcmarketing), pero sigue siendo igual de interesante que entonces.
Lo interesante del caso es la envergadura de Facebook:
- La web tiene 590.000.000 visitantes únicos y 690.000.000.000 páginas vistas por mes (datos extraidos de Google Ad Planner de octubre 2010).
- Más fotos que todas las demás webs para compartir fotos juntas (incluyendo páginas gigantes como Flickr).
- Más de 3.000.000.000 de fotos nuevas subidas al mes.
- Más de 1.200.000 fotos servidas por segundo.
- Más de 25.000.000.000 contenidos compartidos cada mes.
- Más de 30.000 servidores a finales de 2009 (no existen datos más actualizados).
Y todo esto tiene detrás un software que aguanta ese ritmo de publicación de contenidos y crecimiento. Unos cuantos datos interesantes:
- Facebook usa PHP pero lo compila para convertilo en código nativo y aumentar su velocidad.
- Facebook usa Linux optimizado para mejorar el rendimiento de la transferencia en red.
- Facebook usa MySQL como almacenamiento permanente.
Este es un resumen del Software que usa Facebook:
- Memcached: Utilizado por muchas web de envergadura hace la función de caché entre los servidores web y los servidores MySQL. Facebook tiene miles de servidores Memcached con cientos de terabytes de datos en caché.
- HipHop for PHP: HipHop (desarrollado por Facebook) convierte el código PHP en código C++ que puede compilarse para aumentar la velocidad. Esto ha permitido mejorar el rendimiento de sus servidores, ya que Facebook sigue basado en PHP para servir casi todo su contenido.
- HayStack: El sistema de alto rendimiento desarrollado por Facebook para almacenar y recuperar objetos, utilizado por Facebook para almacenar y recuperar fotos. Hay (en junio de 2010) 20.000.000.000 de fotos en Facebook, cada una en 4 resoluciones distintas…. Además hay que tener en cuenta que de esas se recuperan 1.200.000 fotos cada segundo.
- BigPipe: Un sistema dinámico para servir páginas web (desarrollado por Facebook) que permite la división de cada página en sección (ellos los llaman «pagelets») para optimizar su rendimiento. Cada sección de la página web se recupera por separado (y muchas ocasiones en paralelo) con la ventaja de si una parte de la web está desactivada o rota, el usuarios sigue viendo el resto sin problemas.
- Cassandra: Es un sistema de almacenamiento redudante a fallos que proviene del movimiento NoSQL. Facebook lo usa para las búsquedas de la bandeja de entrada.
- Scribe: Es el sistema flexible de login creado por Facebook, que permite manejar todos sus logins y además es escalable para el futuro.
- Hadoop y Hive: Hadoop es un sistema que permite realizar cálculos sobre cantidades ingentes de datos. Facebook lo utiliza para las estadísticas. Hive está desarrollado por Facebook y permite ejecutar consultas SQL contra Hadoop. Ambos proyectos son open-source y se usan en multitud de sitios webs grandes como Yahoo y Twitter.
- Thrift: Facebook usa otros lenguajes de programación además de PHP: El chat está realizado con Erlang y en otras partes de la web se usa Java y C++. Thrift es un framework que une todos los lenguajes de programación utilziados, haciendo posible su comunicación. Esto ha hecho mucho más sencillo el uso de varios lenguajes de programación en Facebook.
- Varnish: Varnish es un acelerador HTTP que puede actuar como distribuidor de cargas y que también puede cachear contenido que puede ser servido de forma espectacularmente rápida. Facebook usa Varnish para mostrar fotos y fotos de perfil, con una carga de miles de millones de peticiones diarias.
- XHProf: Facebook monitoriza todos sus sistemas, incluyendo cada una de las funciones PHP del entorno productivo. Para ello usa una herramienta llamada XHProf.
Y por último cuando Facebook tiene problemas de velocidad y rendimiento, va desactivando funciones que ellos consideran menos importantes, aumentando así la velocidad de las consideradas vitales.
Toda esta información se ha extraido de varias presentaciones de ingenieros de Facebook, además del blog de los ingenieros de Facebook.