Videos de la 22a. reunión de SpringHispano y GrailsMX

Hola a todos!

Me da mucho gusto saber que muchos de ustedes después de mucho tiempo siguen aquí. A través de todo este tiempo hemos tratado de difundir más y más el conocimiento acerca del framework Spring y de las tecnologías asociadas alrededor del mismo, de a poco, nos hemos ido mejorando y en esta ocasión me da mucho gusto ponerles las sesiones enteras de lo que fue nuestra última reunión.

Contamos con la presencia de Andrés Almiray quien nos habló de "El ecosistema Groovy"

Y con Domingo Suárez, que nos habló de su experiencia con Grails en una aplicación de alta disponibilidad.

Espero que les guste tanto como a nosotros

Video podcast de ViveCodigo 00x09 - Griffon

Si sólo quieren escuchar el audio:

Hola a toda la comunidad! Desde el sitio de ViveCodigo.org se ha publicado una nueva emisión el podcast donde el tema principal es Griffon con la participación de Andrés Almiray.

Andrés Almiray es un Java Champion mexicano, líder del proyecto Griffon y contribuyente al lenguaje Groovy, que en esta ocasión nos viene a hablar del desarrollo de aplicaciones Desktop. Específicamente de Griffon un framework Groovy basado en Grails para desarrollo de aplicaciones Java que se ejecutan en el escritorio de nuestros sistemas operativos. En la entrevista Andrés nos comenta el presente y futuro de Griffon, así como, de su experiencia desarrollando el framework y la adopción de este tipo de aplicaciones.

22a. Reunion de la Comunidad Springhispano.org & grails.org.mx - #sh22

A toda la comunidad de desarrolladores, se les hace una atenta y honorable invitación a la 22a. Reunión de la comunidad de SpringHispano y GrailsMX en conjunto con las comunidades de Artesanos de Software,Scala-Mug.org y ViveCodigo.org, la cual se realizará el Sábado 22 de Octubre a las 10:00 A.M. 

En esta ocasión tendremos dos presentaciones de la mano de desarrolladores de software expertos en su ramo.

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

Por Domingo Suárez - @domix

En donde nos compartirá su experiencia desarrollando una aplicación con estadísticas muy interesantes

http://grails.org.mx/showContent/83

http://grails.org/blog/view/pledbrook/Yes%2C+Grails+can+handle+heavy+load

Demostrando que pueden realizarse aplicaciones impresionantes con Grails, pero mostrando y resltando la importancia de la integración de diferentes tecnologías

El ecosistema Groovy: groovy/grails/griffon/gradle/spock

Por Andrés Almiray - @aalmiray

El uso de varias tecnologías corriendo en la JVM con un lenguaje dinámico permiten a los desarrolladores incrementar su productividad y efectividad cuando desarollan software, Andrés con su amplia experiencia nos comparte su conocimiento en el uso de estas

Al final de las sesiones les hacemos una cordial invitación a la parte de Networking, en donde conversaremos de múltiples temas, nos acercaremos con los ponentes para algunas dudas adicionales y estaremos disfrutando de un aperitivo.

Los esperamos en San Lorenzo 1009, Colonia Del Valle, México, Distrito Federal cerca del Metro Zapata

Les reiteramos que el evento es totalmente gratuito y lo único que necesitan es registrarse...

Lo pueden hacer desde: http://loseventos.de/sprighispano/sh22

ATTE

Staff de SpringHispano y GrailsMX

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

 

Usar Gradle Wrapper para evitar instalar Gradle

 

Gradle es una excelente herramienta de construcción. Podría ser en conjunto son SBT las mas avanzadas en Java. Durante los años se ha aprendido mucho de la experiencia de herramientas similares como Ant y Maven. Gradle y SBT han sabido aprovechar muy bien esta experiencia para beneficio de nosotros los desarrolladores.

Gradle es relativamente nuevo, muy poca gente lo conoce y puede ser que en algunas situaciones sea impedimento su uso, por que algo tan simple como tenerlo instalado, no ocurre. La gente que desarrollo Gradle pensó en casos en los cuales puedes compartir tu proyecto, pero sin necesidad de instalarlo cuando compartes tu proyecto (en tu maquina si debes tenerlo instalado primero). Esto es fantástico porque por un lado, evitas que la gente que usa tu proyecto, instale Gradle; también es posible que tu proyecto use o requiera cierta versión especifica de Gradle, usando el fabuloso Gradle Wrapper, no tienes porque preocuparte.

