Entradas

Mostrando las entradas de agosto, 2014

Build & Deploy - Avances

Imagen
En la interna, seguimos avanzando en entender y especificar el proceso de Build y Deploy de aplicaciones Genexus.  Va tomando forma y creo que ya tenemos algo implementable. Tenemos un primer prototipo operativo y estamos en la etapa de generalizarlo para otras KBs. Aun queda mucho trabajo por delante, pero creo vamos bastante bien. Documente el proceso en el Wiki de la comunidad y tambien lo pongo aca. Build En el build, dado una KB/Version/Environment  si usa GXServer, se ejecuta un Update y se recupera el ultimo numero de Commit,  Se saca una lista de los Commits y los objetos modificados en los mismos y se lo guarda como documentacion (Desde el commit anterior hasta el commit actual) Si no usa GXServer se incrementa el numero de build Si no hay nuevo commit solo envio un mail.  Se hace un Build All  Se salvar la Reorganizacion Se recorren todos los main (y todos los llamados) que tienen especificado el DeployLocation y se lo separa en directorios diferentes. 

Tecnologias interesantes para Build & Deploy

Imagen
En el contexto de proyecto de mejora de Build & Deploy de aplicaciones GeneXus , me ha permitido estudiar algunos productos y tecnologías interesantes. Docker - Es un empaquetador/contenedor de aplicaciones que facilita que una aplicacion hecha en un notebook pueda ser desplegada en un ambiente de pruebas primero y luego en el ambiente de produccion, sin cambios. Me resulto interesante. Packer - Permite generar maquinas virtuales identicas para diversas plataformas, a partir de una definicion unica de la misma. Entre otras plataformas, soporta generar containers docker. OpenStack es un sistema operativo para la nube, que permite el control de nuesstras aplicaciones, haciendo mas fácil la instalación y administración de las aplicaciones desde una interfaz web. También es soportado por Packer.  VirtualBox - Manejador de maquinas virtuales de Oracle, que funciona bastante bien para poder generar maquinas virtuales en el equipo. Con productos y tecnologías pareci

KBDoctor : Ejemplo de limpieza de una KB en producción.

Imagen
Me pasaron una KB que esta en producción en GeneXus X Evolution 2, mantenida por dos desarrolladores, para hacerle una limpieza con el KBDoctor . Por lo que vi, es una KB bien mantenida y bien desarrollada, sin demasiado cosas históricas o basura. Me pareció un buen ejemplo para medir los resultados de una limpieza de la KB, eliminando todo lo que no se usaba. El objetivo es llegar a una KB que tenga los mismos ejecutables que tenia la original, y funcionalmente equivalente a la anterior, pero sin ningún objeto, tabla o atributo que no sea util para la aplicacion. Para esto, usé el KBDoctor para lograrlo. Partía de una KB sin errores de especificación, ni de generación por lo que el trabajo estaba bien avanzado. Los pasos que realice fueron: 1) Hacer un backup de la KB. Cree una versión congelada de la KB antes de la limpieza, para poder volver a recuperar algun objeto en caso de necesidad.  También hice un export de todos los objetos de la KB, de forma de tener una alte

Análisis de Impacto ampliado o manejo del API de mi aplicación.

Imagen
Hace unos años, las aplicaciones Genexus podian representarse con el siguiente esquema simple: El origen de los datos, era una base de datos y se tenia salida en forma de pantallas, reportes, archivos de texto, mails, etc. Cuando teníamos un cambio en la aplicación, nos alcanzaba con analizar que era lo que cambiaba en las tablas de la base de datos y debíamos comprobar que las salidas fueran las esperadas.  También era conveniente comparar las navegaciones de los objetos internos, para ver que los cambios fueran los esperados y con eso,  nos resultaba facil el manejo de los cambios de version de nuestras aplicaciones.  Las aplicaciones actuales, son bastante más complejas, y pueden representarse en forma simplificada como: Cual es la diferencia?  Seguimos teniendo la base de datos y las mismas salidas, pero se agregaron otras fuentes de datos (generalmente web services)  y a su vez nuesta aplicacion paso a ser fuente de datos de otras aplicaciones. Que co

PIENSOPIENSO: Es posible ejecutar esta reorganización?

Imagen
Tengo una KB GeneXus y en la misma tengo la transacción TransaccionNoUsada *Clave   AtributoSecundario   AtributoSecundarioNoUsado (no es referenciado en ningun objeto) Dicha transaccion tiene la propiedad de GenerateObject = False pues nadie la invoca y genera la tabla de nombre MiTabla Tengo ademas un programa, (Tipo Procedure, main, Command Line) que hace new  //Agrega registro en la tabla MiTabla     Clave = &Clave     AtributoSecundario= 'Valor' endnew Elimino el atributo AtributoSecundarioNoUsado y se genera la reorganizacion que hace: ALTER TABLE MiTabla DROP COLUMN AtributoSecundarioNoUsado; PREGUNTA: Puedo ejecutar la reorganización sin instalar nuevamente mis programas? Justifique su respuesta

Independencia tecnológica en tiempos de la nube.

Imagen
Para cualquier empresa que dependa del software para subsistir (casi el 100% de las empresas), es importante no estar atado a ningún proveedor de forma que si dicho proveedor tiene problemas o se dificulta me relación con el, pueda seguir funcionando como empresa sin afectar el negocio central de dicha empresa.  Por eso, es bueno tener la libertad de cambiarme de sistema operativo, de base de datos y hasta de plataforma. El poder hacer dichos cambios me da la libertad de poder adaptarme a los cambios y aprovechar mejor las oportunidades que se presentan.  Los que desarrollamos con GeneXus tenemos mayor grado de libertad que quienes desarrollan con otras herramientas, pues el cambio de alguna de estas características no es tan costoso como en otras plataformas.  Desde hace un buen tiempo, se esta dando una transición de tener sistemas locales, a la ejecución en la nube, generalmente virtualizados.  Lo que antes acostumbramos a instalar en forma local en nuestros servi

Migraciones GeneXus

Imagen
En las últimas semanas he estado ocupado con algunos proyectos interesantes. Dos empresas del exterior me pidieron si podíamos ayudarlos a migrar KB de GeneXus a las ultimas versiones de GeneXus. Un caso era una KB grande desde GeneXus 9.0 generando VB a Evolution 2 generando C#, y solo necesitaron ayuda a nivel de consultoria. Colaboramos en las dudas cuando se trancaban y pudieron salir adelante. Fue interesante el trabajo a distancia y lograron terminar el proyecto según los plazos previstos. Están en la etapa de paralelo con los usuarios en dos de las instalaciones y con buenos tiempo de respuesta. El otro proyecto, es bastante mas grande y complejo. Tenían 7 KB Genexus 7.5 y había que: Unificar algunas de las KB (terminan siendo 4 KB) Cambiar el lenguaje de generacion de VB 6.0 a C# Cambio de Servidor de Base de datos (el equipo) Cambio de Version del DBMS (Informix 9 a Informix 12). Metodo de acceso de ODBC a ADO.NET  Incorporar GXServer y Automatizar el proceso del