Twitter sobrevive a la avalancha

Que Twitter, uno de los estandartes importantes de promoción de Ruby y en especial de su framework para aplicaciones web Ruby on Rails (RoR), estaba migrando partes de su sistema a Java, no es ninguna sorpresa ni ninguna novedad. Ya migraron de MySQL a Lucene y De RoR a Java con Netty  con la pretensión de mejorar sus sistemas de búsqueda hace más de un año. El problema, el de siempre: el tráfico masivo.

Twitter comenzó a alejarse de Ruby en 2008, cuando la compañía «chocó contra un muro», en palabras del ex desarrollador de Twitter Alex Payne. «Hay un montón de cosas que Ruby hace muy bien», dijo Payne «pero con los procesos que están mucho tiempo en ejecución y particularmente los que requieren mucha memoria, no es así.» La solución de Twitter fue migrar parte de su código Ruby a una pila que se ejecuta en la JVM. Inicialmente, el equipo de desarrollo de la compañía evitó Java en favor de Scala, un lenguaje alternativo JVM que combina aspectos de la programación orientada a objetos y funcional. Hoy en día, el software de Twitter se construye a partir de una mezcla de Scala y código Java ordinario. Algunos servicios de Twitter todavía se ejecutan en Ruby, también, pero de acuerdo a Rawashdeh estos se utilizan cada vez con menos frecuencia. En particular, dice Twitter tiene reconfigurado su sistema de modo que el tráfico desde dispositivos móviles nunca toca el software basado en Ruby.

Twitter experimentó casos de alto tráfico en el pasado pero con «picos de muy corta duración, segundos»: Año Nuevo (6939 tweets por segundo, o TPS), al final de un partido de fútbol (7196 TPS), o el anuncio del embarazo de Beyoncé (8.868 TPS). Pero dicen que «Ahora, en lugar de picos breves, estamos viendo picos sostenidos durante horas».

Según cuentan en un post de hace un par de días, últimamente esos picos son mucho más duraderos en el tiempo y más altos. Por ejemplo, señalan que en las elecciones recién pasadas, tuvieron el pico más alto en 15107 TPS y 874,560 TPM. Y se puede decir que «sobrevivieron» a las elecciones.  «Con el tiempo, hemos estado trabajando para construir una infraestructura que pueda soportar una carga cada vez mayor. Por ejemplo, hemos ido optimizando el tiempo de ejecución de Ruby. Y, como parte de nuestra migración, hemos reconfigurado el servicio para que  el tráfico de nuestros clientes móviles llegue a la pila de la Máquina Virtual Java (JVM), evitando la pila de Ruby por completo.»

En resumen, un punto para Twitter. Todos los que llevamos algo de tiempo usando éste servicio sabemos que uno de sus puntos débiles habían sido siempre las sobrecargas de tráfico pero, visto lo visto, ¿estaremos asistiendo en silencio a la desaparición casi total de la ya famosísima «Twitter Fail Whale»?