Notas sobre el taller de Last.fm en el FOWA 2007
# por álvaro · 26 February 07 · 12 comentarios, escribe el tuyoAlgunas notas desordenadas tomadas el pasado jueves en el taller de Last.fm en el Future Of Web Apps de Londres. Fue un taller de tres horas el tercer día de la conferencia, titulado Scalable LAMP Development for Growing Web Apps. El taller corrió a cargo de Matt Ogle, coordinador del equipo de desarrollo de Last.fm.
- Su servidor de BD es MySQL y la máquina donde está el maestro tiene actualmente 16 procesadores. Usan InnoDB (no dio detalles pero también, como muchos otros, odia MyISAM). Aunque dijeron que hablarían del tamaño de la BD y el esquema de replicación, al final no lo hicieron (a ver si localizo a Matt para preguntarle estas y otras cosillas).
- Utilizan TRAC como gestor de proyecto, donde se integra el Subversion, gestión de incidencias y peticiones, etc. Además han hecho un bot de IRC que actualiza un canal de IRC interno con los commits del subversion, las actualizaciones/nuevos tickets, el despliegue de cambios en los servidores en producción y otros indicadores sobre el estado de la plataforma. También lo utilizan para pedirse las cosas unos a otros. Es lo que llaman “osmotic communication”: que toda la empresa esté al loro de lo que pasa en los diferentes rincones.
- A raiz del interés demostrado por la gente en este bot, lo han liberado.
- En linea con esto, utilizan metodología SCRUM para el desarrollo: basicamente consiste en iteraciones constantes con sprints relativamente cortos en vez de la planificación de grandes releases. Es decir, en vez de planear cambios radicales que duran meses planean sacar pocas funcionalidades cada dos o tres semanas. Esto lo han adoptado después de sufrir en sus propias carnes lo primero: sacar una release que se retrasa primero una semana, luego un mes, luego se sigue retrasando…
- Otro punto interesante de esto del SCRUM es la aproximación al trabajo en equipo y las reuniones: se plantea una reunión diaria muy corta, donde se plantea a cada desarrollador tres preguntas: ¿Qué has hecho desde la última reunión SCRUM? ¿Tienes algún obstáculo? ¿Qué harás antes de la próxima reunión SCRUM?
- People Trump Process. Hay que conseguir que el proceso no estorbe, que las cosas fluyan.
- Utilizan Perlbal para balancear. Con un servidor con Perlbal son capaces de servir más de 4.000 peticiones/segundo hacia 25 servidores web. Diskless netboot webservers: Los servidores web no tienen la aplicación instalada en el disco duro, sino que la aplicación se despliega a memoria a través de la red (no me quedó muy claro si todo el SO está en memoria -ni siquiera si algo así es posible-). Perlbal permite modificar su configuración en caliente: puedes añadir y quitar nodos sin tener que rearrancar.
- Utilizan Memcached y lo tienen clusterizado en todos los servidores web, de modo que tienen una Memcache de 25 GB. Su hit ratio es de más del 90%. Es decir, 9 de cada 10 consultas a la BD están en caché, y a la BD solo le llega una de cada diez. Si se añaden más máquinas al cluster de Memcache se invalida la caché, por lo que se sufre un poco hasta que vuelve a estar en caché lo más pedido. Dicen que están trabajando en una modificación para permitir el añadir máquinas sin que se invalide la caché, aunque va lento.
- Utilizan Lighttpd para servir estáticos (imágenes del site, hojas de estilo). Y MogileFS (un sistema de ficheros distribuido y redundado) para los avatares, las portadas de discos, etc.
- Compilan los diferentes archivos de CSS y de JS de forma automática en uno de cada para reducir el número de peticiones al servidor web y mejorar la velocidad.
- Utilizan Rhino para comprobar errores de forma automática en el JS y comprimirlo (es Java).
- Para monitorización Ganglia y Nagios.
- Utilizan Hadoop (que implementa el paradigma map/reduce -the application is divided into many small fragments of work, each of which may be executed or reexecuted on any node in the cluster-) para procesar de forma distribuida y paralalela grandes cantidades de información. El ejemplo que puso fue el procesamiento de las listas semanales de los usuarios; antes de Hadoop el proceso tardaba 24 horas y con Hadoop solo 45 minutos.
- En los primeros días de la compañía, el CEO hacía la comida para todo el mundo (hasta que fueron demasiados).
Dos conclusiones:
- Brad Fitzpatrick de LiveJournal es el creador (y liberador!) de Memcached, Mogile y Perlbal. Se merece una posición privilegiada en el cielo de los desarrolladores web (y eso que nosotros solo utilizamos el Memcached).
- Hay un montón de similitudes entre la forma de trabajar de Last.fm (una aplicación web graaande) y la nuestra, que estamos desarrollando una aplicación web mucho más pequeña pero que está creciendo mucho. Eso indica que estamos en el buen camino, supongo (aunque en el momento de escribir este post el site está caído…).






