Sistema LUCIA: 25 años de una KB GeneXus en producción

 

Se cumplieron los 25 años del Sistema LUCIA en producción (ver el post de los 20 años) .
Es un sistema aduanero, que permite la declaración aduanera de Importaciones, Exportaciones, Tránsitos y la liquidación de los tributos correspondientes. 

También se controlan los requisitos documentales y de controles de diferentes organismos para poder realizar estas operaciones. 

Adicionalmente controla las cargas marítimas, aéreas, terrestres, fluviales que entran y salen del país, cruzando las declaraciones de cargas, con las operaciones aduaneras. 

Tenemos un equipo maravilloso de arquitectos, programadores, testers, documentadores, mesa de ayuda, abogados, funcionales, dba, devops. Somos 23 personas las que participamos. Si lo comparamos con países de sistemas aduaneros de tamaño similar, logramos mantener el sistema actualizado con menos personas.  La instalacion, operacion del sistema y administración de la infraestructura es realizada por otra empresa.

Durante 25 años muchos mas han colaborado para llegar hasta aca. A todos ellos gracias!.

Para actualizar algunos de los datos que puse hace 5 años

ItemAcumulado 2018Acumulado 2023Unidad
Recaudación38,627,870,02354,228,422,405U$S
Recaudación diaria (promedio)5.291.4895,942,841U$S / dia
Declaraciones (DUA)6,495,6848,400,006DUA

Recaudar casi 6 millones de dolares por dia, es toda una responsabilidad. 

Datos de la KB20182023
Tablas9991259
Objetos (programas)11.61217,459
Objetos (programas + atributos + temas + archivos, etc)27.21438,011
Módulos102149
Bases de Datos (Instancias Oracle)44
Bases de Datos (Tamaño en TB)4.58
Lineas de Codigo (millones)16.714.1
Archivos fuentes (*.cs)21,00018,587

Es llamativo ver como bajo la cantidad de archivos y las líneas de código, a pasar de haber agregado  muchas tablas y tener mas objetos.  Lamentablemente use herramientas diferentes para contar los archivo y las líneas de código. La que uso ahora, no toma en cuenta archivos repetidos. 

No voy a repetir la historia de la KB y sus instalaciones, porque ya esta escrito en el post anterior. 

En estos años incorporamos GAM, GXFlow, Firma Digital, servicios REST y se hicieron cubos con Pentaho y SuperSet para resolver parte de la Analitica. 

Actualmente tenemos 5 KB  estamos en pleno proceso de migración de las mismas a GeneXus 18 Upgrade 6. 

Se hicieron 11.639 Commits en 5 años, o sea mas de 6 Commits por dia en GXServer (esto es en la KB mayor, las otras tienen un poco menos de actividad). 

Proceso de build, pack, deploy y test automatizado. 

Algunas cosas a destacar:

Build - Chequea si hay cambios en el servidor. Si no cambio nada, no hace nada. 
Si hay cambios baja los cambios del server, salva la reorg si cambia la estructura de la base de datos, hace un build all.

Pack - Para cada uno de las Deployment Units separa los archivos en directorios para instalar. 
Se agregan archivos adicionales que no brinda GeneXus, necesario para producción

Deploy Simple - Es el proceso que copia los cambios a los ambientes y personaliza los archivos de configuración para los diferentes ambientes (TesteoManual, TesteoAutomatizado, Stage). Es relativamente rapido y puede correr varias veces al dia. 

Deploy Completo - Se borra toda la infraestructura y se vuelve a crear. Se borran sitios, directorios virtuales, se instalan certificados, se configuran bindings, etc. Luego se copia el 100% de los ejecutables.  Esto ejecuta una vez por noche. 

Test Automatizado - Se ejecutan los UnitTest y los UITest. Esta es una etapa que nos gustaría tener mas casos automatizados, pero es bastante costoso crearlos y mantenerlo. 

API Test - Antes de instalar, se ejecuta un proceso manual que chequea que los servicios brindados por el sistema, no cambiaron con respecto a la versión anterior. 

Algo que nos resultó útil, es manejar un código de versión para cada uno de estos pasos. 

Usamos una nomenclatura que es esta:

Esto nos facilitó muchísimo todo el proceso del  manejo del flujo.  Esto se va a completando a medida que avanza el proceso. 

Por ejemplo, si cambia la versión de GeneXus, en vez de hacer un build all, hacemos una limpieza y un REBUILD ALL. 

Si solo cambia el número de Commit, solo hay que hacer un build all. 

Además, es bueno hacer llegar eso a producción, para tener trazabilidad hasta que commit esta instalado. 

Futuro

En los próximos meses, vamos a hacer la instalación de todo esto en GeneXus 18. 
También vamos a empezar una migración de .NET Framework a .NET Core y a .NET 8.

A nivel de infraestructura estamos empezando a usar contenedores y Kubernetes

Vamos a tener que buscar (o inventar) las herramientas para ajustar los archivos de configuración json para los diferentes ambientes (hoy lo tenemos para xml). Van a estar divertidos los próximos meses. 

Comentarios

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.