grails and continuous delivery

22
Grails

Upload: info-artdecode

Post on 06-Aug-2015

89 views

Category:

Software


0 download

TRANSCRIPT

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:o CoC (Convention over configuration)o DRY (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ónoagregar métodos en tiempo de ejecuciónomodificar 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● Ingredienteso Configuration managemento Integracion continuao Test automaticos

Proceso de desarrollo

● Continuous Integration:o Es la práctica de integrar el código lo antes posible.o Se realizan test automaticos para detectar posibles fallas.o Cuando se sube un cambio al repositorio un servidor se encarga de

ejecutar la integración● Continuous Delivery:o Es la práctica donde se realiza la entrega continua.o El desarrollador decide si los cambios estan listos para pasar a la siguiente

etapao La evaluación es constante de usuarios y QAs

Proceso de desarrollo

Demo!!

Gracias!

Emilio Alberdi@emilioalberdi