De cero a multinacional con Grails y EC2

56
De cero a multinacional con Grails y EC2 Eloy García-Borreguero – Grupo Evandti Jorge Uriarte – Gailen Tecnologías

description

Charla del SpringIO 2011 junto con Jorge Uriarte en la que contábamos los primeros pasos de la parte técnica de Ticketbis.

Transcript of De cero a multinacional con Grails y EC2

Page 1: De cero a multinacional con Grails y EC2

De cero a multinacionalcon Grails y EC2

Eloy García-Borreguero – Grupo EvandtiJorge Uriarte – Gailen Tecnologías

Page 2: De cero a multinacional con Grails y EC2
Page 3: De cero a multinacional con Grails y EC2
Page 4: De cero a multinacional con Grails y EC2
Page 5: De cero a multinacional con Grails y EC2

Un vistazo atrás

Page 6: De cero a multinacional con Grails y EC2

Pidiendo consejo

Page 7: De cero a multinacional con Grails y EC2

de Java a Grails...

Page 8: De cero a multinacional con Grails y EC2

de Java a Groovy

Page 9: De cero a multinacional con Grails y EC2

Idioms, conceptos, aprendizaje...

Page 10: De cero a multinacional con Grails y EC2

Rendimiento, profiling...

Page 11: De cero a multinacional con Grails y EC2

Cuidado con el diseño...

Page 12: De cero a multinacional con Grails y EC2

¿Por qué Grails?

● Promesa de productividad● Amortización de experiencia Java● Integración empresarial● Plataforma JVM conocida● Plugins

Page 13: De cero a multinacional con Grails y EC2

¿Por qué Grails?

● Promesa de productividad● Amortización de experiencia Java● Integración empresarial● Plataforma JVM conocida● Plugins

Page 14: De cero a multinacional con Grails y EC2

Riesgos

● ¿Rendimiento? ¿Penalización de groovy y capas extra?

● Estabilidad de la base de código (v1.0.x -> )● Salud de la comunidad, soporte, plugins...● Curva de aprendizaje

Page 15: De cero a multinacional con Grails y EC2

Alternativas

● Java / Spring / ...● Rails● PHP● ...

Page 16: De cero a multinacional con Grails y EC2

¿Por qué EC2?

● En uso en sistemas internos, desarrollo, preproducción desde 2008

● Diferir la decisión de “cuántos hierros comprar”● “Autoservicio instantáneo” vs. “problemas de

aprovisionamento”● Control absoluto vs. “Platform as a Service”

Page 17: De cero a multinacional con Grails y EC2

¿Por qué EC2?

● En uso en sistemas internos, desarrollo, preproducción desde 2008

● Diferir la decisión de “cuántos hierros comprar”● “Autoservicio instantáneo” vs. “problemas de

aprovisionamento”● Control absoluto vs. “Platform as a Service”

Page 18: De cero a multinacional con Grails y EC2

Riesgos de EC2 en 2009

● ¿Rendimiento y estabilidad?● “pequeño cliente en gran proveedor”● Servicios en evolución (¿load balancer, sticky

sessions, persistencia de instancias, clustering, ...?)

● ¿Caro? Alquiler vs Compra

Page 19: De cero a multinacional con Grails y EC2

Alternativas a EC2 en 2009

● Hosting “tradicional”● PaaS: GAE, ¿Otros?● No mucho más...

Page 20: De cero a multinacional con Grails y EC2

Decidido: Grails & EC2

Page 21: De cero a multinacional con Grails y EC2

Desarrollo inicial

Page 22: De cero a multinacional con Grails y EC2

Desarrollando en 2009

● Se inició el desarrollo con la versión 1.1● Productividad aceptable● Aspectos de inmadurez (recarga en caliente,

soporte de pruebas, bugs con namespaces,...)● Carencia de un blueprint de arquitectura

estándar. Hubo que improvisar.

Page 23: De cero a multinacional con Grails y EC2

Desarrollando en 2009

● Soporte de IDEs “inmaduro” y “lento”● Herramientas de apoyo no satisfactorias o no

adaptadas del todo (formato, QA, profiling, ...)● Buenas sensaciones de la evolución del

producto, nuevas versiones, bug-fixing y workarounds

Page 24: De cero a multinacional con Grails y EC2

Echábamos de menos...

● Sistema de workflows: Varias opciones, ninguna madura, ninguna bendecida.

● Terminamos por inventar nuestra propia, pequeña rueda: “grails-fsm-plugin”

Page 25: De cero a multinacional con Grails y EC2

Nuestro primer plugin - fsm

Page 26: De cero a multinacional con Grails y EC2

La iluminación de los plugins

● Aspectos, comportamientos, extensiones...

● DSLs específicos...● Integración de librerías

Page 27: De cero a multinacional con Grails y EC2

Internacionalización - Idiomas

Page 28: De cero a multinacional con Grails y EC2

I18n estándar + Spring

