A fines del año 2004, aprovechando el conocimiento en materias aduaneras adquirido como administrador del sistema María, concebí y dirigí la reingeniería del sitio de estadísticas de comercio exterior, servicio que prestaba mi empleador, SIF América. El proyecto surgió como iniciativa personal, pero pronto logré entusiasmar al equipo de desarrolladores que me acompañó en el proceso y por supuesto a la empresa, que me dio vía libre para el desarrollo.
El sitio de estadísticas preexistente estaba completamente desarrollado en PL/SQL, un lenguaje de scripting del motor de base de datos Oracle. El software era muy difícil de mantener, lo cual hacía muy costosa la incorporación de nuevas funcionalidades o ampliar la compatibilidad de navegadores. Una de sus principales limitaciones era que el diseño de su base de datos requería que las consultas estuvieran predefinidas, lo que limitaba el potencial de explotación de la información por parte del usuario.
Los objetivos que me planteé para el nuevo sitio web fueron los siguientes:
- El sitio web debía ser amigable al usuario.
- La navegación debía ser intuitiva y autodocumentada.
- La confección de consultas debía ser libre, sencilla y potente.
- Se debía contar con dos niveles de cache; uno en la base de datos y otro en el web server.
- Las consultas debían ser responsivas, sin importar la complejidad del criterio de búsqueda ingresado.
- La interfaz del usuario debía ser multilenguaje.
- Los navegadores soportados debían incluir Netscape Navigator e Internet Explorer 4, 5 y 6, pero el layout se realizaría utilizando Cascade Style Sheets para ampliar las opciones del usuario.
Algunos de estos conceptos pueden parecer obvios u obsoletos, pero es necesario recordar que se trataba del año 2004.
Para cumplir con este ambicioso conjunto de condiciones, el sistema que ideé contó con las siguientes tecnologías:
- Sistema operativo Linux CentOS.
- Base de datos Oracle.
- Almacenamiento en clusters, un tipo de conjunto de tablas específico de Oracle, para mantener la lectura de registros relacionados físicamente cercanos entre sí.
- Índices tipo bitmap para que el agregado de condiciones de consulta no impacte negativamente en la performance.
- PHP5 como lenguaje de programación del front-end, utilizando las extensiones eaccelerator para opcode cache, y ming para la generación dinámica de objetos Flash.
- Servidor de web Apache utilizando mod_rewrite.
- C++ y Pro*C para el software batch de alimentación de la información, diseñado para la carga en paralelo de las tablas del cluster, aprovechando al máximo sus beneficios.
Mis responsabilidades fueron las siguientes:
- Concepción del proyecto, definición de sus objetivos y diseño general.
- Arquitectura de la solución.
- Diseño de la base de datos.
- Programación de las librerías de base (cache, generación de páginas, sistema de multilenguaje, etc.) y de los casos de uso.
- Programación del software batch de carga.
- Dirección y coordinación del equipo de programación, asignación de tareas y capacitación.
- Dirección y coordinación del diseñador web con el que produjimos la gráfica y la navegación de la interfaz de usuario.

