UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA Documentación de Motivación del Proyecto JMit Java Monitoring by Introspection Tool Alumnos: 84.264 86.097 Tutor: Wachenchauzer, Rosa Graciela
Indice Objetivo... 3 A quién va dirigido JMit?... 3 Presentación del Problema... 3 Aplicando monitores utilizando POA... 3 JMit... 4 Visualización... 5 Aplicaciones en simultáneo... 5 Maven... 6 Página 2 de 6
Objetivo El objetivo de esta herramienta es simplificar el monitoreo de aplicaciones escritas en lenguaje Java. Brinda al equipo de trabajo de las mismas, herramientas que permiten conocer su estado en todo momento. Además permite agregar o quitar opciones de monitoreo en forma declarativa y limpia. A quién va dirigido JMit? Esta herramienta está dirigida a personas con conocimiento técnico de la aplicación que se desea monitorear. La misma debe estar desarrollada sobre la plataforma Java, y es necesario conocer y poseer su código fuente. La herramienta está diseñada no solo para ser directamente utilizada, sino que también, cada uno puede extenderla según sus necesidades. Presentación del Problema En la actualidad, durante el desarrollo de un software, es necesario tener conocimiento del estado del sistema (valores que está manejando, tiempos de cargas, etc.), pero esto no es un problema trivial. Es necesario conocer de antemano cuales son los controles que se quieren aplicar sobre la aplicación. Asimismo, aplicar dichos controles implica escribir código de control junto con el código de la aplicación (mezclando incumbencias). Esto trae varios problemas aparejados: Mayor esfuerzo en horas hombre: el código debe ser desarrollado por las mismas personas que están desarrollando la aplicación. Mezclar incumbencias: el código de aplicación se mezcla con el código de control. Conocer de antemano los controles que se deben realizar: estos deben ser desarrollados al momento que se desarrolla la aplicación, de lo contrario implicaría introducir nuevo código en funcionalidad que puede estar cerrada. Implica que, cuando la aplicación esté lista para ser puesta en producción, habría que quitar todo este código de control, con el problema de no saber exactamente donde está, e incluso la posibilidad de introducir errores (es necesario sacarlo, porque reduce innecesariamente la performance de la aplicación). Incluir un nuevo tipo de control sobre el código de una aplicación ya en producción implicaría modificar el código original, debiendo iniciar un proceso de cambio en el proyecto: desarrollo, testing, etc. Aplicando monitores utilizando POA Mediante la utilización del paradigma de aspectos, varios de estos problemas son resueltos. Monitorear la aplicación ya no implica mezclar incumbencias: Estas funcionalidades transversales (cross cutting concerns) se desarrollan de forma modular separados del código original, lo que resuelve el problema. Cuando se deseen quitar estos aspectos es tan simple como indicarlo en un archivo de configuración, ya no es necesario tocar el código original para esto. Hasta cierto punto se resuelve el problema de conocer de antemano los controles que se quieran realizar. Por ejemplo, si se quisiera monitorear algo de una aplicación que se encuentra productiva, esto no implicaría modificar el código original de la aplicación, sin embargo, sí es necesario desarrollar el código del aspecto para ese tipo de monitoreo, Página 3 de 6
probarlo, etc. Introducir un error en el código de monitoreo implica introducir un error en la aplicación. Sin embargo, con esta solución todavía es necesario dedicar horas hombre del proyecto para el desarrollo del código de aspectos del monitoreo. Es necesario contar con recursos que tengan conocimiento del paradigma y probablemente sea necesario incluir un framework para tal desarrollo, como podría ser AspectJ o Javassist. JMit Para resolver los problemas antes planteados, se construyó la herramienta JMit, Java Monitoring by Introspection Tool. La misma permite monitorear aplicaciones sin necesidad de introducir código para ello. Entre sus prestaciones permite: Definir mediante un archivo de configuración XML los distintos tipos de monitoreo, y donde se aplicarán los mismos. Definir distintos tipos de monitoreo para cada etapa del sistema (Por ejemplo: desarrollo, testing, producción, etc). Utilizar diferentes modos de visualización de los monitoreos aplicados. Programar alarmas ante eventos definidos por el usuario (por ejemplo, enviar un mail ante cierto valor de un atributo). Para esto, JMit no modifica el código original de la aplicación a monitorear, sino que agrega comportamiento mediante aspectos en tiempo de compilación. Página 4 de 6
Por cómo está diseñado este sistema, permite la construcción de nuevos tipos de monitoreo, implementados según los intereses de quien utilice la herramienta. Visualización La herramienta tiene varios módulos que permiten visualizar el estado actualizado de los monitores aplicados. Aquí se tiene en cuenta lo indicado en el archivo de configuración: Alarmas, rangos de valores normales y anormales, etc. Si bien se desarrollaron 3 módulos de visualización para los monitores estándar de JMit, la arquitectura contempla la posibilidad de que cada usuario pueda implementar una visualización distinta según sus necesidades, tipos de monitoreo, etc., incluso pueden existir más de un módulo de visualización al mismo tiempo mostrando el estado de las aplicaciones. Aplicaciones en simultáneo JMit permite unificar la visualización de los estados de las aplicaciones monitoreadas. Podría tratarse de solo una o de varias aplicaciones en simultáneo. Esto es útil para los casos en los que un usuario quiere monitorear más de una aplicación, todas ellas reportarán su estado a un mismo MonitorEngine. Página 5 de 6
Maven Para simplificar la utilización de esta herramienta, se desarrolló un plugin de Maven, que permite, con el simple agregado de unas líneas en el pom del proyecto, integrar de forma limpia el monitoreo con la aplicación original. De esta forma los desarrolladores del sistema no deben preocuparse de ninguna manera por el monitoreo durante la construcción del proyecto. Página 6 de 6