SlideShare una empresa de Scribd logo
1 de 22
Grails
Agenda
●Situación Actual
●Java + Groovy
●Grails
●Proceso de desarollo
Situación Actual
●Aplicacion monolítica
●Aplicacion no orientada a objetos
●Compleja de introducir cambios
●Duplicación de código
●Dificil de testear
●Performance (Php)
Java: Como plataforma
●El corazón de Java es su máquina virtual
●Código se compila. Write once, run anywhere
●Aplicaciones empresariales siguen estándares JEE
●Las aplicaciones se corren en applications servers.
●Java como lenguaje requiere cierto seniority. Tiene una
curva de aprendizaje mas lenta que otros lenguajes.
Groovy
●Lenguaje dinámico que corre sobre la VM de Java
●Integración e interoperabilidad con Java. Utilización de
todas la librerías desarrolladas en java
●Performance es similar entre Java y Groovy (desde Java
7 en adelante)
●Groovy 2.3 superior permite compilación estática
●Reducción en la cantidad de líneas de código (hasta
50%)
Groovy Funcionalidades
●Optional Typing vs Dynamic Typing vs Static Typing
●Metaprogramming y AST Transformations
●Programacion funcional (Closure)
●Builders Xml, Html, Swing, Jmx
●Groovy “decora” la Api actual de Java
●Native Syntax Constructs (Syntax Sugar)
●Navegación segura de propiedades
●Soporte de Domain Specific Language
●Unit Test: JUnit, Spock
Groovy: Quienes lo usan?
Java vs Groovy
Grails
●Es un framework web MVC basado en acciones
●Grails sigue los siguientes principios:
oCoC (Convention over configuration)
oDRY (Don’t repeat yourself)
●La esencia de Rails pero con la robustez de Java
Grails
●Utiliza los siguientes frameworks:
●Java: Jvm, JEE y especificaciones
●Spring: IoC, DI, Spring MVC, Spring WebFlow
●ORM: Hibernate o MongoDB
●Sitemesh: Html Layouts
●FullStack
Grails: Componentes
●Domain
●Controller
●Service
●View
●Taglibs
●Grails está construido sobre la base de un sistema de
plugins
●Un plugin puede proveer una serie de componentes:
Clases de dominio, Controllers, Services, etc
●Un plugin puede:
omodificar la configuración
oagregar métodos en tiempo de ejecución
omodificar clases en tiempo de compilación
Grails: Plugins
Grails: Plugins
Demo!!
●Spring Security (DB, LDAP, Kerberos, OAuth)
●WebFlows (Conversaciones HTTP)
●API Rest
●Programación Asincrónica (Actores, SPM, Fork/Join)
●Reactor (Event Driven Applications)
●Jasper reports
●Migrations: LiquidBase
Grails:
Forma de trabajo
Cuanto tiempo tarda su
organización en introducir un
cambio que solo involucra una
línea de código?
●Nuestra máxima prioridad es la de satisfacer al cliente a través de la entrega
temprana y continua del software solicitado
●El software debe estar siempre preparado para ser instalado en producción
●Las entregas deben realizarse por necesidades del negocios y no por
restricciones técnicas.
Proceso de desarrollo
Desarrollo Agil
●Automatizacion
●Patrones de diseño y buenas prácticas
●Colaboración de todos los roles involucrados
●Ingredientes
oConfiguration management
oIntegracion continua
oTest automaticos
Proceso de desarrollo
●Continuous Integration:
oEs la práctica de integrar el código lo antes posible.
oSe realizan test automaticos para detectar posibles fallas.
oCuando se sube un cambio al repositorio un servidor se encarga de
ejecutar la integración
●Continuous Delivery:
oEs la práctica donde se realiza la entrega continua.
oEl desarrollador decide si los cambios estan listos para pasar a la
siguiente etapa
oLa evaluación es constante de usuarios y QAs
Proceso de desarrollo
Demo!!
Gracias!
Emilio Alberdi
@emilioalberdi

