SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Spring Roo
&
Spring InsightSpring Insight
@federicojcdm
14 de Octubre de 2010
La misión de Spring Roo es ofrecer una herramienta de desarrollo rápido de aplicaciones
(RAD).
El objetivo de Roo es ser totalmente “inocuo” a la solución final, con lo que no
compromete la flexibilidad y potencial que ofrece Java y la arquitectura subyacente.
Permite generarte un “arquetipo de proyecto” inicial, en el que las librerías, estructura
de directorios e integración con el entorno de desarrollo es ofrecido de manera sencilla
y rápida.
Modelo de diseño basado en el patrón Domain Driven Design donde pretende construir
las aplicaciones en base al dominio de la misma, y evitando antipatrones del estilo
Objetivo Roo. ¿Qué es?
2
las aplicaciones en base al dominio de la misma, y evitando antipatrones del estilo
Anemic Domain Model.
Roo es una herramienta (shell o integrada dentro de Spring Tool Suite) donde pretende
incorporar funcionalidades de valor añadido de consola tipo Linux, y con un sistema de
ayuda en línea muy potente e intuitivo, donde casi no es necesario recurrir a la
documentación de referencia.
Roo no introduce ningún elemento de runtime, simplemente es una herramienta de
ayuda para el desarrollo de aplicaciones.
Arquitectura Roo
3
Comandos de ayuda “help” y “hint”
Autocompletado con tabulador
Adaptación al contexto. Los comandos ofrecidos dependen del estado en el que
estés dentro del script. Ej: Si has creado un proyecto no te ofrece el comando
“project”
Dispone de mecanismos de rollback ante errores en los comandos
Los comandos de Roo pueden ser grabados en un fichero para luego volver a
Funcionalidades Shell
4
Los comandos de Roo pueden ser grabados en un fichero para luego volver a
ejecutarlos.
Roo presenta un conjunto de librerías maduras y altamente establecidas en el
mercado:
Spring MVC
Log4j
Spring Security
Hibernate /JPA
JSP
Arquitectura de las aplicaciones generadas
5
JSP
Spring Web Flow
Maven2
Aspect J
Eclipse/STS
JMS
JavaMail, ….
Uso de la capa de dominio y capa web únicamente
Elimina las capas de Servicio y DAO. La capa de servicio puede ser añadida en las
siguientes situaciones:
Lógica de negocio que afecta a varias entidades de negocio.
Invocar lógica de negocio fuera del ámbito del protocolo HTTP.
Desacoplo entre la capa web y la capa de negocio.
Aumentar el nivel de testing
Inclsuión de transaccionalidad y seguridad en la capa de servicio.
Líneas generales de arquitectura
6
Inclsuión de transaccionalidad y seguridad en la capa de servicio.
Para crear clases de la capa de servicio, únicamente es necesario crear una clase con su
interfaz y anotar la clase con @Services.
La eliminación de la capa DAO se debe a la no aplicabilidad de esta capa en aplicaciones
con Roo de los siguientes razones:
Testing. Se puede usar técnicas de mocking y no de stubbing
Separación de responsabilidades. Se tiene gracias a ITD
Independencia de implementación: Provisto por JPA
Lenguaje más popular del mundo: modelo open source, librerías heterogéneas y de
calidad, facilidad de recruitment de personas con conocimientos en la tecnología
API’s `populares, estandarizadas, seguras, probadas
Calidad, madurez e integracióncon herramientas: Asistentes de código, refactoring,
profilers, debuggers, etc..
Tipado estático: pocos errores, refactorización robusta, asistente de códigos, …
¿Por qué generar Java?
7
No genera penalizaciones en el rendimiento:
No usa proxies dinámicos
No métodos de compilación diferida
No LTW (load time weaving)
No incorpora ninguna librería ni código específico en tiempo de ejecución.
No genera penalizaciones de memoria
Tecnología no intrusiva
8
No generación de clases No uso de la memoria permanente (PermGen)
No genera penalizaciones en el despliegue
NO es necesario introducir ninguna librería en el war.
Incorpora un mecanismo de integración con arquitectura OSGi out-of-the-box
Alternativas evaluadas
Pluggable Annotation Processing API (JSR 269)
Generar código en tiempo de construcción (X-Doclet style)
Generar bytecode en tiempo de construcción (ASM)
Generación de bytecode en tiempo de runtime (ASM)
Aproximaciones avanzadas basadas en proxis (Spring AOP)
Aproximaciones de generación de código
9
IDE Plugins
Decisiones/Ventajas:
Decisión 1.Uso de Aspect J.
o Uso de Inter-type declarations (ITD) con Aspect J.
o Desarrollo de unidades de compilación con cometidos diferentes
o Soporte instantáneo de herramientas
o Maduro, modelo “push-in” de refactorización, incluIda en tiempo de compilación.
Decisión 2. Crear un shell
o Generación basada en modelo de comandos
o Usabilidad como ciudadano de primera clase
o Encargado de realizar labores de monitorización de cambios mediante un modelo de
polling. Evitar crear pasos de generación “crudos”.
o Roo nunca modifica un fichero java a no ser que se ejecute un comando de usuario
Decisión 3. Generar un modelo mixto de generación pasiva y activa de código,
Decisiones/Ventajas
10
Decisión 3. Generar un modelo mixto de generación pasiva y activa de código,
obteniendo la mejor de ambas.
o Generación pasiva. Uso del shell para generar comandos que van generando los
componentes de la aplicación
o Generación activa. Mecanismo de monitorización continua que permite
actualizaciones incrementales de los ficheros generados (nunca Java).
Modelo de generación activa
11
El futuro
12
Ambos ayudan a generar un arquetipo de proyecto. Evita pérdida de tiempo inicial
Roo es menos agresivo que Grails, puesto que genera código Java estándar y los add-on no
introducen limitaciones específicas-
Ambos actualmente no son tecnologías maduras, aunque con una gran proyección
Tipado estático vs Tipado Dinámico. Bondades del lenguaje. Azúcar sintáctico
Ecosistema de addons y plugins poco maduro.
Arquitectura óptima de generación de código: generación dinámica/estática.
El rendimiento de una aplicación Roo es superior a Grails al no introducir ninguna penalización en
Roo vs Grails
13
El rendimiento de una aplicación Roo es superior a Grails al no introducir ninguna penalización en
tiempo de ejecución
No necesidad de curva de aprendizaje para programadores Java.
Capacidades de depuración y monitorización mucho mayores en Roo. Compatibilidad con Maven.
Grails presenta mayores tasas de valoración en mantenimiento de código (escribes menos).
En resumen valorar rendimiento, mantenibilidad, depuración y habilidades de tu equipo para elegir
una u otra plataforma
Herramienta de diagnóstico avanzada que permite monitorizar el rendimiento de aplicaciones en
tiempo real.
Básicamente consiste de un Apache Tomcat modificado.
Muy orientado a aplicaciones realizadas con la tecnología Spring Framework.
Esta tecnología permite complementar las posibilidades de monitorización permitiendo a los
desarrolladores tener acceso de la información de tiempos de respuesta en:
Consultas JDBC
Interacción de Spring Bean
Llamadas a servicios externos
Spring Insight
14
La herramienta puede servir de ayuda a los equipos de QA para detectar problemas en el
rendimiento de las aplicaciones.
Complementa a las herramientas de carga/estrés para descubir el por qué de un problema de
rendimiento.
La tecnología incluye un Kit de desarrollo, el cual puede extender la funcionalidad que ofrece Insight
para coleccionar detalles que permitan descubrir un cuello de botella.
Se integra con SpeedTracer de Google, complementando el análisis de una forma completa (end-to-
end): problemas en rendimiento de la capa cliente, integrado con el comportamiento de la parte
servidora que ofrece Insight.
La aplicación no requiere ninguna configuración especial, instrumentación y paso
adicional, para ser instalada dentro del servidor de monitorización.
El servidor captura los eventos de las aplicaciones (conocidos como trazas).
Una traza representa un hilo de ejecución.
Cada traza está formada por un conjunto de operaciones la cual representa un
punto significativo en la ejecución de una traza (por ejemplo una consulta JDBC).
Spring Insight recoge la información asociada a estos eventos, lo cual permite
¿Cómo funciona?.
15
Spring Insight recoge la información asociada a estos eventos, lo cual permite
conocer el por qué el rendimiento de una aplicación no es el correcto.
Spring Insight usa tecnología AOP para monitorizar el rendimiento de las
operaciones. Las aplicaciones son cargadas con un ClassLoader especial que
dinámicamente instrumentan aplicaciones web en tiempo de ejecución.
Spring Insight, de momento, mantiene los datos en memoria. Por tanto, se requiere
más memoria que en una aplicación normal.
Conceptos clave:
Target application: Aplicación sobre la que se va a monitorizar el rendimiento en
tiempo de ejecución
Operation: Encapsula una orden de trabajo dentro un hilo de ejecución: Flush de
Hibernate, tiempo de ejecución de la capa de servicio, llamada a un método,
comando JDBC, etc..
Frame: Representa una unidad de ejecución dentro de una jerarquía de llamadas.
Representa básicamente la llamada a un método dentro de la pila de ejecución. El
core de un frame es una operación.
Spring Insight Development Kit
16
core de un frame es una operación.
Trace: Registro de un hilo de ejecución dentro de la ejecución de una aplicación.
Endpoint: Agrupación lógica de trazas similares dentro de una aplicación. La salud y
las métricas son calculadas en base a endpoints. Ejemplo, todas las trazas que
forman parte del mismo método de un mismo método de un controlador forma
parte de un mismo endpoint.
Aspecto: Mediante la aplicación de aspectos, se recopila información de ejecución
de la aplicación target.
Relaciones entre artefactos de Insight
17
Pasos básicos para la construcción de un plugin
Debe haber un aspecto escrito en AspectJJ encargado de interceptar la ejecución de
métodos: jdbc, spring mvcx, etc..
El aspectJ se encargará de construir operaciones que básicamente se encargan de
renderizar la información asociada. En el caso de JDBC, la consulta que está
lanzando.
Cada operación tiene asociado una plantilla Freemarker encargada de renderizar la
información asociada de la operación dentro del dashboard.
18
Endpoint Analyzer.
Madrid
Avda. de Europa, 26 - Ática 5, 3ª Planta
28224 Pozuelo de Alarcón
E-mail: info@paradigmatecnologico.com
Teléfono: +34 91 352 59 42
Fax: +34 91 715 89 66

Contenu connexe

Tendances

Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Marco Antonio Ordoñez Valverde
 
5to ciclo desarrollo de aplicaciones web i
5to ciclo   desarrollo de aplicaciones web i5to ciclo   desarrollo de aplicaciones web i
5to ciclo desarrollo de aplicaciones web iJulio Pari
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Micael Gallego
 
Desarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EEDesarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EEJosé Manuel López
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaSantiago Sora
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Gustavo Veliz
 
12 MicroSoft SFIC 2009
12 MicroSoft SFIC 200912 MicroSoft SFIC 2009
12 MicroSoft SFIC 2009Pepe
 
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
 
Diapositivas Spring Framework- Javier Oliver Fulguera
Diapositivas Spring Framework-  Javier Oliver FulgueraDiapositivas Spring Framework-  Javier Oliver Fulguera
Diapositivas Spring Framework- Javier Oliver FulgueraJavier Oliver Fulguera
 

Tendances (18)

spring
springspring
spring
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
 
5to ciclo desarrollo de aplicaciones web i
5to ciclo   desarrollo de aplicaciones web i5to ciclo   desarrollo de aplicaciones web i
5to ciclo desarrollo de aplicaciones web i
 
Net framework version 4.5
Net framework version 4.5Net framework version 4.5
Net framework version 4.5
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 
Desarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EEDesarrollo de pruebas en entornos Java EE
Desarrollo de pruebas en entornos Java EE
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.java
 
Spring framework 3
Spring framework 3Spring framework 3
Spring framework 3
 
5 lenguaje (caso de uso)
5 lenguaje  (caso de uso)5 lenguaje  (caso de uso)
5 lenguaje (caso de uso)
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
 
12 MicroSoft SFIC 2009
12 MicroSoft SFIC 200912 MicroSoft SFIC 2009
12 MicroSoft SFIC 2009
 
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
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
ATIX21
ATIX21ATIX21
ATIX21
 
Diapositivas Spring Framework- Javier Oliver Fulguera
Diapositivas Spring Framework-  Javier Oliver FulgueraDiapositivas Spring Framework-  Javier Oliver Fulguera
Diapositivas Spring Framework- Javier Oliver Fulguera
 
Spring framework
Spring frameworkSpring framework
Spring framework
 

En vedette (8)

Abf leccion 09
Abf leccion 09Abf leccion 09
Abf leccion 09
 
Teseo4telecentres es
Teseo4telecentres esTeseo4telecentres es
Teseo4telecentres es
 
Cap1 Arqui Ft
Cap1 Arqui FtCap1 Arqui Ft
Cap1 Arqui Ft
 
Vision general-instalacion-20121206-es
Vision general-instalacion-20121206-esVision general-instalacion-20121206-es
Vision general-instalacion-20121206-es
 
Práctica 2
Práctica 2Práctica 2
Práctica 2
 
Grado en Psicología
Grado en Psicología Grado en Psicología
Grado en Psicología
 
Lanzamiento de Mónica Limón en redes
Lanzamiento de Mónica Limón en redesLanzamiento de Mónica Limón en redes
Lanzamiento de Mónica Limón en redes
 
Galeria Imágenes de Ciudad - Cehap
Galeria Imágenes  de Ciudad - CehapGaleria Imágenes  de Ciudad - Cehap
Galeria Imágenes de Ciudad - Cehap
 

Similaire à Seminario Spring Roo. Monitorización con Spring Insight

FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacionkaolong
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebEsteban Saavedra
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1UTN
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introductionMiguel Pastor
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radHenry Cambal
 

Similaire à Seminario Spring Roo. Monitorización con Spring Insight (20)

Atix20
Atix20Atix20
Atix20
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Spring
SpringSpring
Spring
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones Web
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1
 
Tutorial hacer un crud con prado
Tutorial hacer un crud con pradoTutorial hacer un crud con prado
Tutorial hacer un crud con prado
 
Sercicios web
Sercicios webSercicios web
Sercicios web
 
Mvc
MvcMvc
Mvc
 
5 lenguaje
5 lenguaje5 lenguaje
5 lenguaje
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Framework
FrameworkFramework
Framework
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion rad
 

Plus de Paradigma Digital

Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Paradigma Digital
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the futureParadigma Digital
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxParadigma Digital
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixParadigma Digital
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API ManagementParadigma Digital
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.Paradigma Digital
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxParadigma Digital
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microserviciosParadigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalParadigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octParadigma Digital
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJavaParadigma Digital
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?Paradigma Digital
 

Plus de Paradigma Digital (20)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
 
Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 

Seminario Spring Roo. Monitorización con Spring Insight

  • 1. Spring Roo & Spring InsightSpring Insight @federicojcdm 14 de Octubre de 2010
  • 2. La misión de Spring Roo es ofrecer una herramienta de desarrollo rápido de aplicaciones (RAD). El objetivo de Roo es ser totalmente “inocuo” a la solución final, con lo que no compromete la flexibilidad y potencial que ofrece Java y la arquitectura subyacente. Permite generarte un “arquetipo de proyecto” inicial, en el que las librerías, estructura de directorios e integración con el entorno de desarrollo es ofrecido de manera sencilla y rápida. Modelo de diseño basado en el patrón Domain Driven Design donde pretende construir las aplicaciones en base al dominio de la misma, y evitando antipatrones del estilo Objetivo Roo. ¿Qué es? 2 las aplicaciones en base al dominio de la misma, y evitando antipatrones del estilo Anemic Domain Model. Roo es una herramienta (shell o integrada dentro de Spring Tool Suite) donde pretende incorporar funcionalidades de valor añadido de consola tipo Linux, y con un sistema de ayuda en línea muy potente e intuitivo, donde casi no es necesario recurrir a la documentación de referencia. Roo no introduce ningún elemento de runtime, simplemente es una herramienta de ayuda para el desarrollo de aplicaciones.
  • 4. Comandos de ayuda “help” y “hint” Autocompletado con tabulador Adaptación al contexto. Los comandos ofrecidos dependen del estado en el que estés dentro del script. Ej: Si has creado un proyecto no te ofrece el comando “project” Dispone de mecanismos de rollback ante errores en los comandos Los comandos de Roo pueden ser grabados en un fichero para luego volver a Funcionalidades Shell 4 Los comandos de Roo pueden ser grabados en un fichero para luego volver a ejecutarlos.
  • 5. Roo presenta un conjunto de librerías maduras y altamente establecidas en el mercado: Spring MVC Log4j Spring Security Hibernate /JPA JSP Arquitectura de las aplicaciones generadas 5 JSP Spring Web Flow Maven2 Aspect J Eclipse/STS JMS JavaMail, ….
  • 6. Uso de la capa de dominio y capa web únicamente Elimina las capas de Servicio y DAO. La capa de servicio puede ser añadida en las siguientes situaciones: Lógica de negocio que afecta a varias entidades de negocio. Invocar lógica de negocio fuera del ámbito del protocolo HTTP. Desacoplo entre la capa web y la capa de negocio. Aumentar el nivel de testing Inclsuión de transaccionalidad y seguridad en la capa de servicio. Líneas generales de arquitectura 6 Inclsuión de transaccionalidad y seguridad en la capa de servicio. Para crear clases de la capa de servicio, únicamente es necesario crear una clase con su interfaz y anotar la clase con @Services. La eliminación de la capa DAO se debe a la no aplicabilidad de esta capa en aplicaciones con Roo de los siguientes razones: Testing. Se puede usar técnicas de mocking y no de stubbing Separación de responsabilidades. Se tiene gracias a ITD Independencia de implementación: Provisto por JPA
  • 7. Lenguaje más popular del mundo: modelo open source, librerías heterogéneas y de calidad, facilidad de recruitment de personas con conocimientos en la tecnología API’s `populares, estandarizadas, seguras, probadas Calidad, madurez e integracióncon herramientas: Asistentes de código, refactoring, profilers, debuggers, etc.. Tipado estático: pocos errores, refactorización robusta, asistente de códigos, … ¿Por qué generar Java? 7
  • 8. No genera penalizaciones en el rendimiento: No usa proxies dinámicos No métodos de compilación diferida No LTW (load time weaving) No incorpora ninguna librería ni código específico en tiempo de ejecución. No genera penalizaciones de memoria Tecnología no intrusiva 8 No generación de clases No uso de la memoria permanente (PermGen) No genera penalizaciones en el despliegue NO es necesario introducir ninguna librería en el war. Incorpora un mecanismo de integración con arquitectura OSGi out-of-the-box
  • 9. Alternativas evaluadas Pluggable Annotation Processing API (JSR 269) Generar código en tiempo de construcción (X-Doclet style) Generar bytecode en tiempo de construcción (ASM) Generación de bytecode en tiempo de runtime (ASM) Aproximaciones avanzadas basadas en proxis (Spring AOP) Aproximaciones de generación de código 9 IDE Plugins Decisiones/Ventajas: Decisión 1.Uso de Aspect J. o Uso de Inter-type declarations (ITD) con Aspect J. o Desarrollo de unidades de compilación con cometidos diferentes o Soporte instantáneo de herramientas o Maduro, modelo “push-in” de refactorización, incluIda en tiempo de compilación.
  • 10. Decisión 2. Crear un shell o Generación basada en modelo de comandos o Usabilidad como ciudadano de primera clase o Encargado de realizar labores de monitorización de cambios mediante un modelo de polling. Evitar crear pasos de generación “crudos”. o Roo nunca modifica un fichero java a no ser que se ejecute un comando de usuario Decisión 3. Generar un modelo mixto de generación pasiva y activa de código, Decisiones/Ventajas 10 Decisión 3. Generar un modelo mixto de generación pasiva y activa de código, obteniendo la mejor de ambas. o Generación pasiva. Uso del shell para generar comandos que van generando los componentes de la aplicación o Generación activa. Mecanismo de monitorización continua que permite actualizaciones incrementales de los ficheros generados (nunca Java).
  • 13. Ambos ayudan a generar un arquetipo de proyecto. Evita pérdida de tiempo inicial Roo es menos agresivo que Grails, puesto que genera código Java estándar y los add-on no introducen limitaciones específicas- Ambos actualmente no son tecnologías maduras, aunque con una gran proyección Tipado estático vs Tipado Dinámico. Bondades del lenguaje. Azúcar sintáctico Ecosistema de addons y plugins poco maduro. Arquitectura óptima de generación de código: generación dinámica/estática. El rendimiento de una aplicación Roo es superior a Grails al no introducir ninguna penalización en Roo vs Grails 13 El rendimiento de una aplicación Roo es superior a Grails al no introducir ninguna penalización en tiempo de ejecución No necesidad de curva de aprendizaje para programadores Java. Capacidades de depuración y monitorización mucho mayores en Roo. Compatibilidad con Maven. Grails presenta mayores tasas de valoración en mantenimiento de código (escribes menos). En resumen valorar rendimiento, mantenibilidad, depuración y habilidades de tu equipo para elegir una u otra plataforma
  • 14. Herramienta de diagnóstico avanzada que permite monitorizar el rendimiento de aplicaciones en tiempo real. Básicamente consiste de un Apache Tomcat modificado. Muy orientado a aplicaciones realizadas con la tecnología Spring Framework. Esta tecnología permite complementar las posibilidades de monitorización permitiendo a los desarrolladores tener acceso de la información de tiempos de respuesta en: Consultas JDBC Interacción de Spring Bean Llamadas a servicios externos Spring Insight 14 La herramienta puede servir de ayuda a los equipos de QA para detectar problemas en el rendimiento de las aplicaciones. Complementa a las herramientas de carga/estrés para descubir el por qué de un problema de rendimiento. La tecnología incluye un Kit de desarrollo, el cual puede extender la funcionalidad que ofrece Insight para coleccionar detalles que permitan descubrir un cuello de botella. Se integra con SpeedTracer de Google, complementando el análisis de una forma completa (end-to- end): problemas en rendimiento de la capa cliente, integrado con el comportamiento de la parte servidora que ofrece Insight.
  • 15. La aplicación no requiere ninguna configuración especial, instrumentación y paso adicional, para ser instalada dentro del servidor de monitorización. El servidor captura los eventos de las aplicaciones (conocidos como trazas). Una traza representa un hilo de ejecución. Cada traza está formada por un conjunto de operaciones la cual representa un punto significativo en la ejecución de una traza (por ejemplo una consulta JDBC). Spring Insight recoge la información asociada a estos eventos, lo cual permite ¿Cómo funciona?. 15 Spring Insight recoge la información asociada a estos eventos, lo cual permite conocer el por qué el rendimiento de una aplicación no es el correcto. Spring Insight usa tecnología AOP para monitorizar el rendimiento de las operaciones. Las aplicaciones son cargadas con un ClassLoader especial que dinámicamente instrumentan aplicaciones web en tiempo de ejecución. Spring Insight, de momento, mantiene los datos en memoria. Por tanto, se requiere más memoria que en una aplicación normal.
  • 16. Conceptos clave: Target application: Aplicación sobre la que se va a monitorizar el rendimiento en tiempo de ejecución Operation: Encapsula una orden de trabajo dentro un hilo de ejecución: Flush de Hibernate, tiempo de ejecución de la capa de servicio, llamada a un método, comando JDBC, etc.. Frame: Representa una unidad de ejecución dentro de una jerarquía de llamadas. Representa básicamente la llamada a un método dentro de la pila de ejecución. El core de un frame es una operación. Spring Insight Development Kit 16 core de un frame es una operación. Trace: Registro de un hilo de ejecución dentro de la ejecución de una aplicación. Endpoint: Agrupación lógica de trazas similares dentro de una aplicación. La salud y las métricas son calculadas en base a endpoints. Ejemplo, todas las trazas que forman parte del mismo método de un mismo método de un controlador forma parte de un mismo endpoint. Aspecto: Mediante la aplicación de aspectos, se recopila información de ejecución de la aplicación target.
  • 18. Pasos básicos para la construcción de un plugin Debe haber un aspecto escrito en AspectJJ encargado de interceptar la ejecución de métodos: jdbc, spring mvcx, etc.. El aspectJ se encargará de construir operaciones que básicamente se encargan de renderizar la información asociada. En el caso de JDBC, la consulta que está lanzando. Cada operación tiene asociado una plantilla Freemarker encargada de renderizar la información asociada de la operación dentro del dashboard. 18 Endpoint Analyzer.
  • 19. Madrid Avda. de Europa, 26 - Ática 5, 3ª Planta 28224 Pozuelo de Alarcón E-mail: info@paradigmatecnologico.com Teléfono: +34 91 352 59 42 Fax: +34 91 715 89 66