lunes, 7 de febrero de 2011

Siete tecnologías de software que sostienen a Facebook

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 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
Aquí sería más preciso decir que se trata del ecosistema Linux, en particular de 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
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
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
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
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
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
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.

No hay comentarios:

Publicar un comentario