Más contenido relacionado

La actualidad más candente

JavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónJavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónGary Briceño
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con JenkinsCésar Hernández
 
Presentacion de Red5
Presentacion de Red5Presentacion de Red5
Presentacion de Red5pduran
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013Rodolfo Finochietti
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberSoftware Guru
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerErnesto Cardenas Cangahuala
 
Android apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktoolAndroid apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktoolSalvador Mendoza
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la webTuenti
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Senior Dev
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
Desarrollo de aplicaciones altamente escalables
Desarrollo de aplicaciones altamente escalablesDesarrollo de aplicaciones altamente escalables
Desarrollo de aplicaciones altamente escalablesGlobant
 
Webinar: Introducción a Angular
Webinar: Introducción a AngularWebinar: Introducción a Angular
Webinar: Introducción a AngularArsys
 

La actualidad más candente (20)

Una gota de elixir 2017
Una gota de elixir   2017Una gota de elixir   2017
Una gota de elixir 2017
 
JavaScript: Mejorando la programación
JavaScript: Mejorando la programaciónJavaScript: Mejorando la programación
JavaScript: Mejorando la programación
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con Jenkins
 
red5
red5red5
red5
 
Presentacion de Red5
Presentacion de Red5Presentacion de Red5
Presentacion de Red5
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation Server
 
Android apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktoolAndroid apps: un dia sin dex2jar y sin apktool
Android apps: un dia sin dex2jar y sin apktool
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Dentro de un Backend
Dentro de un BackendDentro de un Backend
Dentro de un Backend
 
Scrum overview
Scrum overview Scrum overview
Scrum overview
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la web
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
Desarrollo de aplicaciones altamente escalables
Desarrollo de aplicaciones altamente escalablesDesarrollo de aplicaciones altamente escalables
Desarrollo de aplicaciones altamente escalables
 
TDD
TDDTDD
TDD
 
Webinar: Introducción a Angular
Webinar: Introducción a AngularWebinar: Introducción a Angular
Webinar: Introducción a Angular
 

Similar a Grails and Continuous delivery

Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29Jorge Hidalgo
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptxJulinAguirre8
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Jose Juan R. Zuñiga
 
Tecnologias para paginas Web Dinamicas del lado del Servidor
Tecnologias para paginas Web Dinamicas del lado del ServidorTecnologias para paginas Web Dinamicas del lado del Servidor
Tecnologias para paginas Web Dinamicas del lado del ServidorJonathan Guerrero Pacori
 
Tecnologías para paginas Dinamicas del lado del servidor
Tecnologías para paginas Dinamicas del lado del servidorTecnologías para paginas Dinamicas del lado del servidor
Tecnologías para paginas Dinamicas del lado del servidorJonathan Guerrero Pacori
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGailen Tecnologías
 
Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesBruno Gutierrez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 

Similar a Grails and Continuous delivery (20)

Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx2.3 Lenguajes De Programación Del Lado Servidor.pptx
2.3 Lenguajes De Programación Del Lado Servidor.pptx
 
todo sobre java
todo sobre javatodo sobre java
todo sobre java
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
 
Tecnologias para paginas Web Dinamicas del lado del Servidor
Tecnologias para paginas Web Dinamicas del lado del ServidorTecnologias para paginas Web Dinamicas del lado del Servidor
Tecnologias para paginas Web Dinamicas del lado del Servidor
 
Tecnologías para paginas Dinamicas del lado del servidor
Tecnologías para paginas Dinamicas del lado del servidorTecnologías para paginas Dinamicas del lado del servidor
Tecnologías para paginas Dinamicas del lado del servidor
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Programacion-Web-Segura.pptx
Programacion-Web-Segura.pptxProgramacion-Web-Segura.pptx
Programacion-Web-Segura.pptx
 
