¿Cómo funciona facebook?

Publicado por Alejandro Escario en

logo_facebookEstoy seguro de que en mayor o menor medida conocerás facebook, la red social que ha revolcionado internet y hecho de Mark Zuckerberg uno de los multimillonarios más jóvenes de la historia, si no el que más.

Para los que anden una poco más apartados del tema Facebook es una red social (la primera y la que más éxito tiene en la actualidad) que nació inicialemente como un sitio exclusivo para los estudiantes de Hardvard, pero que en la acualidad admite la creación de cuentas de todo aquel que disponga de una cuenta de correo electrónico, es decir todo el mundo, ya que éstas son gratuitas.

Pues bien, vamos a ver como algo que nació para un grupo reducido de personas ha ido creciendo poco a poco gracias a los ingenieros que trabajan día a día en la misma.

Antes de nada comentar que los datos que voy a utilizar en este artículo los he sacado de una presentación (que he encontrado en Pensamientos Ágiles) de Aditya Agarwal, el director de ingeniería de facebook.

Facebook está programado principalmente en PHP, MySQL y Memcache (LAMP), esto es así lógicamente porque es el conjunto de herramientas con las que comenzó la aplicación (por aquello de que iba a ser una aplicación y tal, supongo), y aunque hoy en día para grandes aplicaciones suele utilizarse lenguajes como .NET (que es un lenguaje que permite una mayor interacción con los procesos del equipo), los del equipo de desarrollo han sabido ingeniárslas para poder sacar adelante el proyecto, aunque para ello hayan tenido que hechar mano de varios tipos de lenguajes (C++, Java, erlang)…

Estadísticas de facebook:

  • Más de 120 millones de usuarios activos.
  • Más de 5 billones de páginas vistas (50 billones del sistema ingles).
  • Más de 1 billón de fotos subidas a sus servidores (10 billones en el sistema inglés).
  • Más de 1.000 millones de conexiones.
  • Más de 50.000 aplicaciones hechas para Facebook.
  • Cuenta con el apoyo de más de 400.000 desarrolladores.

PHP (impresiones varias, antes y después):php

  • Definen inicialmente PHP como un lenguaje rápido, bueno y que cuenta con una gran comunidad de desarrolladores y de librerías.
  • Es un lenguaje no tipado lo que dificulta el entendimiento del código y de la pila de ejecución.
  • Es un lenguaje con malas opciones de escalabilidad y optimización.
  • Cada archivo incluido aumenta la complejidad de manera lineal.

MySQL:mysql_logo

  • Una de sus mayores impresiones con el sistema es que es «realmente rápido».
  • Utilizan pares <key, value> (clave, valor) para almacenar los datos en las bases de datos.
  • No realizan ningún join en producción, ya que al tratarse de una base de datos distribuida, consume recursos innecesariamente.
  • Los datos más antiguos se archivan, ya que éstos son los que menos probabilidades tienen de ser accedidos.
  • A pesar de que la mayor parte de d los datos tienen consistencia, éste no es un hecho que les preocupe mucho, ya que no hace falta ningún tipo de inconsistencia para la maoyoría de los datos.
  • Hay una base de datos que contiene un grafo de los usuarios del sitio, para así poder acceder fácilmente a los datos de cada usuario.
  • Las modificaciones que han hecho en MySQL son prácticamente nulos.

Memcache:

  • Este sistema dota a Facebook de la velocidad que lo caracteriza.
  • Dota a facebook con una latencia < 200 ms.
  • Cuentan con 25TB (1TB = 1024GB) de memoria.
  • Hacen uso de multi-gets.
  • Han cambiado el protocolo de comunicación, que pasa de ser TCP a UDP para reducir al máximo el cosumo de memoria por los buffers.
  • Han modificado el núcleo de Linux (sistema operativo sobre el que corre facebook) para permitir que Memcache trabaje con equipos de más de un núcleo.

Inconvenientes de PHP y otras cuestiones:

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 sumamos que hay ciertas tareas que no se pueden llevar a cabo sólo con el uso de PHP, llegamos a la conclusión de que quizá no haya sido una buena elección para este tipo de aplicación, lo que les ha llevado a intentar migrar el núcleo de facebook a python vaias veces, pero ninguna de ellas llegó a tener el resultado esperado.

Por este motivo, el equipo de facebook creó Thrift, un sistema que permite (de forma más eficiente que otros similares) hacer que PHP interactue con otros lenguajes de programación, como Java, C++,…

