Probablemente hace bastante tiempo que ninguno de vosotros ve la ballena blanca de Twitter, indicador de que el servicio está caído. Una de las claves para haber conseguido una mayor robustez y escalabilidad en el servicio ha sido el propio movimiento de la infraestructura de Twitter desde Ruby, donde comenzó originalmente, hacia Java. Primero comenzaron a usar Scala, que compila a bytecode y corre sobre una máquina virtual Java, y ahora emplean también el lenguaje Java.
Esta migración de Ruby a Java es todavía un trabajo "en proceso" que comenzó en 2008 con la migración de la cola de mensajería del sistema a Scala. En palabras de un desarrollador de Twitter en aquellos momentos:
There's a lot of things that Ruby is great at, but long running processes, Particularly memory intensive ones, Not so much.
En estos momentos la migración de la versión para clientes móviles de Twitter ya es completa, de tal modo que cuando accedeis al servicio desde vuestro terminal móvil las peticiones no tocan ningún código Ruby; es todo código ejecutándose en una máquina virtual Java el que genera la respuesta.
Esta migración es la clave para conseguir haberse desecho de la ballena blanca, tan habitual en los primeros años de Twitter. Y es la clave para ver incrementado la escalabilidad: en las elecciones presidenciales de 2008 de Estados Unidos el máximo de tweets por segundo fue de 229; en la de 2012 ha sido 15,107 tweets por segundo.
A modo de curiosidad, comentar que en estas elecciones también se ha generado el tweet más retweeteado de la historia: Barack Obama le ha quitado el record a Justin Bieber con un tweet enviado la noche de la jornada electoral en la que decía "Four more years", y que incluía una fotografía del presidente abrazando a su mujer. La última vez que miré tenía más de 800,000 retweets.
Twitter, que inicialmente se consideraba como el principal caso de éxito de Ruby, se ha transformado en un caso de éxito para Java.