Contribuye

 

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

 

comments powered by Disqus