[**Facebook**](http://bitelia.com/tag/facebook) es una empresa gigante, es la red de redes sociales, un tinglado complejísimo que evoluciona, escala y sencillamente funciona. Más de 500 millones de personas usan y abusan de Facebook no sólo para participar de la red sino también para vivir en ella. El resultado es una inmensidad de operaciones de cómputo coordinadas por una plataforma de hardware y software igualmente compleja y gigantesca, todo un reto para los ingenieros de la empresa.

Ahora bien, a propósito de **los 7 años que cumplió Facebook** el pasado 4 de febrero, quiero ofrecerles una lista en la que enumero siete de las tecnologías de que sostienen su plataforma de software. El punto es valorar los esfuerzos de Facebook por entregar el mejor de los servicios, sobre todo en términos de disponibilidad, tiempo de respuesta y coherencia. Cada elemento de la lista es software [de código libre y abierto](http://developers.facebook.com/opensource/) y, salvo Linux y Hive, los demás son una creación de los empleados de Mark Zuckerberg.

Es cierto es que la infraestructura de Facebook es mucho, pero mucho más que sólo siete tecnologías de software, sin embargo me atrevo a decir que sin estas que pongo a continuación **Facebook no podría ser quien es hoy en día**.

### 1. [Linux](http://bitelia.com/tag/linux)

Aquí sería más preciso decir que se trata del **ecosistema Linux**, en particular de [LAMP](http://es.wikipedia.org/wiki/LAMP):

* Linux, el sistema operativo que administrar los recursos de cada servidor en Facebook,
* Apache, el servidor de páginas web,
* MySQL, el manejador de bases de datos, el que almacena de forma estructurada los datos de los usuarios,
* Y PHP, el lenguaje de programación que automatiza la creación de páginas web.

Facebook no sería posible sin Linux.

### 2. [Cassandra](http://cassandra.apache.org/)

Y, ¿qué es lo que hace? Además de Facebook, sitios como Reddit y Twitter también usan Cassandra para almacenar los datos de los usuarios de forma estructurada y distribuida. Se dice que Cassandra pertenece a una segunda generación de bases de datos, a un paradigma llamado **NoSQL**. Facebook hizo público el código de Cassandra al tiempo que lo entregó a la comunidad Apache en el 2008.

Facebook no podría escalar sin Cassandra.

### 3. [Hive](hive.apache.org)

Este es un proyecto auspiciado por la Fundación Apache. Entre sus varias funcionalidades destaca una fundamental para Facebook: el **análisis de grandes conjuntos de datos** sobre los cuales es posible inquirir, buscar información en ellos.

Facebook no podría ofrecer su servicio de búsqueda sin Hive.

### 4. [Thrift](http://incubator.apache.org/thrift/)

Podría decirse que Thrift es un kit de herramientas, uno especializado en la **interoperabilidad** de lenguajes de programación. A través de Thrift Facebook ha combinado el uso de lenguajes tan distintos entre sí como C++, Java, Python, PHP, Ruby, Haskell, y más, a lo largo de todos sus equipos de desarrollo.

Facebook no podría crear servicios de software a la velocidad que requiere sin la ayuda de Thrift.

### 5. [Scribe](https://github.com/facebook/scribe/)

Lo que hace Scribe es muy sencillo: es un sistema de **distribución y registro** de mensajes en los servidores, tolerante a fallas y capaz de funcionar sobre una gran cantidad de equipos.

Facebook gestiona con mayor facilidad sus miles de servidores gracias a Scribe.

### 6. [HipHop for PHP](https://github.com/facebook/hiphop-php/wiki/)

Este es uno de mis favoritos. La parte visible de Facebook está escrita en su mayoría con lenguaje PHP, por lo que su desempeño es crítico para todo el sistema. Siendo un lenguaje interpretado tiene limitaciones de desempeño que los lenguajes compilados no tienen. HipHop for PHP es un **transformador de código PHP en código C++**, por lo que el resultado es un software de igual funcionalidad, pero optimizado para un alto desempeño. De hecho, Facebook afirma que gracias a HipHop for PHP usa hasta 50% menos CPU que antes.

Facebook sería más lento sin la ayuda de HipHop para PHP.

### 7. [Tornado](http://www.tornadoweb.org/)

Este es otro kit de herramientas de software, en este caso especializado en los **servicios web escalables** –es decir, los que crecen sin afectar el desempeño o las funciones del sistema–. En particular, es capaz de gestionar miles de conexiones web de forma simultánea y veloz. Está escrito en el lenguaje Python y su diseño está basado en el que tiene FriendFeed.

Facebook no podría «sentirse» en tiempo real sin Tornado.

Imagen: [Mapa de amistades en Facebook](http://alt1040.com/2010/12/gran-mapa-mundial-de-la-amistad-facebook)

Ahora en Hipertextual

Suscríbete gratis a Hipertextual

Estamos más ocupados que nunca y hay demasiada información, lo sabemos. Déjanos ayudarte. Enviaremos todas las mañanas un correo electrócnio con las historias y artículos que realmente importan de la tecnología, ciencia y cultura digital.