Grails en el Fonasol
Grails en el FonasolGrails en el Fonasol
Grails en el Fonasol
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacional
 
Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías Moviles
 
IDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizadosIDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizados
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 

Grails and Continuous delivery

  • 2. Agenda ●Situación Actual ●Java + Groovy ●Grails ●Proceso de desarollo
  • 3. Situación Actual ●Aplicacion monolítica ●Aplicacion no orientada a objetos ●Compleja de introducir cambios ●Duplicación de código ●Dificil de testear ●Performance (Php)
  • 4. Java: Como plataforma ●El corazón de Java es su máquina virtual ●Código se compila. Write once, run anywhere ●Aplicaciones empresariales siguen estándares JEE ●Las aplicaciones se corren en applications servers. ●Java como lenguaje requiere cierto seniority. Tiene una curva de aprendizaje mas lenta que otros lenguajes.
  • 5. Groovy ●Lenguaje dinámico que corre sobre la VM de Java ●Integración e interoperabilidad con Java. Utilización de todas la librerías desarrolladas en java ●Performance es similar entre Java y Groovy (desde Java 7 en adelante) ●Groovy 2.3 superior permite compilación estática ●Reducción en la cantidad de líneas de código (hasta 50%)
  • 6. Groovy Funcionalidades ●Optional Typing vs Dynamic Typing vs Static Typing ●Metaprogramming y AST Transformations ●Programacion funcional (Closure) ●Builders Xml, Html, Swing, Jmx ●Groovy “decora” la Api actual de Java ●Native Syntax Constructs (Syntax Sugar) ●Navegación segura de propiedades ●Soporte de Domain Specific Language ●Unit Test: JUnit, Spock
  • 9. Grails ●Es un framework web MVC basado en acciones ●Grails sigue los siguientes principios: oCoC (Convention over configuration) oDRY (Don’t repeat yourself) ●La esencia de Rails pero con la robustez de Java
  • 10. Grails ●Utiliza los siguientes frameworks: ●Java: Jvm, JEE y especificaciones ●Spring: IoC, DI, Spring MVC, Spring WebFlow ●ORM: Hibernate o MongoDB ●Sitemesh: Html Layouts ●FullStack
  • 12. ●Grails está construido sobre la base de un sistema de plugins ●Un plugin puede proveer una serie de componentes: Clases de dominio, Controllers, Services, etc ●Un plugin puede: omodificar la configuración oagregar métodos en tiempo de ejecución omodificar clases en tiempo de compilación Grails: Plugins
  • 15. ●Spring Security (DB, LDAP, Kerberos, OAuth) ●WebFlows (Conversaciones HTTP) ●API Rest ●Programación Asincrónica (Actores, SPM, Fork/Join) ●Reactor (Event Driven Applications) ●Jasper reports ●Migrations: LiquidBase Grails:
  • 16. Forma de trabajo Cuanto tiempo tarda su organización en introducir un cambio que solo involucra una línea de código?
  • 17. ●Nuestra máxima prioridad es la de satisfacer al cliente a través de la entrega temprana y continua del software solicitado ●El software debe estar siempre preparado para ser instalado en producción ●Las entregas deben realizarse por necesidades del negocios y no por restricciones técnicas. Proceso de desarrollo
  • 19. ●Automatizacion ●Patrones de diseño y buenas prácticas ●Colaboración de todos los roles involucrados ●Ingredientes oConfiguration management oIntegracion continua oTest automaticos Proceso de desarrollo
  • 20. ●Continuous Integration: oEs la práctica de integrar el código lo antes posible. oSe realizan test automaticos para detectar posibles fallas. oCuando se sube un cambio al repositorio un servidor se encarga de ejecutar la integración ●Continuous Delivery: oEs la práctica donde se realiza la entrega continua. oEl desarrollador decide si los cambios estan listos para pasar a la siguiente etapa oLa evaluación es constante de usuarios y QAs Proceso de desarrollo