jueves, noviembre 22, 2007

Historia sobre una aplicación en JRuby on Rails de Oracle

jueves, noviembre 22, 2007 por Martín

Hace poco Oracle anunció el lanzamiento de Oracle Mix, la que según afirman es la aplicación más grande desplegada con JRuby on Rails.

Ayer, Rich Manalang, escribía una entrada en el blog de desarrolladores de Oracle en la que relataba lo que ha sido el camino hasta tener esta aplicación en producción.

Rich explica como después del éxito de Connect, la red social de Oracle se pusieron a trabajar en una aplicación para la Oracle OpenWorld. Tenía que hacerse en seis semanas, la aprobaron y contrataron los servicios de ThoughtWorks que puso cuatro desarrolladores con experiencia.

La lectura es interesante, aunque probablemente la parte más jugosa es la del rendimiento. Me permito traducir.

Después de tener las máquinas preparadas comenzamos a hacer los primeros despliegues de JRuby. El rendimiento era terrible. Entre 20-40 req/sec. en un único servidor de aplicaciones. Parece que no había activado algunos de los parámetros de producción (parámetros estándar para despliegues ruby). Conseguí 80 req/sec. en un único servidor... mejor, pero no suficiente. Al mismo tiempo, Ola y el equipo de JRuby encontraron algunos cuellos de botella interesantes dentro del código de JRuby. En un día o dos, Ola y el equipo habían parcheado el código y estabamos ya funcionando sobre las 150-200 req/sec. Después de que el servidor se calentase un poco las cosas se pusieron realmente interesantes... los números subieron un montón (400-600 req/sec).

Para mi una de las conclusiones que saco es que a pesar del desarrollo rápido, estas tecnologías están un poco inmaduras para determinadas cosas. A fin de cuentas, el hardware no era malo del todo: 4 máquinas doble núcleo, con 12 Gb de RAM, la base de datos era Oracle 10g y es de esperar que estuviera bien configurada :-) y aún así parece que hubo que tunear bastante. Y no todo el mundo se puede permitir el tener 4 consultores de ThoughtWorks on-site durante seis semanas. ¡Que estos ingleses trabajan más que por el bocadillo!

Este proceso que relatan es el que se está viendo en la mayor parte de lenguajes dinámicos surgidos durante los últimos años. Al final, todo tiene su tiempo. Esta gente con recursos y posibilidades va haciendo despliegues importantes y con sus recursos encontrando cuellos de botella y aportando parches. Poco a poco los lenguajes se van haciendo maduros, las máquinas virtuales funcionarán cada vez mejor, y pasarán a ser de consumo público.

Ahora bien, supongo que después todo el mundo los empezará a utilizar, dejará de ser especial el trabajar en ellos, y habrá que buscarse otra cosa mejor ;-)

comments

1 Respuestas a "Historia sobre una aplicación en JRuby on Rails de Oracle"
Diego Parrilla dijo...
10:13

Mi experiencia con una aplicación en JRuby es Mingle de Thoughtworks precisamente. Y es lenta de cojones, pero lenta, lenta, lenta!!! Posteé en mi blog sobre el tema y el mismísimo Charles Nutter (líder de JRuby) me dijo que la gente de Thoughtworks le comentó que era porque la aplicación era muy compleja.
Y una mierda va a ser eso complejo. Es un agujero negro de memoria y recursos ¡con un solo usuario necesitas 2Gb de RAM y un procesador de doble nucleo! ¿Nos hemos vuelto locos?
Creo que el problema se debe al uso y abuso del ActiveRecord. El MySQL echa chispas, y me temo que la aplicación no hace un uso óptimo de la base de datos.
Probablemente se pueda optimizar el JRuby, pero Rails es optimizable? Esa es la gran cuestión.
Yo me quedo con Grails.