Estuve casi todo el día mirando la presentación de Raffi Krikorian, VP de Ingeniería de Twitter, sobre la infraestructura de los Timelines de Twitter y su escala para no caer como era costumbre de ellos. Para tener una idea de la escala de datos que estamos hablando: cuando Lady Gaga manda un tweet, en menos de 1 minuto tiene que estar en el timeline de sus 31 millones de seguidores y si no aparece, van a existir quejas y llantos... pero al mismo tiempo esa infraestructura es la que mantuvo a mucha gente cubriendo constantemente las marchas en Egipto y el fallido aterrizaje de Asana en San Francisco.
Algunos números que me llamaron la atención: con más de 150 millones de usuarios activos, hay unos 300.000 QPS (con apenas la 20ma parte siendo para publicar, consumo vs creación), esto se convierte en unos 400 millones de tweets al día que es el famoso "firehose"...
El promedio de tweets diario, unos 5.000 por segundo, se convierten en unos 7.000/s en horas picos pero se pasan los 12.000/s en eventos grandes (es facil de decir, pero es casi triplicar lo que se maneja como "promedio") y cuando hay grafos desproporcionados como @ladygaga y 31 millones de seguidores o @barackobama con 23 millones lo que se da es una inexistente bidireccionalidad o un asincronismo; la gente quiere leerlos y consumir sus contenidos pero no generar el suyo y repito es muy interesante verlo... teras de RAM haciendo inserts ;)
Tal vez lo más interesante de la presentación y el genial análisis que hace Todd Hoff está en el desafió que plantea una frase:
"Twitter no quiere ser una app. Twitter quiere ser un set de APIs que empujen clientes móviles en todo el mundo, sirviendo como un medio para eventos en tiempo real en el planeta"
Y si vemos lo que generan los "Outliers" que nombramos arriba.. se genera un "asincronismo" literal entre las interacciones de Twitter y eso es lo que NO puede pasar a nivel negocio; en este punto es donde la infraestructura y la escalabilidad se convierten en un punto clave del negocio.
Links: Audio y presentacion y análisis de HighScalabity MUY recomendados.