El reto
La plataforma original estaba construida sobre una arquitectura monolítica desarrollada en Java 7, con un elevado acoplamiento entre módulos funcionales y una fuerte dependencia entre las capas de presentación, negocio y persistencia.
Esta situación dificultaba la evolución del sistema, incrementaba el riesgo asociado a cada despliegue y hacía prácticamente imposible escalar componentes de forma independiente. La incorporación de nuevas funcionalidades requería ciclos de desarrollo largos y una coordinación compleja entre distintos equipos.
La estrategia de modernización
Se diseñó una estrategia de migración progresiva basada en el patrón Strangler Fig, permitiendo extraer gradualmente funcionalidades del monolito hacia una arquitectura distribuida de microservicios sin interrumpir la operación del negocio.
Cada nuevo servicio fue desarrollado siguiendo Arquitectura Hexagonal y Domain-Driven Design (DDD), desacoplando completamente el dominio de negocio mediante puertos y adaptadores. Esto permitió evolucionar la plataforma con menor riesgo, mayor mantenibilidad y despliegues independientes.
Arquitectura Cloud
La nueva plataforma se desplegó sobre AWS utilizando Kubernetes como plataforma de orquestación, Docker para la contenerización y una arquitectura basada en microservicios escalables de forma independiente.
La comunicación asíncrona entre servicios se implementó mediante Apache Kafka, mientras PostgreSQL y Amazon S3 soportaban la persistencia transaccional y documental reduciendo el acoplamiento y aumentando la resiliencia del sistema.
Observabilidad
Se implantó una plataforma de observabilidad basada en OpenTelemetry, Micrometer, Prometheus y Grafana, proporcionando trazabilidad distribuida, métricas de negocio y monitorización completa de toda la plataforma.
Gracias a ello fue posible detectar cuellos de botella, reducir tiempos de resolución de incidencias y disponer de métricas de rendimiento en tiempo real.
Inteligencia Artificial Generativa
Uno de los principales objetivos del proyecto consistió en incorporar capacidades de IA Generativa utilizando Spring AI junto con modelos LLM para asistir a equipos técnicos y funcionales.
Se diseñó una arquitectura RAG (Retrieval-Augmented Generation) apoyada sobre bases de datos vectoriales, permitiendo enriquecer las respuestas de los modelos con información corporativa previamente indexada.
Contratos OpenAPI, documentación técnica, procedimientos funcionales y conocimiento interno fueron transformados en embeddings e indexados en una base vectorial para proporcionar contexto a los modelos antes de cada consulta.
Esta solución permitió desarrollar asistentes inteligentes capaces de responder preguntas técnicas, acelerar el soporte interno y reducir significativamente las alucinaciones de los modelos generativos.
Gobernanza y Seguridad de la IA
La adopción de IA Generativa fue acompañada por una estrategia de AI Governance basada en control de acceso a modelos, trazabilidad de consultas, protección de la información corporativa y validación de prompts.
Se incorporaron mecanismos frente a Prompt Injection, Data Leakage, filtrado de información sensible y control de permisos garantizando un uso seguro de la Inteligencia Artificial dentro de la organización.
DevSecOps y Calidad
Toda la plataforma quedó integrada en pipelines CI/CD automatizados con pruebas unitarias, integración continua, análisis estático mediante SonarQube y despliegues automatizados sobre Kubernetes.
Esta estrategia redujo considerablemente los tiempos de entrega, incrementó la estabilidad del sistema y mejoró la calidad global del software.