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.
La mayoría ve una extensión «.php» y creen que toda la plataforma ha sido desarrollada en este lenguaje pero no es así, cuando crearon Facebook llegaron a la conclusión de que PHP no es precisamente el lenguaje más rápido que existe, ya que se trata de un lenguaje interpretado y si a eso le agregan que hay tareas que no se pueden llevar a cabo en PHP, la conclusión a la que llegaron los programadores de Facebook fue que quizá no haya sido una buena elección elegir PHP para su desarrollo, lo que les ha llevado a intentar migrar el núcleo de Facebook a Python en varias ocasiones, pero ninguna llegó a tener el resultado que esperaban.
Actualmente la plataforma de Facebook incluye:
- 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
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.
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.
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.
Scribe Server
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.
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.
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.
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.
Muy buen post!!!…
mucha info, gracias..
Esta muy interesante el post gracias por este aporte a la comunidad saludos desde Nicaragua
y yo que pensaba que facebook era todo en php ¿?
muy buen post si me lo puedes enviar al correo una pregunta como logran ensamblar todos los lenguajes al mismo tiempo????????
Lo que no entiendo es por qué intentaron quitarse de en medio PHP por ser un lenguaje interpretado y su alternativa es otro lenguaje interpretado (python)..
biien gracias por su aporte me sirvio de mucho ..!!!!
sigan asiiii..!!! felicitaciones
@alex:
Aun siendo un lenguaje interpretado, Python es más rápido que PHP, supongo que por eso; ya que igual pasarlo todo a un lenguaje compilado es mucho más costoso.
buenas tardes, esta publicacion estu muy bien estructurada, gracias por aclarar las partes que componen facebook.
Una pregunta en que lenguaje esta creado lso juegos de facebook ? soy nuevo ene esto 😀
Una consulta les agradeceria tanto que me respondieran, tengo una aplicacion propia y quiero saber si la puedo enganchar a facebook, cuales serian los requisitos en caso de poderse, creo que mi aplicacion les seria de gran utilidad a toda la sociedad en general a nivel mundial esa es la intencion.
Gracias
Claro Puer Salvador la puedes integrar con facebook y te que daria mas eficiente mira los link de facebook para que lo puedas hacer claro que tienes que pagar otra cosa seria que te comuniques con servicio al cliente o contacto para mayor informacion