FUNCIONALIDAD EN FACEBOOK, LA MARAVILLA DE ADMINISTRAR ENORME CANTIDAD DE DATOS DE LA MANERA MAS EFECTIVA Y DESARROLLANDO NUEVAS SOLUCIONES EN SU PLATAFORMA.
2. Tecnologías detrás de Facebook
• En esta oportunidad tomaremos a Facebook para
descubrir su funcionalidad. Ya que se ha
convertido en una de las redes sociales mas
famosas en los ultimos años contando actualmente
con mas de 1350 millones de usuarios y usada a
nivel mundial.
• Muchas personas creen que Facebook está hecho
solo en PHP, pero esto es un error ya que Facebook
utiliza un conjunto de tecnologías que hacen que la
plataforma funcione correctamente.
3. Plataforma de Facebook:
• Sistema operativo Linux
• Memcache
• Apache Cassandra
• Apache Hive
• Apache Thrift
• Scribe
• Lenguajes: PHP, Java, C++, Erlang, .NET, PEARL
• HipHop para PHP
• Tornado Web Server
• Mysql
• Protocolo XMPP
4. Apache Thrift
• Thrift es un conjunto de herramientas y librerías software creadas por
Facebook para acelerar el desarrollo e implementación de servicios
backend eficientes y escalables. El principal objetivo es permitir
comunicaciones eficientes y fiables a través de lenguajes de
programación mediante la abstracción de porciones de cada lenguaje en
una librería común, específicamente Apache Thrift permite a los
desarrolladores definir los tipos de datos e interfaces de servicios en un
archivo único en lenguaje neutral y generar todo el código necesario
para construir clientes RPC y servidores.
• Actualmente Thrift soporta los siguientes lenguajes C++, Java, Python,
PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk y OCaml.
Facebook utiliza esta tecnología para su sistema de búsqueda
integrando así un backend desarrollado en C++ con un frontend escrito
en PHP.
Facebook utilizo esta tecnología para utilizar las librerías de Java y que en PHP no existen, como por ejemplo la
librería para realizar el envío de SMS.
5. Apache Cassandra
• Apache Cassandra es una Base de Datos no
relacional, distribuida y basada en un modelo
de almacenamiento de Clave-Valor, escrita en
Java, además de Facebook, sitios como
Reddit y Twitter también usan Cassandra, la
usan 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.
6. Apache Hive
• Este es un proyecto auspiciado por la
Fundación Apache. Entre sus varias
funcionalidades destaca una que es
fundamental para el funcionamiento
de 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.
7. Scribe
• Lo que hace Scribe es muy sencillo: es
un sistema de distribución y registro
de mensajes en los servidores, es
tolerante a fallas y capaz de funcionar
sobre una gran cantidad de equipos,
gracias a Scribe Facebook logra
gestionar con mayor facilidad y
eficiencia sus miles de servidores.
8. HipHop para PHP
• 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.
• Una gran cantidad de peticiones PHP impone un consumo
excesivo de CPU, y en Facebook han logrado solucionar el
problema con este desarrollo en el que llevaban trabajando
más de 3 años y que permite convertir el código PHP en
código C++, que luego se compila con g++ para obtener un
código objeto mucho más eficiente en consumo de recursos
de lo que era el código PHP original, el resultado es un
software de igual funcionalidad, pero optimizado para un alto
desempeño. De hecho, Facebook afirma que gracias a HipHop
para PHP usa hasta 50% menos CPU que antes, Facebook
sería más lento sin la ayuda de HipHop para PHP.
9. Tornado web Server
• Tornado es un framework de servidor
Web y está liberado bajo la licencia
Apache versión 2, está escrito en
Python y está diseñado para permitir
el procesamiento de miles de
conexiones simultaneas. Facebook no
podría “sentirse” en tiempo real sin
Tornado.
10. Protocolo XMPP
• Extensible Messaging and Presence Protocol (XMPP) es un protocolo
para comunicación en tiempo real, la cual sirve de base para un
amplio rango de aplicaciones, incluyendo mensajería instantánea,
información de presencia o también llamada “listas de contactos”,
charlas con múltiples participantes, voz, video llamadas,
colaboración, sindicalización de contenidos y enrutamiento
generalizado de datos en XML.
• El chat de Facebook y la integración con sistemas como Windows
Live no sería posible sin XMPP con DIGEST-MD5.
• Bueno ahora que ya saben Facebook no es solo PHP y no sería
posible sin el uso de todas las tecnologías antes mencionadas.
• Para finalizar te debo decirles que la información presentada fue
tomada de “Pensamientos Ágiles” perteneciente a Aditya Agarwal, el
director de ingeniería de Facebook.