Spring Roo&Spring InsightSpring Insight@federicojcdm14 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 tot...
Arquitectura Roo3
Comandos de ayuda “help” y “hint”Autocompletado con tabuladorAdaptación al contexto. Los comandos ofrecidos dependen del e...
Roo presenta un conjunto de librerías maduras y altamente establecidas en elmercado:Spring MVCLog4jSpring SecurityHibernat...
Uso de la capa de dominio y capa web únicamenteElimina las capas de Servicio y DAO. La capa de servicio puede ser añadida ...
Lenguaje más popular del mundo: modelo open source, librerías heterogéneas y decalidad, facilidad de recruitment de person...
No genera penalizaciones en el rendimiento:No usa proxies dinámicosNo métodos de compilación diferidaNo LTW (load time wea...
Alternativas evaluadasPluggable Annotation Processing API (JSR 269)Generar código en tiempo de construcción (X-Doclet styl...
Decisión 2. Crear un shello Generación basada en modelo de comandoso Usabilidad como ciudadano de primera claseo Encargado...
Modelo de generación activa11
El futuro12
Ambos ayudan a generar un arquetipo de proyecto. Evita pérdida de tiempo inicialRoo es menos agresivo que Grails, puesto q...
Herramienta de diagnóstico avanzada que permite monitorizar el rendimiento de aplicaciones entiempo real.Básicamente consi...
La aplicación no requiere ninguna configuración especial, instrumentación y pasoadicional, para ser instalada dentro del s...
Conceptos clave:Target application: Aplicación sobre la que se va a monitorizar el rendimiento entiempo de ejecuciónOperat...
Relaciones entre artefactos de Insight17
Pasos básicos para la construcción de un pluginDebe haber un aspecto escrito en AspectJJ encargado de interceptar la ejecu...
MadridAvda. de Europa, 26 - Ática 5, 3ª Planta28224 Pozuelo de AlarcónE-mail: info@paradigmatecnologico.comTeléfono: +34 9...
Upcoming SlideShare
Loading in...5
×

Seminario Spring Roo. Monitorización con Spring Insight

442

Published on

Seminario sobre Spring Roo y monitorización con Spring Insight organizado por Paradigma Tecnologico y Javahispano, impartido en Madrid el 14 de octubre de 2010 por Federico Caro

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
442
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Seminario Spring Roo. Monitorización con Spring Insight

  1. 1. Spring Roo&Spring InsightSpring Insight@federicojcdm14 de Octubre de 2010
  2. 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 nocompromete la flexibilidad y potencial que ofrece Java y la arquitectura subyacente.Permite generarte un “arquetipo de proyecto” inicial, en el que las librerías, estructurade directorios e integración con el entorno de desarrollo es ofrecido de manera sencillay rápida.Modelo de diseño basado en el patrón Domain Driven Design donde pretende construirlas aplicaciones en base al dominio de la misma, y evitando antipatrones del estiloObjetivo Roo. ¿Qué es?2las aplicaciones en base al dominio de la misma, y evitando antipatrones del estiloAnemic Domain Model.Roo es una herramienta (shell o integrada dentro de Spring Tool Suite) donde pretendeincorporar funcionalidades de valor añadido de consola tipo Linux, y con un sistema deayuda en línea muy potente e intuitivo, donde casi no es necesario recurrir a ladocumentación de referencia.Roo no introduce ningún elemento de runtime, simplemente es una herramienta deayuda para el desarrollo de aplicaciones.
  3. 3. Arquitectura Roo3
  4. 4. Comandos de ayuda “help” y “hint”Autocompletado con tabuladorAdaptación al contexto. Los comandos ofrecidos dependen del estado en el queesté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 comandosLos comandos de Roo pueden ser grabados en un fichero para luego volver aFuncionalidades Shell4Los comandos de Roo pueden ser grabados en un fichero para luego volver aejecutarlos.
  5. 5. Roo presenta un conjunto de librerías maduras y altamente establecidas en elmercado:Spring MVCLog4jSpring SecurityHibernate /JPAJSPArquitectura de las aplicaciones generadas5JSPSpring Web FlowMaven2Aspect JEclipse/STSJMSJavaMail, ….
  6. 6. Uso de la capa de dominio y capa web únicamenteElimina las capas de Servicio y DAO. La capa de servicio puede ser añadida en lassiguientes 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 testingInclsuión de transaccionalidad y seguridad en la capa de servicio.Líneas generales de arquitectura6Inclsuió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 suinterfaz y anotar la clase con @Services.La eliminación de la capa DAO se debe a la no aplicabilidad de esta capa en aplicacionescon Roo de los siguientes razones:Testing. Se puede usar técnicas de mocking y no de stubbingSeparación de responsabilidades. Se tiene gracias a ITDIndependencia de implementación: Provisto por JPA
  7. 7. Lenguaje más popular del mundo: modelo open source, librerías heterogéneas y decalidad, facilidad de recruitment de personas con conocimientos en la tecnologíaAPI’s `populares, estandarizadas, seguras, probadasCalidad, 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. 8. No genera penalizaciones en el rendimiento:No usa proxies dinámicosNo métodos de compilación diferidaNo LTW (load time weaving)No incorpora ninguna librería ni código específico en tiempo de ejecución.No genera penalizaciones de memoriaTecnología no intrusiva8No generación de clases No uso de la memoria permanente (PermGen)No genera penalizaciones en el despliegueNO es necesario introducir ninguna librería en el war.Incorpora un mecanismo de integración con arquitectura OSGi out-of-the-box
  9. 9. Alternativas evaluadasPluggable 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ódigo9IDE PluginsDecisiones/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 diferenteso Soporte instantáneo de herramientaso Maduro, modelo “push-in” de refactorización, incluIda en tiempo de compilación.
  10. 10. Decisión 2. Crear un shello Generación basada en modelo de comandoso Usabilidad como ciudadano de primera claseo Encargado de realizar labores de monitorización de cambios mediante un modelo depolling. Evitar crear pasos de generación “crudos”.o Roo nunca modifica un fichero java a no ser que se ejecute un comando de usuarioDecisión 3. Generar un modelo mixto de generación pasiva y activa de código,Decisiones/Ventajas10Decisió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 loscomponentes de la aplicacióno Generación activa. Mecanismo de monitorización continua que permiteactualizaciones incrementales de los ficheros generados (nunca Java).
  11. 11. Modelo de generación activa11
  12. 12. El futuro12
  13. 13. Ambos ayudan a generar un arquetipo de proyecto. Evita pérdida de tiempo inicialRoo es menos agresivo que Grails, puesto que genera código Java estándar y los add-on nointroducen limitaciones específicas-Ambos actualmente no son tecnologías maduras, aunque con una gran proyecciónTipado estático vs Tipado Dinámico. Bondades del lenguaje. Azúcar sintácticoEcosistema 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 enRoo vs Grails13El rendimiento de una aplicación Roo es superior a Grails al no introducir ninguna penalización entiempo de ejecuciónNo 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 elegiruna u otra plataforma
  14. 14. Herramienta de diagnóstico avanzada que permite monitorizar el rendimiento de aplicaciones entiempo 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 losdesarrolladores tener acceso de la información de tiempos de respuesta en:Consultas JDBCInteracción de Spring BeanLlamadas a servicios externosSpring Insight14La herramienta puede servir de ayuda a los equipos de QA para detectar problemas en elrendimiento de las aplicaciones.Complementa a las herramientas de carga/estrés para descubir el por qué de un problema derendimiento.La tecnología incluye un Kit de desarrollo, el cual puede extender la funcionalidad que ofrece Insightpara 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 parteservidora que ofrece Insight.
  15. 15. La aplicación no requiere ninguna configuración especial, instrumentación y pasoadicional, 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 unpunto 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?.15Spring Insight recoge la información asociada a estos eventos, lo cual permiteconocer el por qué el rendimiento de una aplicación no es el correcto.Spring Insight usa tecnología AOP para monitorizar el rendimiento de lasoperaciones. Las aplicaciones son cargadas con un ClassLoader especial quedinámicamente instrumentan aplicaciones web en tiempo de ejecución.Spring Insight, de momento, mantiene los datos en memoria. Por tanto, se requieremás memoria que en una aplicación normal.
  16. 16. Conceptos clave:Target application: Aplicación sobre la que se va a monitorizar el rendimiento entiempo de ejecuciónOperation: Encapsula una orden de trabajo dentro un hilo de ejecución: Flush deHibernate, 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. Elcore de un frame es una operación.Spring Insight Development Kit16core 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 ylas métricas son calculadas en base a endpoints. Ejemplo, todas las trazas queforman parte del mismo método de un mismo método de un controlador formaparte de un mismo endpoint.Aspecto: Mediante la aplicación de aspectos, se recopila información de ejecuciónde la aplicación target.
  17. 17. Relaciones entre artefactos de Insight17
  18. 18. Pasos básicos para la construcción de un pluginDebe haber un aspecto escrito en AspectJJ encargado de interceptar la ejecución demétodos: jdbc, spring mvcx, etc..El aspectJ se encargará de construir operaciones que básicamente se encargan derenderizar 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 lainformación asociada de la operación dentro del dashboard.18Endpoint Analyzer.
  19. 19. MadridAvda. de Europa, 26 - Ática 5, 3ª Planta28224 Pozuelo de AlarcónE-mail: info@paradigmatecnologico.comTeléfono: +34 91 352 59 42Fax: +34 91 715 89 66
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×