Mediacast 2.0 en JRuby on Rails

Igor Minar ha publicado en su blog que han reescrito por completo mediacast, una aplicación web para que los empleados de Sun puedan publicar archivos.

Al parecer, la versión anterior estaba desarrollada con Servlets+JSP+Filtros y resultaba dura de mantener, por lo que decidieron reescribirla desde cero. Él sugirió que en el nuevo desarrollo se utilizara Rails con JRuby para desplegarlo en un servidor java. El equipo lo formaban él, que ya tenía alguna experiencia con Ruby on Rails, y otros dos compañeros más, éstos sin experiencia con Ruby o JRuby.

Algunas de sus razones para usar JRoR:

  • Al comenzar desde cero, no tenían código heredado
  • Utilizar el proyecto como prueba de concepto para otros usos
  • Comprobar que se cumple la promesa Rails para el desarrollo rápido
  • Algo nuevo y divertido para el equipo, para equilibrar las cosas no tan divertidas (La que más me ha convencido:P)

Por lo que comenta, la arquitectura de la aplicación no es demasiado compleja, aunque para mejorar el rendimiento utilizaron cacheos.

En el entorno de producción cuentan con un par de servidores balanceados T2000 con una unidad NAS compartida para el almacenamiento de ficheros, con Solaris 10, el JDK6, Sun Application Server 9.1 como servidor de aplicaciones y un servidor MySQL. Lo único que se echa de menos es que no de números de la carga que suele soportar el entorno de producción.

En cuanto al desarrollo, el core de la aplicación lo tuvieron listo en poco tiempo y parece que gracias a la poca cantidad de código necesario, el código lo revisaban rápidamente y los bugs los solían solucionar con pocas líneas de código. Encontraron problemas por no poder utilizar la mayoría de las gemas basadas en C y con las peticiones largas, que les supusieron la mayoría del tiempo de trabajo, ambos problemas los acabaron solucionando usando Java.

Que yo conozca, es la segunda aplicación que desarrolla una gran empresa con JRuby on Rails, tras Oracle Mix. Habrá que estar pendiente de los lenguajes dinámicos como JRuby y Groovy, pudiendo reaprovechar el conocimiento ya existente en Java y si va mejorando el rendimiento de estos lenguajes, quizás se empiecen a tener en cuenta como otra opción más dentro de la plataforma.