Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Grails y EC2 - De cero a multinacional

1,819 views

Published on

Transparencias de base de la charla en Spring I/O 2011 sobre el recorrido tecnológico del proyecto http://www.ticketbis.com desde su concepción hasta su despliegue internacional.
Escalabilidad de la arquitectura, de la plataforma de desarrollo, etc...

Published in: Technology

Grails y EC2 - De cero a multinacional

  1. 1. De cero a multinacional con Grails y EC2 Eloy García-Borreguero – Grupo Evandti Jorge Uriarte – Gailen Tecnologías
  2. 2. Un vistazo atrás
  3. 3. Pidiendo consejo
  4. 4. de Java a Grails...
  5. 5. de Java a Groovy
  6. 6. Idioms, conceptos, aprendizaje...
  7. 7. Rendimiento, profiling...
  8. 8. Cuidado con el diseño...
  9. 9. ¿Por qué Grails?● Promesa de productividad● Amortización de experiencia Java● Integración empresarial● Plataforma JVM conocida● Plugins
  10. 10. ¿Por qué Grails?● Promesa de productividad● Amortización de experiencia Java● Integración empresarial● Plataforma JVM conocida● Plugins
  11. 11. 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
  12. 12. Alternativas● Java / Spring / ...● Rails● PHP● ...
  13. 13. ¿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”
  14. 14. ¿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”
  15. 15. 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
  16. 16. Alternativas a EC2 en 2009● Hosting “tradicional”● PaaS: GAE, ¿Otros?● No mucho más...
  17. 17. Decidido: Grails & EC2
  18. 18. Desarrollo inicial
  19. 19. 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.
  20. 20. 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
  21. 21. Echábamos de menos...● Sistema de workflows: Varias opciones, ninguna madura, ninguna bendecida.● Terminamos por inventar nuestra propia, pequeña rueda: “grails-fsm-plugin”
  22. 22. Nuestro primer plugin - fsm
  23. 23. La iluminación de los plugins ● Aspectos, comportamientos, extensiones... ● DSLs específicos... ● Integración de librerías
  24. 24. Internacionalización - Idiomas
  25. 25. I18n estándar + Spring● Vistas● Bundle● Lógica específica de país/idioma
  26. 26. I18n estándar + Spring● Vistas● Bundle● Lógica específica de país/idioma
  27. 27. ...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?
  28. 28. Nuestro segundo plugin: i18n-fields
  29. 29. 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
  30. 30. 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)
  31. 31. Internacionalización - escalabilidad
  32. 32. 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”
  33. 33. Palancas para “pasar nivel”● Terracotta● Integración de Springcache● Cloudfront
  34. 34. Evolución de la arquitectura en EC2
  35. 35. Explotación – Operación● WAR único● Script centralizado orquestando despliegue ● Cambio de modelo -> Limpieza TERRACOTTA● Breve downtime: ● Despliegue gradual ● Mirror del entorno ● AWS Beanstalk
  36. 36. El futuro
  37. 37. 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
  38. 38. 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, ...)
  39. 39. 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
  40. 40. 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
  41. 41. ¿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
  42. 42. 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
  43. 43. ¿conclusiones?
  44. 44. http://www.ticketbis.com http://www.gailen.es http://www.eventbis.comhttp://www.gailen.es http://www.ticketbis.com http://www.eventbis.com

×