martes, 27 de octubre de 2009

Cómo logra funcionar Facebook con 300 millones de usuarios - primera parte


El vicepresidente de ingeniería, Mike Schroepfer, revela los trucos que hacen que la mayor red social del mundo siga funcionando.



La semana pasada, la red social más grande del mundo, Facebook, anunció que había alcanzado 300 millones de usuarios y que estaba ganando el suficiente dinero como para cubrir sus costes.

El reto de poder funcionar con un número de usuarios tan enorme se ha visto subrayado por una serie de dificultades sufridas por otras redes sociales. Twitter tuvo muchos problemas durante la etapa en que aumentó su capacidad y se hizo tristemente famosa por su “Ballena de Error”—la imagen que aparece cuando los servicios del sitio de microblogging no están disponibles.

Por el contrario, los esfuerzos de Facebook a la hora de aumentar de tamaño se han dado con una suavidad digna de elogio. El sitio soporta alrededor de mil millones de mensajes de chat cada día y, en las horas punta, sirve alrededor de 1,2 millones de fotos por segundo.

El vicepresidente de ingeniería de Facebook, Mike Schroepfer, aparecerá este miércoles en la conferencia EmTech@MIT de Technology Review en Cambridge, Massachusetts. Charló con la editora asistente Erica Naone acerca de cómo se ha enfrentado la compañía al flujo constante de nuevos usuarios y características.

Technology Review: ¿Cuál es la diferencia entre agrandar una red social y, por ejemplo, agrandar una página web de noticias?

Mike Schroepfer: Prácticamente cada una de las vistas en la página viene dada tras un registro de usuario, es una vista de página hecha a medida, y esto no suele ser así en la mayoría de las otras webs. Por tanto lo que ves en pantalla es muy distinto de lo que yo veo, y es también distinto de lo que ve tu hermana. Esto no sólo se aplica en la página de inicio, sino en todo lo que ves a lo largo del sitio. Tu visión del sitio está modificada por quién eres y quién está en tu gráfico social, y eso significa que tenemos que llevar a cabo muchos más procesos y cálculos para poder realizarlo.

TR: ¿Qué ocurre una vez que empiezo a realizar acciones en el sitio? Da la impresión de que eso complicaría las cosas aún más.

MS: Si eres amigo mio y te haces fan de la página de Green Day, por ejemplo, eso se va a mostrar en mi página de inicio, quizá en la sección de destacados, o quizá en el “flujo” general. Si algo así se muestra en mi página, también se mostrará que tres de mis otros amigos son fans. Sólo para mostrar la página de inicio tenemos que funcionar con un grupo de datos extremadamente complejo—que nosotros llamamos el gráfico—en tiempo real y servírselo al usuario en sólo unos segundos o, preferiblemente, en menos de un segundo. Cada día llevamos a cabo varios miles de millones de operaciones como esta.

TR: ¿Cómo se puede manejar todo eso? La mayoría de los sitios logran atender a un número elevado de usuarios mediante el uso del caché—que consiste en calcular una página una vez y almacenar los resultados para después mostrarla muchas veces más. No da la impresión de que algo así pudiese funcionar en este caso.

MS: La mejor arma en la mayoría de los problemas de ciencias informáticas es el caché. No obstante, y como ocurre con la página de inicio de Facebook, se están dando actualizaciones cada minuto o menos, entonces cada vez que cargo la página es una página nueva, o al menos posee nuevos contenidos. Esto hace que sea imposible usar el caché. Hacer cosas en tiempo real pone mucha presión en el sistema puesto que la viveza o frescura de los datos hace que sea necesario hacer peticiones y cálculos en tiempo real.

Hemos construido un par de sistemas de apoyo. Uno de ellos es una base de datos a medida y colocada en la memoria que hace un seguimiento de lo que ocurre en las redes de tus amigos y es capaz de devolver el núcleo de resultados de forma muy rápida, mucho más rápidamente que si hubiese que acceder a una base de datos, por ejemplo. Y después contamos con una arquitectura de sistema muy novedosa que nos permite fragmentar y dividir todos estos datos. Hay demasiados datos y se actualizan muy rápidamente como para colocarlos en una base de datos central. Esto no funcionaría. Por tanto tenemos que separarlos, dividirlos entre cientos de bases de datos, y después tenemos que acceder a esas bases de datos a alta velocidad.

No hay comentarios:

Publicar un comentario