Herramientas necesarias para desarrollar con GeneXus en tiempos de DevOps.
Desde hace un tiempo, es bastante común que los grupos de desarrollo tengan mayor participación en el ciclo de vida de una aplicación. Los desarrolladores que antes "solo hacían programas", ahora pasan a realizar tareas en el build, deploy, monitoreo de aplicaciones.
Esta tendencia es la llamada DevOps, donde se unifican los grupos de Desarrollo y Operaciones para
brindar un mejor servicio y tener mejor productividad. En los proyectos que hemos utilizado este tipo de metodología, efectivamente ha mejorado la productividad brindando mejor servicio a los usuarios de la aplicación. Los cambios le llegan mas rapido y los problemas se solucionan mas rapido también. También los errores de coordinación entre los que desarrollan y los que instalan disminuyen al hacer todos en el mismo grupo las tareas. Es mas fácil automatizar varias tareas que antes se hacían en forma manual.
Estos cambios en la forma de trabajar, trae varias consecuencias. La mas notoria, es que se hace mas notoria la necesidad de herramientas integradas que brinden información rápida y certera de la aplicación en todas sus etapas.
Desde hace años, GeneXus nos ayuda en las etapas de BUILD/CODE (las etapas que están en amarillo en la imagen ).
En años recientes, se han empezado a incorporar herramientas para el TEST (GXTest, GXUnit, etc) y a partir de GX16 vamos a tener la posibilidad de hacer programar algunas de estas pruebas dentro de GeneXus.
También hemos avanzado bastante en las etapas de RELEASE / DEPLOY con herramientas de integración continua y ajustes de configuración. Queda aun mucho por hacer, pero hemos avanzado mucho.
En donde aun queda bastante por hacer es en las etapas de PLAN/MONITOR/OPERATE.
Trazabilidad
En las etapas que creo que se podría mejorar es en la planificación (saber cuales son los requerimientos pendientes y como pueden afectar el desarrollo futuro) y también tener trazabilidad entre los cambios solicitados por los usuarios y los cambios realizados en el sistema.
Tener esta trazabilidad, posibilita hacer un análisis de impacto del cambio mejorado. Aca creo que seria importante lograr una integración entre las herramientas de ISSUE Tracking (Mantis/Jira/ Trello/Bugzilla, etc) y GeneXus o GeneXus Server.
Si desde dentro de GeneXus puedo ver que requerimientos tengo asignado y su estado, y puedo asociar los objetos cambiados a un determinado requerimiento, esto va a permitir a todos un trabajo mas ordenado.
Cuando me toca monitorear una aplicación, es casi indispensable tener una trazabilidad desde el requerimiento de los usuarios, a los objetos cambiados, a los binarios instalados, de forma de poder detectar los cambios realizados y a quien puede afectar.
Para lograr esto con GeneXus deberíamos tener una forma de integración entre los diferentes Issue Tracking y GeneXus (o GeneXus Server), pues hoy es bastante difícil de conseguir.
Poder ver log de errores
Algunas cosas que faltan para lograr tener un mejor control es poder acceder de forma mas facil a los log de errores de la aplicación. Hoy seguramente se tengan log de errores, pero desparramados por varios lugares. Pueden estar en el log de los diferentes servidores / nodos, en las maquinas que corren los procesos batch, o en diferentes clientes si la aplicación se instala en mas de un cliente. Seria bueno lograr que todos los errores se pudieran centralizar y analizar. Contar con una herramienta que analice estos errores y avise cuando algo recien instalado esta cancelando o cuando algun error se repite. Poder reaccionar rapido a caídas de la aplicación es cada dia mas importante, y automatizar el proceso ayuda muchísimo a lograrlo.
Que / Quien / Cuando / Como usa mi aplicacion
Tener herramientas de monitoreo para ver como responde mi aplicacion es muy importante. Poder detectar cuando algo esta funcionando mas lento que la version anterior es vital para empezar a corregir problemas antes que los usuarios se empiecen a quejar.
En fin, algunas de estas herramientas ya existen en el mercado para aplicaciones, pero los desarrolladores tenemos que aprender a usar, a integrar con GeneXus.. Tal vez aparezcan algunos interesados en hacer dichas integraciones y luego ofrecer el servicio al resto de la comunidad GeneXus que seguramente la necesiten.
Esta tendencia es la llamada DevOps, donde se unifican los grupos de Desarrollo y Operaciones para
brindar un mejor servicio y tener mejor productividad. En los proyectos que hemos utilizado este tipo de metodología, efectivamente ha mejorado la productividad brindando mejor servicio a los usuarios de la aplicación. Los cambios le llegan mas rapido y los problemas se solucionan mas rapido también. También los errores de coordinación entre los que desarrollan y los que instalan disminuyen al hacer todos en el mismo grupo las tareas. Es mas fácil automatizar varias tareas que antes se hacían en forma manual.
Estos cambios en la forma de trabajar, trae varias consecuencias. La mas notoria, es que se hace mas notoria la necesidad de herramientas integradas que brinden información rápida y certera de la aplicación en todas sus etapas.
Desde hace años, GeneXus nos ayuda en las etapas de BUILD/CODE (las etapas que están en amarillo en la imagen ).
En años recientes, se han empezado a incorporar herramientas para el TEST (GXTest, GXUnit, etc) y a partir de GX16 vamos a tener la posibilidad de hacer programar algunas de estas pruebas dentro de GeneXus.
También hemos avanzado bastante en las etapas de RELEASE / DEPLOY con herramientas de integración continua y ajustes de configuración. Queda aun mucho por hacer, pero hemos avanzado mucho.
En donde aun queda bastante por hacer es en las etapas de PLAN/MONITOR/OPERATE.
Trazabilidad
En las etapas que creo que se podría mejorar es en la planificación (saber cuales son los requerimientos pendientes y como pueden afectar el desarrollo futuro) y también tener trazabilidad entre los cambios solicitados por los usuarios y los cambios realizados en el sistema.
Tener esta trazabilidad, posibilita hacer un análisis de impacto del cambio mejorado. Aca creo que seria importante lograr una integración entre las herramientas de ISSUE Tracking (Mantis/Jira/ Trello/Bugzilla, etc) y GeneXus o GeneXus Server.
Si desde dentro de GeneXus puedo ver que requerimientos tengo asignado y su estado, y puedo asociar los objetos cambiados a un determinado requerimiento, esto va a permitir a todos un trabajo mas ordenado.
Cuando me toca monitorear una aplicación, es casi indispensable tener una trazabilidad desde el requerimiento de los usuarios, a los objetos cambiados, a los binarios instalados, de forma de poder detectar los cambios realizados y a quien puede afectar.
Para lograr esto con GeneXus deberíamos tener una forma de integración entre los diferentes Issue Tracking y GeneXus (o GeneXus Server), pues hoy es bastante difícil de conseguir.
Poder ver log de errores
Algunas cosas que faltan para lograr tener un mejor control es poder acceder de forma mas facil a los log de errores de la aplicación. Hoy seguramente se tengan log de errores, pero desparramados por varios lugares. Pueden estar en el log de los diferentes servidores / nodos, en las maquinas que corren los procesos batch, o en diferentes clientes si la aplicación se instala en mas de un cliente. Seria bueno lograr que todos los errores se pudieran centralizar y analizar. Contar con una herramienta que analice estos errores y avise cuando algo recien instalado esta cancelando o cuando algun error se repite. Poder reaccionar rapido a caídas de la aplicación es cada dia mas importante, y automatizar el proceso ayuda muchísimo a lograrlo.
Que / Quien / Cuando / Como usa mi aplicacion
Tener herramientas de monitoreo para ver como responde mi aplicacion es muy importante. Poder detectar cuando algo esta funcionando mas lento que la version anterior es vital para empezar a corregir problemas antes que los usuarios se empiecen a quejar.
En fin, algunas de estas herramientas ya existen en el mercado para aplicaciones, pero los desarrolladores tenemos que aprender a usar, a integrar con GeneXus.. Tal vez aparezcan algunos interesados en hacer dichas integraciones y luego ofrecer el servicio al resto de la comunidad GeneXus que seguramente la necesiten.
Enrique buenas ideas. Yo me he cuestionado hace tiempo si no es posible anticiparse al error, es decir una capa entre el error y y la ejecucion que capture los comportamientos y analice con I.A. si hay probabilidades de errores y alertar.
ResponderBorrarAnalizar los errores es una tarea para expertos y muchas veces a los desarrolladores GX les cuesta interpretarlos. Sobre todo leer un stack trace con número de líneas e identificar cual objeto y evento es el culpable no es trivial. Luego viendo el tipo de error puede sugerir correcciones.
BorrarHola Enrique!
ResponderBorrarOra cosa de interes (que no se donde ubicarla en el loop), es poder provisionar GeneXus IDE para un developer, usando herramientas de automation.
En particular, algo que estaria muy bien es poder tener las recetas (playbook Ansible o similar) para que sobre una instancia de Windows instale tanto genexus como los pre-requisitos se instalen en forma Silent / automatica.
Esas recetas entonces, se podrian reaprovechar muy bien para los que necesitan probar cosas sobre distintas versiones de GeneXus, para armar builds sobre una nueva version en otro servidor, etc.
¿Que te parece? ¿Tenemos algunas, quiza las podamos compartir en github?
abz!
Hola Fabian!
BorrarHay varias otras cosas que se necesitan y no las inclui para no aburrir.
Es importante, instalar GeneXus + su pre-requisitos y tambien, que una vez que elijas una KB, se instale todo lo que esa KB necesita (por ejemplo, patrones, user controls, y bibiliotecas que esa aplicacion necesite).
En este terreno, algo se esta avanzando.
Por ejemplo, en el foro nombraron una tarea MSBUILD que permite actualizar una instalacion de GeneXus, que estaria en desarrollo.
Por otro lado, se esta trabajando en tener los User controls dentro de la KB.
Si ustedes ya tienen armado recetas de armado de instalaciones GeneXus, creo que serian bienvenidas.
Poderle dar a un grupo de desarrollo un script o algo ejecutable que le instale la ultima versión de GeneXus y sus requisitos, nos ahorraría mucho tiempo en las migraciones y seria de mucha ayuda para la comunidad.
Saludos.