style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Grails, opción real y escalable para sitios web de alta carga.

 

He estado trabajando poco mas de un año en un proyecto que usa Grails, desde que lo comencé no pensé que se convertiría en lo que es ahora, es decir no pensé que llegara a tener tanta carga.

Básicamente es una tienda en linea, con diversas formas de pago. El stack de tecnologías se compone de varias cosas:

 

 

Usamos varios plugins de Grails entre ellos:

 

 

Y algunas librerías como:

 

 

 

Estamos modularizando la aplicacion en mas aplicaciones y tenemos una app que usa Scala con ScalaQuery para la base de datos, en el futuro haremos muchas mas cosas con Scala y Akka.

Para JavaScript usamos JQuery y varios plugins.

Para trabajar usamos IntelliJ IDEA 10, Gradle, Archiva, Jira, Git, GitHub y mucha cerveza y café.

Un miembro del equipo desarrollo herramientas de monitoreo que revisan la salud de los load balancers y reportan los errores con mensajes directos de Twitter con Shell Scripts. También usamos logstalgia para monitorear casi en tiempo real la carga en los web servers.

El hardware esta compuesta de 5 cajas RHEL 5 de 64 bits, un LoadBalancer y un Firewall físicos. El load balancer dirige el trafico a los Apache HTTPD de 4 cajas, en cada una de esas cajas, esta  configurado con mod_proxy usando AJP hacia 2 Tomcats con un fail over a otra caja. En total se tienen 8 Tomcats atendiendo todo el trafico. Una de esas cajas tiene instalado RabbitMQ y otra caja Terracotta. Se usa una caja exclusivamente como servidor de mySQL.

Las cajas tienen los siguientes specs:

 

  • Dual Quad Core Xeon 2.26 HGZ
  • 24 GB de RAM
  • 300 GB SAS X 3

 

Estas cajas están en el hospedaje dedicado de RackSpace en Chicago.

Con todo lo anterior hemos podido suscribir 1.5 Millones de personas, logrado una carga tope de 80,000 usuarios concurrentes y 30,000 http request por minuto.

Unas de las claves ha sido usar procesamiento asíncrono con RabbitMQ y usar muchísimo el cache distribuido con Terracotta. Ademas de contar con un equipo de 4 desarrolladores mexicanos (yo entre ellos) y un alemán, con mucho talento todos ellos.

Grails es una excelente opción para desarrollo web, nos ha permitido implementar rápidamente los requerimientos de negocio, hemos hecho en un día hasta 12 despliegues de la aplicación sin sufrir downtimes. Grails es una herramienta que facilita el desarrollo web sin perder poder en los frameworks en los que se basa como Spring, Hibernate y otros...

Les dejo un video del análisis casi en tiempo de real que hace logstalgia del log de acceso de los 4 webservers

 

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Super interesante. Lo que me

Super interesante.

Lo que me causa duda es porque necesitan hacer 12 despliegues en un día? Alguna razón de negocio habrá en ello, no creo que sea descuido.

Felicidades por esos números, ya veré el video cuando salga de este firewall.

Chau!

Imagen de domix

La cantidad de despliegues

La cantidad de despliegues dependen de los cambios que necesite el negocio, muchas veces no, bugs, merges de branches que no eran, etc.

Imagen de bferro

No vendría mal comentar esas tecnologías

Sería bueno, que Domingo comente (por supuesto de manera breve) qué cosas importantes de clickonero resuelve con las tecnologías que está usando. (que son "varias"). Así se fomenta el uso de ellas.

Buena influencia

Pues a mi me ha despertado esa curiosidad de ver como funciona eso de Logstalgia y hace un par de dias vi en un twit de @domix que usaba JavaMelody. No pude aguantarme las ganas de probar ambas herramientas y en resumen:

Logstalgia es un inspector de logs de servidores de aplicaciones (o solo web server) que lee la traza que lanza un log (que debe tener un formato especial) y que lo muestra en una animacion como si fuera un juego de pong donde te muestra las ip's que se conectan a tu servidor y lanza la pelotita al recurso que solicitas y cuando regresa la pelotita (en el rebote) te indica que mensaje HTTP retorna... eso visualmente esta muy muy muy chido (y funcionalmente pos' obvio que tabien)

Lo de JavaMelody, Wow que cosa tan maravillosa, no tenia la suerte de probarlo hasta apenas ayer y vi que puedes monitorear casi todos los temas de performance de tu aplicacion web y la instalacion de esta herramienta es sumamente sencilla

Y a que va todo esto que platico? Ah, pues por lo que veo esto lo usa Domingo en sus aplicaciones y esto es como un mensaje subliminal que dice "Le estan metiendo cosas bien interesantes a su tienda en linea" por lo que puedo decirles que montar las herramientas ya mencionadas es una uena influencia para que decidas tambien adoptarlas

+1 @domix

Imagen de domix

El proximo 22 de octubre ne

El proximo 22 de octubre ne la reunión de SpringHispano y GrailsMX dare una charla donde elaborare estos temas mas a detalle, por si les interesa, en breve pondremos mas información.

Comparativa de tecnologías

Gracias por compartir los detalles de implementación del sitio web. Como dice bferro, sería interesante tener más feedback sobre tu experiencia con esas tecnologías y también el proceso que te llevó a escogerlas en vez de otras.
Por ejemplo, para RabbitMQ, me gustaría saber si por alguna razón particular lo prefirieron a ActiveMQ.

Asistan a la reunión

Los invitamos a la reunión de la comunidad de Springhispano y de GrailsMx
http://loseventos.de/springhispano/sh22

Saludos

Y de ?

Y si no es indiscreción, de quien es ese mounstrito ?, o es "top secret"?

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">