Para que esto funcione solo tienes que crear un archivo de configuración de Gradle, generalmente se llama build.gradle. El contenido de este archivo debe tener solo una tarea, como a continuación se muestra:

 

task createWrapper(type: Wrapper) {
    gradleVersion = '1.0-milestone-4'
}

 

Lo que vemos arriba es la definición de una tarea que se llama createWrapper (se puede llamar como tu quieras), que es de tipo Wrapper. Esta tarea lo único que define es la versión de Gradle, que vas a necesitar en tu proyecto. Aquí puede ser cualquier versión valida de Gradle.

A continuación en una terminal de tu sistema ejecutas a Gradle con el siguiente comando en el directorio donde esta tu archivo build.gradle:

 

gradle createWrapper

 

Este comando invoca a la versión de Gradle que tengas en tu maquina instalado, que bien puede ser diferente de la versión que especificaste en tu proyecto. Ya había mencionado que cuando creas el proyecto es requisito tener instalado Gradle, el Gradle Wrapper evita que al compartir tu proyecto debas previamente instalar Gradle. Al terminar de ejecutarse Gradle te habrá dejado en el directorio donde esta tu proyecto los siguientes archivos y carpetas:

 

  • gradle. Carpeta que contiene un jar con las clases necesarias para ejecutar el Gradle Wrapper
  • gradlew. Shell script para sistemas que usen una variante de UN*X
  • gradlew.bat. Archivo por lotes para Windows

 

Cuando compartas tu proyecto solo sera necesario que en lugar de usar el comando gradle, usen gradlew, si no tienen la versión de Gradle, el Wrapper lo descargara de internet y lo instalara (solo descomprime un ZIP en tu directorio home) para que sea usado en tu proyecto.

Así puedes seguir añadiendo mas tareas o plugins a tu build de Gradle o actualizar la versión de Gradle y no forzar a las demás personas que instalen antes de usar tu proyecto. Gradle Wrapper hara ese trabajo.

 

Video podcast de ViveCodigo 00x08 - Android

Hola a toda la comunidad! Desde el sitio de ViveCodigo.org se ha publicado una nueva emisión el podcast donde el tema principal es Android.

Si sólo quieren escuchar el audio:

No se lo pierdan, ya que Enrique Díaz nos platica de su experiencia desarrollando para esta plataforma.

Y aquí les dejamos el screencast:

Saludos

Video podcast de ViveCodigo 00x07 - jAlarms

Desde el sitio de ViveCodigo.org se ha publicado el podcast con una entrevista con Enrique Zamudio(@chochosmx) donde nos habla de uno de sus proyectos: jAlarms (http://jalarms.sourceforge.net/) Un episodio muy divertido y entretenido, la liga original es en: http://vivecodigo.org/2011/07/15/podcast-7-de-la-temporada-0/ Si solo quieres escuchar el audio lo puedes hacer desde aquí:

El video con la entrevista:

Y el Screencast:

Saludos y gracias!

Ejemplos con Spring

Hola a todos!!

Hace tiempo publiqué algo de código de ejemplo y retomandolo veo que aún es usable y les puede servir de algo, hay varios proyectos, se los describo:

  • SpringMVC: Básicos de uso del MVC de Spring para que lo entiendas
  • Switter: Cliente de twitter con Spring y ajax con DWR
  • contact: Básicos de manejo de formas con SpringMVC3
  • jasper-demo: integración de Spring con Jasper Reports
  • swf: Básico de Spring Webflow
  • groovy-cpmx3: Platica de mesa que tuve con varias personas en la Campus Party 2011 acerca de Groovy

Espero les sirvan...

La liga es;

https://github.com/neodevelop/examplesspring

Taller Oficial Core Spring en México D.F. 20-sep-2011

Taller de Core Spring

Video / Podcast de ViveCodigo 00x06

Si solo quieres escuchar el audio de la entrevista:

La liga con la fuente original: http://vivecodigo.org/2011/07/15/podcast-6-de-la-temporada-0/

Desde el sitio de ViveCodigo.org En este episodio entrevistamos a Daniel Zavala(@Siedrix) que nos está hablando de NodeJS, Javascript del lado servidor. Daniel nos explica detalladamente que es y para que sirve NodeJS, nos comparte su experiencia desarrollando para esta plataforma, y comenta mucho de la experiencia que ha tenido en comunidades y uso de algunas herramientas que circulan en el ecosistema de Javascript.

En la demo de código @Siedrix muestra el uso de NodeJS a través de la lectura de múltiples archivos de forma síncrona y asíncrona. Muy recomendable....!!!!

Que lo disfruten