Otra característica importante es que si ya existe una librería en Java y no en PHP no se preocupan en migrarla, directamente hacen uso de ella, como por ejemplo la librería para realizar el envío de SMS.

Todo este rollo ha venido inspirado por una serie de conversaciones que tengo con gente de mi entorno en las que discutimos si PHP merece o no la pena, lo que me ha hecho investigar un poco, y si bien no he cambiado de opinión tras averiguar algo más sobre Facebook, he de reconocer que puede llegar a ser un fastidio tener que recurrir a otros lenguajes de programación en determinadas ocasiones, así como que se trata de un lenguaje interpretado y no es el más rápido ni mucho menos o que simplemente se trata de un lenguaje no tipado, lo que puede dificultar un poco la interpretación de código, de manera que a la hora de enfrentarnos con proyectos con un prebisible importante crecimiento, tengamos que plantearnos otras tecnologías, como son .NET y Java.

Categorías: Web

20 comentarios

100% Telch · enero 16, 2010 a las 4:18 pm

Realmente es claro, facebook lo inicio un chico por ahi que aprendio PHP como cualquier novato, y claro vinieron los problemas, en un lenguage como Phyton o Perl, tenia mas ventajas un proyecto como este,,, Pero imagino ya tienen el dinero para lograr lo que deseen,

Pero aun asi, yo creo que el stress de esa comunidad debe ser tenaz, tirar un proyecto de esta magnitud con un lenguage para aficionados que quieren llevar a un campo profesional,,, Lo importante es que funcionan y funciono al final… Pero la pregunta es cuantos hacks, cuantos trasnochos, cuanto sacrificio .. eso no vale la pena en la actualidad.

Criskill · enero 27, 2010 a las 3:19 pm

Es una maravilla de innovación y no importa cuantos hacks, cuantos trasnochos, cuanto sacrificio ..etc, etc, blablabla, eso en la actualidad vale mucho $$$$,je.

RAMON JIMENEZ · abril 22, 2010 a las 7:28 pm

necesito a alguien que desarrollo para facebook para realizar un cambio. si alguien de los que lee esto le gustaría esta trabajo extra me avisan al correo forum@virtualwork.cl

iLine · diciembre 17, 2010 a las 8:57 am

El del primer comentario es un imbecil, «Pero la pregunta es cuantos hacks, cuantos trasnochos, cuanto sacrificio .. eso no vale la pena en la actualidad.» por dios, como no va a valer la pena si el resultado de esos trasnochos, de esos hack y de todo ese sacrificio es una empresa de 25.000 millones de dolares! php no tendra la escalabilidad y las ventajas de otros, pero el que quiere puede, y alli esta Facebook, un megaproyecto hecho realidad, rompiendo esquemas y enseñando a mucha gente que por ejemplo el poder de php es el poder del programador mismo, todo se puede lograr con esfuerzo.

"wizard" · diciembre 21, 2010 a las 9:47 pm

Es genial y opino que vale mucho!!!
No importa el «trasnocharse» el tomar cafe como loco y no saber si ya han pasado horas o dias pegado en la maquina. Hay que hacer de esto una pelea de pesos pesados!! Hay que darle siempre hay mucho que aprender 😉 Y cuando te gusta lo que haces y aparte te hace multimillonario mas que mejor….

hitogoroshi · enero 26, 2011 a las 10:42 am

Definitivamente, el del primer comentario es un reverendo imbecil todo esta en quien lo programe y como lo programe

Heginou · marzo 6, 2011 a las 6:27 am

