Este documento describe las tecnologías que sustentan las principales redes sociales como Facebook y Twitter. Explica que Facebook usa una arquitectura LAMP y herramientas adicionales como Apache Cassandra, Hive, Thrift, Scribe y HipHop for PHP. También señala que Twitter emplea tecnologías como MySQL, Apache Hadoop, Cassandra, Lucene y Pig, así como sus propios desarrollos como Twemcache, Lago y Zipkin.
3. O Cuando hablamos de red social, lo que viene a la mente
en primer lugar son sitios como Facebook, Twitter y
LinkedIn o aplicaciones como Snapchat e Instagram,
típicos de la actualidad. Pero la idea, sin embargo, es
mucho más antigua: en la sociología, por ejemplo, el
concepto de red social se utiliza para analizar interacciones
entre individuos, grupos, organizaciones o hasta
sociedades enteras desde el final del siglo XIX.
O En Internet, las redes sociales han suscitado discusiones
como la de falta de privacidad, pero también han servido
como medio de convocatoria para manifestaciones públicas
en protestas. Estas plataformas crearon, también, una
nueva forma de relación entre empresas y clientes,
abriendo caminos tanto para la interacción, como para el
anuncio de productos o servicios.
5. O Se encuentra desarrollado en un ecosistema
LINUX denominado LAMP (acrónimo usado
para describir un sistema de infraestructura
de internet) Linux: Sistema Operativo que
administra los recursos de cada servidor de
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 PHP: lenguaje de
programación que automatiza la creación de
páginas web
6. O Apache Cassandra: Almacena los datos de los usuarios de
forma estructurada y distribuida. Facebook hizo público el
código de Cassandra al tiempo que lo entregó a la
comunidad Apache en el 2008.
O Hive: Analiza grandes conjuntos de datos sobre los cuales
es posible buscar información en ellos. Facebook no podría
ofrecer su servicio de búsqueda sin Hive.
O Thrift: Es un kit de herramientas 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.
7. O Scribe: 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.
O HipHop para 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.
O Tornado: 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.
9. Twitter no sólo ha hecho uso de importantes tecnologías Open
Source para sus propósitos, si no que ha colaborado
activamente con el desarrollo de algunas y la creación desde
cero de algunos framework.
O Las tecnologías open source que consume twitter son:
O MySQL: Usada principalmente para almacenar los Tweets.
Ellos han desarrolado su propio fork para ajustarlo a la
necesidades, por supuesto, abierto a la comunidad.
O El abanico de proyectos Apache usados en su
infraestructura y que nos estamos acostumbrando en ver
en las grandes redes sociales: Cassandra, Hadoop,
Lucene, Pig.
O Memcached: para manejar la caché y escalar el creciente
tráfico de la plataforma. De ahí ha salido un interesante
proyecto abierto que han liberado recientemente,
Twemcache, ajustando sus necesidades a la base de
Memcached.
10. O Lago: es un generador de carga para testear el tráfico en
producción. Es un herramienta fundamental para el entorno
en el que se mueve Twitter con millones de peticiones en
cortos espacios de tiempo.
O Zipkin: ayuda a recolectar los tiempo de respuestas de las
peticiones de la API de Twitter.
O Scalding: es una librería de Scala que hace más sencillo
escribir los jobs de MapReduce en Hadoop integrándose
perfectamente con la Scala y la JVM.
O Apache Mesos: para construir aplicaciones distribuidas y
compartir recursos entre data center.
O No tan relacionada con la infraestructura, pero si uno de los
proyecto proveniente de Twitter tenemos a Bootstrap, que
nos permite crear ágiles páginas HTML5 con componentes
potentes.