● Vistas● Bundle● Lógica específica de país/idioma

Page 29: De cero a multinacional con Grails y EC2

I18n estándar + Spring

● Vistas● Bundle● Lógica específica de país/idioma

Page 30: De cero a multinacional con Grails y EC2

...pero echábamos de menos...

● Internacionalización del dominio de la aplicación

● Cómo pasar entidades del sistema a multiples idiomas

● ¿Modificar todas las capas, desde BD hasta accesos a atributos en vistas?

Page 31: De cero a multinacional con Grails y EC2

Nuestro segundo plugin: i18n-fields

Page 32: De cero a multinacional con Grails y EC2

Nuestro segundo plugin: i18n-fields

● Más complicado si quieres actuar antes de que GORM/Hibernate hagan su magia

● Primer uso serio de las transformaciones AST de Groovy

● Sensación de potencia (y algo de miedo)● Éxito final, transición suave sin cambios en

código cliente

Page 33: De cero a multinacional con Grails y EC2

Dudas que todavía teníamos

● ¿Va a haber problemas con el despliegue en Amazon EC2?

● ¿Podemos usar herramientas que nos faciliten la vida?

● ¿Soporte a avalanchas de usuarios?– Caché de páginas “ad-hoc” vía OSCache (vs . EHCaché

en GORM)

Page 34: De cero a multinacional con Grails y EC2

Internacionalización - escalabilidad

Page 35: De cero a multinacional con Grails y EC2

Problemas en EC2 en 2009

● Falta de “sticky sessions” en balancer (ELB)● Falta de soporte multicast para clustering● Problemas https en ELB● Demasiado trabajo “a mano”

Page 36: De cero a multinacional con Grails y EC2

Palancas para “pasar nivel”

● Terracotta● Integración de Springcache● Cloudfront

Page 37: De cero a multinacional con Grails y EC2

Evolución de la arquitectura en EC2

Page 38: De cero a multinacional con Grails y EC2
Page 39: De cero a multinacional con Grails y EC2
Page 40: De cero a multinacional con Grails y EC2
Page 41: De cero a multinacional con Grails y EC2
Page 42: De cero a multinacional con Grails y EC2
Page 43: De cero a multinacional con Grails y EC2
Page 44: De cero a multinacional con Grails y EC2
Page 45: De cero a multinacional con Grails y EC2

Explotación – Operación● WAR único● Script centralizado orquestando despliegue

● Cambio de modelo -> Limpieza TERRACOTTA

● Breve downtime:● Despliegue gradual● Mirror del entorno● AWS Beanstalk

Page 46: De cero a multinacional con Grails y EC2
Page 47: De cero a multinacional con Grails y EC2
Page 48: De cero a multinacional con Grails y EC2

El futuro

Page 49: De cero a multinacional con Grails y EC2

2 años después...

● El desarrollo es mucho más estable y productivo

● El soporte de IDEs ha mejorado mucho● Migraciones indoloras desde 1.1 hasta 1.3.x● Existe un “core” de plugins estable que mejora

la plataforma

Page 50: De cero a multinacional con Grails y EC2

2 años después...

● Aún es un infierno recargar clases de dominio● Mucha magia sigue siendo secreta y poco

documentada● Insuficientes herramientas de soporte aún● Sorpresas agradables (Spock, remote-

control, ...)

Page 51: De cero a multinacional con Grails y EC2

Ya no sabría vivir sin...

● Generación de XML es mágica, crítico para integración con sistemas externos

● Sintáxis “semi-funcional” muy potente● Magia incluída en el lenguaje● Inyección e integración de librerías en el

lenguaje vía DSLs

Page 52: De cero a multinacional con Grails y EC2

Problemas de diseño

● Peter ya nos lo advirtió...● Tendencia a modelo anémico, con lógica en

torno a clases de “Servicio”– Fomentado por que el dominio no recarga en caliente– Inducido por la propia literatura– Problemas en inyección de dependencias al dominio– Es algo que se puede combatir/revertir

Page 53: De cero a multinacional con Grails y EC2

¿Rendimiento?

● Grails/Groovy nunca han sido el problema● Tuning de BBDD y app sigue siendo la clave

● Tuning de JVM y de los GC – Peor que JEE● Groovy sí ha sido un problema en esto● Las grandes caché en Java son todo un reto

Page 54: De cero a multinacional con Grails y EC2

2 años después...

● Estabilidad incuestionable● Rendimiento bueno● Evolución continua● Servicios que surgieron “por el camino”:

● LBS (+https, +sticky), RDS, Cloudfront, Email● Cloudwatch● Beanstalk

Page 55: De cero a multinacional con Grails y EC2

¿conclusiones?

Page 56: De cero a multinacional con Grails y EC2

http://www.ticketbis.com http://www.gailen.es http://www.eventbis.comhttp://www.gailen.es http://www.ticketbis.com http://www.eventbis.com