February 26th, 2007 at 9:25 pm
Jamás imaginé, que dentro de toda la diversión del e quipo desarrollador que muestran en su flickr, había un milagro de la programación y administración de servidores.
February 27th, 2007 at 4:34 am
Muchas gracias por publicar esto. Es muy útil, sobre todo para aquellos que no podemos ir a las conferencias en Europa :|.
¿Dieron alguna información sobre la base de datos que utilizan? ¿La distribución? ¿Los esquemas de replicación?
A propósito, el enlace de Ganglia apunta hacia el sitio de Rhino. Creo que debería ser este: http://ganglia.sourceforge.net/
February 27th, 2007 at 4:40 am
Bueno, por el título de la charla supongo que usan MySql, ¿no?
February 27th, 2007 at 10:45 am
Cavorite, si, usan MySQL, he actualizado el post. También he corregido el enlace, gracias!
February 27th, 2007 at 4:05 pm
Gracias, un análisis muy interesante del taller.
Siempre es bueno conocer como les funcionan las ‘tripas’ a los grandes y así los pequeños aprendemos a hacer las cosas.
March 1st, 2007 at 11:38 pm
Joe, pa flipar, muy muy interesante y muchas gracias por contarlo :P
March 3rd, 2007 at 4:58 pm
[…] - Las Historietas del Abuelo rompe la creencia de que la SER no cumple :P - Franco y la nueva tecnología Wireless que hace furor :P - 5Líneas y un set de iconos gratuitos - Martin Varsavsky y el ataque xenofobo en España… de no creer! - Alex Sancho se enamora de vista… la realidad es que antes de cambiar de herramientas lo probé y lo colgue :P - zonageek y una interesante herramienta: Learn Mandarin a la que le doy un loco de link-love porque se lo merece :P - Herme García habla de la postura de Telefonica frente a la Neutralidad de la red… como sabe este tio :) - furilo y unas notas geniales sobre el taller de last.FM - el ciprés en el patio y el robo a mano armada :P - Smashing Magazine y 50 diseños en CSS puro geniales - eConectados y la herencia de al-Andaluz en España… - Retiario y el problema de los bugs ;) - Periodistas 21 se lanza a una nueva aventura periodística! (y de pas todos le quieren mandar el CV :P) - Caspa.tv y el robapáginas más grande del mundo… que no es intrusivo :P - Franco Giménez y su opinion de migoa - manu y el bloggeo de anticipacion (era fake :P) - Luis Beltrán muestra que las inundaciones son cosa del pasado en BA - Isopixel y la cercanía de Photoshop online.. igual se está esperando hace mucho :P - Nacho Escolar y la censura en los blogs :P […]
March 5th, 2007 at 1:07 am
[…] - Justo la semana que mi jefe descubre Last.fm, en Furilo se publican unas notas que muestran su funcionamiento interno. Por cierto, también se han enterado de la existencia de Joost y ando como loco intentando conseguir alguna invitación, si alguien se presta.. (he participado hasta en un concurso de chistes) Y es que la web avanza y avanza.. […]
March 9th, 2007 at 12:36 pm
[…] Matthew Ogle de Last.fm, ya hablé de su taller, su charla fue una versión corta. […]
March 16th, 2007 at 11:58 am
Yo estuve en la conferencia, pero no me quedé a los talleres del tercer día, muchas gracias por el post. El enlace a lo de la liberación del bot parece que apunta a otro sitio..
peace, O.
March 16th, 2007 at 2:58 pm
[…] Comunicación, entre los distintos equipos de desarollo que cada vez más trabajan de manera remota. Desde Last.fm, por ejemplo, explicaban que tienen instalado un sistema de IRC (Chat) para todas las comunicaciones entre miembros del equipo (ideas, funcionalidades, eventos con servidores, etc). Más. Comunicación también entre una web y sus usuarios. Estos tolerarán mejor cualquier mala noticia si no les pilla por sorpresa. […]
March 21st, 2007 at 1:40 pm
La madre que… ¿y ahora me entero yo de esto? Gracias por el POST Alvaro, y larga vida a Brad y al equipo de LiveJournal, por sus avances en escalabilidad web.