Aplicaciones GeneXus Multi-KB
Cada vez mas a menudo me encuentro con aplicaciones GeneXus que son generadas en múltiples bases de conocimiento. Para clarificarlo un poco, se tienen diferentes KB que generan programas que están pensandos para ser usados como si fueran una única aplicación.
Estudie un poco los motivos que llevan a esto y vi que son por demás diversos. Los principales motivos son:
Seguridad.
Se necesita tener una parte de de la aplicación con determinada seguridad y se prefiere dividir la KB en la parte "mas segura" y "la no tan segura".
Tecnología.
Se necesita una funcionalidad extra que viene en la nueva versión de GeneXus, pero no se esta en condiciones de migrar toda la KB, por lo que se decide hacer el nuevo desarrollo en una nueva KB con la nueva versión y lograr que ambas aplicaciones conversen. Esto pasa a veces con aplicaciones mobile, sobre una aplicación WEB que ya existe.
También puede pasar que se tenga una aplicaciones que aun genera aplicaciones con winforms (por ejemplo en Evolution 2) y el resto de la KB se migra a GeneXus 16.
Deploy
Es necesario hacer la instalación de una parte de la aplicación en determinados servidores y otra en otros. Por ejemplo por motivos de performance, se decide dividir la KB en procesos batch y otra en paginas WEB o también para separar lo que usa un dbmd Oracle con lo que accede a SQLServer.
Microservicios.
Cada dia es mas aceptada la arquitectura de microservicios para las aplicaciones. Para garantizar el aislamiento del servicio, han optado por generar una KB aislada y consumir dichos servicios con external objects.
Velocidad de desarrollo.
Algunos grupos prefieren tener varias KB de tamaños manejables, y no una gran KB, por motivos de la demora al hacer un build all, salvar objetos, etc.
Todos estos motivos son entendibles (algunos mas que otros) y parece que en el futuro tendremos que poder manejar este tipo de instalaciones.
Esto trae como consecuencia, que hay que hacer el build / package / deploy de la aplicación en forma mucho mas cuidadosa, pues todo se complica un poco mas.
La comunicación entre las diferentes KB también tiene que controlarse mucho mas.
Mantener sincronizadas los objetos compartidos entre las KB (puede ser tablas, definiciones de servicios, etc) es una tarea engorrosa y muy delicada, sobre todo si se tienen KB en diferentes versiones de GeneXus.
Creo que para GeneXus es una oportunidad enorme de hacer herramientas que colaboren con la generación / instalación de este tipo de aplicaciones con múltiples base de conocimiento, pues resolviendo ese problema, vamos a poder atacar problemas mas grandes y posiblemente colaborar entre empresas en forma mas fácil.
Buen artículo, siempre un paso adelante usted.
ResponderBorrarGracias por el comentario.
BorrarYa hace tiempo empresas se enfrentan a estos desafíos, no es nuevo para nada, pero si es natural que a medida que las empresas crecen los productos y sus modulos crecen para contemplar las diferentes necesidades de los clientes. Hace unos cuantos años implememte un sistema de build y versionado multi KB que se encargaba de comparar y controlar los componentes duplicados para que desde origen se exportara y se mantuviera sync las definiciones necesarias en KB destino. Dado que estos componentes en KB destino se marcaban como referencia se ununa definicion origen, desde ahí en el proceso de conpilaccom y distribución esos componentes dumny no se se deployaban al ambiente productivo y con eso implementan lo que en su época lo llamaba "KB virtual".A diferencia de módulos que requiere que generes y versiones paquetes este modelo Live peemitia que muchos trabajarán en su KB y dejando que las definiciones referenciadas se mantuvieran sincronizadas por la herramienta. La herramienta no era mágica, procesos batch, informes y acciones de correcicor manual era necesaria (con un poco más de esfuerzo podría haber sido live, update automatico, pero en esa época hacer todo con xpz y gxpublic tebte sus desafíos). Está bueno ver hoy en día en donde estan los desafíos para ver por dónde y cómo proponer sokuciones, debe de depender mucho de como cada empresa me imagino gestiona su conocimiento.
ResponderBorrarEs cierto que esto no es nuevo, pero ahora se ha hecho mas comun. Creo que por esto, es necesario dedicarle recursos y horas de pienso, para poder generalizarlo a muchas soluciones.
BorrarHola Enrique.. llegue a tu articulo buscando info de lo que planteas y veo que han pasado un par de años desde que lo escribiste.
ResponderBorrarSabes si hubo novedades o movimiento por parte de Genexus para que esto sea mas simple?