facebook like open source

Las herramientas de software que usan tus redes sociales favoritas | Facebook

Cada vez que iniciamos un nuevo proyecto de software nos preguntamos que herramientas usar para asegurarnos que sea exitoso. Las redes sociales más populares del momento tienen mucho en común, además de millones de usuarios, son adictivas para muchos y ciertamente exitosas, algo que no tienen en común es el conjunto de tecnologías que utilizan.

A continuación, la primera parte de un recorrido por algunos de los lenguajes, frameworks y software de servidores que se usan para mantener corriendo los sitios de redes sociales que usamos a diario.

Facebook

Iniciemos por el gigante de las redes sociales Facebook. Antes de entrar en detalle debemos recordar que Mark Zuckerberg comenzó a desarrollar facebook en enero del 2004, que para efectos de tecnologías y frameworks, muchas cosas han cambiado.

PHP, Memcache y MySQL

Lenguaje de programación PHP, o será C++? la verdad, el código está escrito en PHP pero se ejecuta el resultado de compilar C++. La base de datos es la que los geeks amamos (un poco menos luego de que la adquiriera Oracle), principalmente por su velocidad. Para manejar objetos distribuidos en memoria y mejorar el rendimiento incluyen Memcached a la fórmula.

Al respecto de MySQL, no utilizan nunca un join en producción por dos razones, consumen mucho CPU y la información está distribuida.

Referencias

HipHop for PHP

PHP no es lo más rápido del planeta, aunque algunos piensen que es la pomada canaria del software en la actualidadEn Facebook para poder incrementar el rendimiento de PHP, en lugar de escribir las funciones críticas en C++ como extensiones de php y para asegurarse de mantener el código altamente accesible a los ingenieros (PHP es realmente fácil de aprender, en comparación con C++) decidieron entonces crear una herramienta que reescribiera el código PHP a C++.

El proceso de pasar de PHP a C++ requería compilar el código usando gcc y con esto se perdía la capacidad de programar -> ejecutar que se tiene con PHP. Por lo que HipHop evolucionó de manera que el código lo convierte a bytecode ejecutado en una máquina virtual.

Para mejorar aún más el rendimiento, el bytecode se transforma a lenguaje máquina nativo.

Referencia

 Varnish

Además de usar memcache para mejorar la respuesta de la base de datos, utilizan Varnish. Es un acelerador de aplicación web o  acelerador de HTTP con balance de carga, soporte de Gzip, entre otras características. En Facebook se utiliza principalmente para las fotografías.

Referencia

Hackathons

hackathon en facebook

Facebook además de hacer un uso exhaustivo de herramientas de software libre, y de contribuir a ellas, mantiene una cultura de hackathons que usa para desarrollar nuevas funcionalidades para los usuarios. Cosas como el chat de facebook o el link de eventos en tu perfil se han desarrollado durante un hackathon.

Para conocer la lista completa de herramientas para desarrolladores y del software que utiliza la red social Facebook, visita https://developers.facebook.com/opensource/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.