Situación del cliente
Banco mediano español especializado en empresas y promotoras, con ~8.000M€ en balance. El sistema de gestión de crédito promotor —préstamos a promotores inmobiliarios, financiación de suelo, certificaciones de obra— corriendo en un mainframe IBM z/OS desde 1994. Treinta y dos años de evolución: aproximadamente 2,1 millones de líneas de COBOL en 847 programas, documentación funcional que cubría menos del 15% del código real, y cuatro generaciones de programadores ya jubilados.
El detonador fue DORA. La guía del Banco de España sobre continuidad operativa exigía acreditar capacidad de recuperación ante un fallo catastrófico en menos de 4 horas. El banco no podía acreditarlo. El soporte IBM representaba el 31% del presupuesto total de TI. Habían intentado una migración tradicional tres años antes — análisis funcional manual, rediseño en Java EE, proyecto de 30 meses. Cancelado a los 18 meses porque los analistas no lograban capturar la lógica de negocio oculta en el COBOL.
Retos
- Arqueología regulatoria: lógica de negocio crítica sin documentación — el agente detectó 23 bloques de código con reglas de negocio no documentadas que habrían sido omitidos en una migración manual, incluyendo cálculos de provisiones bajo circular del Banco de España
- Precisión decimal COBOL vs. PostgreSQL: COBOL usa aritmética COMP-3 (decimal exacta); PostgreSQL con FLOAT acumula errores en cálculos de intereses y certificaciones de obra. Requirió cambio a tipo NUMERIC en Aurora para todos los campos financieros
- Inconsistencias en coexistencia: durante la operación en paralelo, el 0,3% de transacciones (~15 diarias) mostraban discrepancias entre mainframe y sistema nuevo, por diferencias de precisión decimal y condiciones de carrera en replicación vía MSK
- Bloqueo del CISO: el código fuente COBOL contenía referencias a datos de clientes. El CISO bloqueó el flujo hasta implementar análisis estático para enmascarar datos personales antes de enviar al modelo, VPC endpoint privado para Bedrock, y logging completo de prompts para auditoría
- Alucinaciones en lógica de dominio compleja: para programas con múltiples reglas condicionales anidadas (cálculo de certificaciones de obra), el agente generaba descripciones plausibles con imprecisiones sutiles que el equipo no podía detectar sin validación cruzada
- Gestión del talento: dependencia crítica de 4 perfiles mainframe con riesgo de fuga/jubilación. El proyecto debía transferir el conocimiento codificado antes de que esos perfiles no estuvieran disponibles
Solución en implementación
- Fase 0 — Inventario agéntico (6 semanas): agente de análisis con Claude en Bedrock sobre todo el repositorio COBOL en CodeCommit. Genera descripción funcional, mapa de dependencias, inventario DB2 y casos de prueba. Validación cruzada: el agente ejecuta sus casos de prueba sobre el COBOL real y verifica que sus predicciones son correctas. Primer mapa funcional completo del sistema en 32 años
- Fase 1 — Modernización con Kiro (18 meses, en curso): flujo spec-driven: el arquitecto define el componente → Kiro genera specs (requisitos, diseño, plan) con el contexto del análisis COBOL y la arquitectura target → validación → Kiro propone implementación en Python/FastAPI → validación contra casos de prueba del COBOL original. Steering file contiene el análisis funcional completo y las 23 reglas críticas identificadas
- Arquitectura target event-driven: 14 dominios funcionales independientes. Amazon EKS + Fargate. Aurora PostgreSQL con tipo NUMERIC para campos financieros. Amazon MSK (Kafka) para replicación mainframe→cloud durante transición. Amazon API Gateway como fachada única
- Validación de equivalencia funcional: sistema en SageMaker que ejecuta las mismas transacciones contra mainframe y sistema nuevo, comparando campo a campo. Las discrepancias se resuelven automáticamente en una reconciliación nocturna
- 4 de 14 dominios en producción en paralelo: gestión de promotores, clasificación de riesgo, gestión de garantías y certificaciones de obra. Cero incidencias críticas en 7 meses de operación en paralelo
- Seguridad del código fuente: análisis estático previo para enmascarar referencias a datos personales en el COBOL, VPC endpoint privado para todas las llamadas a Bedrock (tráfico nunca sale a internet), logging completo para auditoría del CISO
Resultados parciales (proyecto en curso)
Patrón de arquitectura
Modernización incremental de sistema COBOL legacy (2,1M líneas) a arquitectura cloud-native AWS. Agente de análisis con Bedrock documenta el sistema en 6 semanas; Kiro (spec-driven) acelera el desarrollo 3,5×; Amazon EKS + Aurora PostgreSQL como plataforma target. MSK para sincronización durante la transición.
- Fase 0 de análisis agéntico antes de cualquier código — el agente debe generar casos de prueba Y ejecutarlos sobre el COBOL real para validar sus propias predicciones. Sin esto, la documentación generada es plausible pero no verificada.
- Tipo NUMERIC (no FLOAT) en Aurora PostgreSQL para campos financieros — COBOL COMP-3 usa aritmética decimal exacta. IEEE 754 acumula errores en cálculos de intereses que el Banco de España detectaría en auditoría.
- Análisis estático del COBOL antes de enviarlo al modelo — enmascarar datos personales + VPC endpoint privado para el tráfico de análisis con información de clientes bancarios.
- Capa de reconciliación nocturna para el periodo de coexistencia — las inconsistencias entre mainframe y sistema nuevo son inevitables durante la transición. Diseñar la reconciliación desde el inicio, no como parche posterior.
- El steering file de Kiro es el activo más crítico — contiene el análisis funcional completo y las reglas de negocio críticas. Sin él, las specs generadas por Kiro son genéricas e inútiles para código bancario.
- Documentar los descubrimientos regulatorios como activo de negocio — las 23 reglas ocultas encontradas por el agente en este proyecto eran valiosas para el área de negocio, no solo para el equipo técnico.