porqueee dicen ke es un imbecil el del primer comment?? porke les duele la verdad que les dice de SU cuenta de facebook? …. que pena… tiene la razon (;

    Santos · mayo 30, 2011 a las 9:07 pm

    Que porque dicen que es un imbecil? Pues facebook, aunque haya sido hecho con «lenguage para aficionados», pero es algo que ya esta hecho, y ahora, te pregunto? que ha hecho (con sus lenguajes profesionales) el autor del primer comentario? o tu mismo que has hecho? La respuesta es «NADA, NO HAN HECHO NADA» ahora, te pregunto a ti, quien es mas imbecil, alguien que con un «lenguage para aficionados» ha logrado bastanto o alguien que de plano no ha hecho nada? Juju.

      Heginou · septiembre 2, 2011 a las 5:49 pm

      que mal que piensas que no hemos hecho nada… el hecho de que yo en mi caso no desarrolle una «pendejada» como facebook no quiere decir que no he hecho nada, créeme en la empresa donde estoy he sido participe de aplicaciones MUY escalables y deployments a nivel nacional,y de lenguajes de todo tipo, así que primero informate «amateur» y no escribas a lo bestia 😉

        Car · octubre 3, 2011 a las 3:14 am

        jaja valla más bien a trabajarle a su jefe, mientras Mark Zuckerberg está tapado en plata probablemente en este momento este en su mansión metido entre una de sus piscinas por haber desarrollado esa ¨Pendejada¨ que ud dice. Y la aconsejo que en vez de estar comentando estupideces se ponga a trabajar o sino lo echan jajajajajajajaj PERDEDOR!!!!

      Vad · junio 28, 2012 a las 8:32 pm

      De acuerdo con vos Santos, la practicidad y los logros no consisten en la elección del lenguaje si no lo que puedas lograr con el, conozco programadores .net desastrosos q no saben ni validar los datos y otros de PHP que implementan mas de seguridad que el propio JAVA que la lleva por defecto.

      Gente, piensen bien antes de tirar un lenguaje abajo, aficionados o no eso habría de discutirlo… .net tiene sus desventajas con PHP, es un juguete de microsoft, con licencia.. y limitado a su plataforma, que tan profesional es eso? Conozco pocas paginas ASP que funcionen rápido, los módulos o códigos predefinidos funcionan a paso de tortuga mmmmm…. yo pensaria en aplicar algo asi mas si es una web publica, que locura… como todo este articulo, aquel que lo escibio obviamente no esta a favor de PHP seguro porq programa en .net jajaj… El analisis real de un lenguaje de programacion u otro consiste en revisar el lado bueno y el lado malo. Algo a favor de PHP?? Sera que miles de programadores se equivocaron de lenguaje? Para ser directo he construido paginas web en php 3 veces mas rapido que en JAVA. Y asp se los regalo para aquellos q quieran pagar licencia y claro por el mismo trabajo final cobrarle mas a un cliente… Saludos!

        Alejandro Escario · junio 29, 2012 a las 11:37 am

        Me ha resultado muy curioso que digas que no estoy a favor de php, cuando más bien es al contrario,… De Hecho tengo varios años de experiencia en PHP y otros tantos en .NET,… Con esto quiero dejar claro que ambos lenguajes tienen sus putos fuertes y débiles, al igual que JAVA, claro.

        Pero por lo que veo, tu si que estás en contra de .NET.

len · enero 6, 2012 a las 2:41 am

Ese cuentico de un chico llamado Mark Zuckerberg se las ingenió y creo, que es paja, este facebook tiene la capacidad de analizar el perfil de cada uno de sus usuarios sin necesidad de cédulas, certificados o pasaportes, sencillamente es un invento mas del sistema de seguridad norteamericano contra el terrorismo, Hay un test que analiza cuan explosivo eres, considerando que un fulano de una ciudad, con un correo, con una foto, un familiar,esos datos cierran un circulo y te ubican geográficamente de modo de ser localizable por si eres un peligro para el sistema. Debería llamarse facebobos, es decir la cara de los bobos.

ALCON NEGRO · marzo 2, 2012 a las 4:25 am

Se dice que Facebook, es un sistema virtual espia, utilizado por EEEUU, y que la historia del Joven rico, es una tecnica mas de los grandes secretos del FACEBOOK…

chon · junio 17, 2012 a las 7:19 am

Que mas da!, que se preocupen los terroristas… a mi que!

alejandro · septiembre 23, 2012 a las 3:52 am

si el primer comentario apesta y mira mijiito priimero aprenda bien sobre el tema y ayy empieze ha hablar me imagiino que tuu no as de poder limpiarte el rabo. piensa antes de hablar ´pr que hacer una red como la que es facebook es algo muy complicado de desarrollatlo piensa y opina tarado

brenda · noviembre 13, 2012 a las 11:27 pm

esta aburridoo que weba no esta lo que`busko qe asko dadadadad jejeje `perdon solo digoo la verdad

juan carlos bobadilla · diciembre 5, 2012 a las 11:26 am

wuena choro supèr bueno el face…

Por qué la Operación Facebook era inviable? | Andrés Ciceri · noviembre 7, 2011 a las 3:23 am

[…] Enter.com Dipler.org Share this:TwitterFacebookLinkedInLike this:LikeBe the first to like this post. Esta entrada fue […]

El funcionamiento de Facebook por dentro | CoCoLink · octubre 16, 2012 a las 2:31 pm

[…] [Vía] Compartir: […]

Los comentarios están cerrados.