AWS Transform y agentes de codificación: cómo montar un equipo mixto humano‑IA para migrar legados
Las migraciones de aplicaciones legadas a AWS suelen atascarse siempre en el mismo punto: demasiado grandes para hacerlas de golpe, demasiado manuales para acabarlas a tiempo.
Los agentes de codificación, como el de AWS Transform, prometen acelerar ese viaje. Pero si los dejas sueltos sin un diseño claro de “equipo mixto” humano‑IA, solo cambias el tipo de caos.
En este post vamos a ver cómo plantear una arquitectura de proyecto para migraciones con AWS Transform que combine:
- repos espejo para trabajar seguro sobre el legado
- un flujo de revisión asistida por IA, pero aprobada por humanos
- pruebas diferenciales para no romper producción
- límites de permisos y alcance para que el agente no se dispare al pie
- qué tareas sí y cuáles no delegar al agente de codificación
De los “big bang” al refactor infinito (y cómo la IA cambia el tablero)
En migraciones legadas suele pasar una de estas dos cosas:
- Big bang fallido: meses preparando “el día D”, un corte enorme… y rollback de madrugada.
- Refactor infinito: se empieza “poco a poco”, sin un plan claro, y tres años después el monolito sigue en producción.
Los agentes de codificación tipo AWS Transform añaden una tercera vía: automatizar buena parte del trabajo mecánico de migración (traducción de patrones, actualización de SDKs, generación de tests, etc.), pero con humanos marcando el rumbo y tomando las decisiones de diseño.
El truco no está solo en la herramienta, sino en cómo la integras en tu flujo de trabajo.
Arquitectura de proyecto: repos espejo y entorno controlado
Antes de soltar al agente sobre tu código, necesitas un “campo de juego” claro.
1. Repositorio espejo (read‑only del legado)
La idea base:
- Mantienes el repo legado tal cual, con su ciclo de vida normal.
- Creas un repo espejo de migración, sincronizado desde el legado (solo lectura desde el punto de vista de Transform).
Beneficios:
- El agente trabaja siempre contra una foto controlada del código.
- Puedes reiniciar (resync) el espejo si algo sale mal.
- Separas claramente qué ramas están ya bajo el nuevo modelo en AWS y cuáles siguen 100 % on‑prem/legacy.
2. Repo de destino y ramas de migración
Además del espejo, necesitas un repo de destino donde viva la versión migrada (o modularizada) de la app.
Propuesta:
legacy-mirror: repo que refleja el código original (solo se actualiza desde el legacy real).modern-app: repo de destino, donde se aplican los cambios sugeridos por el agente.- Ramas de trabajo por tema, por ejemplo:
feat/migrate-auth-to-cognitofeat/replace-s3-sdk-v1-v2feat/extract-reporting-service
El agente de AWS Transform se conecta y opera solo sobre modern-app y, opcionalmente, lee legacy-mirror como referencia.
Flujo humano‑IA: revisión asistida, no piloto automático
AWS Transform, según explica AWS en su anuncio oficial, puede analizar tu base de código, proponer cambios y generar pull requests. El riesgo: tratar esos PR como si vinieran de un dev sénior infalible.
La recomendación es tratar al agente como a un dev junior ultrarrápido, pero siempre bajo revisión.
Flujo básico propuesto
Discovery asistido
- El agente recorre el código legado (mirror) y detecta:
- dependencias obsoletas
- puntos de integración on‑prem (colas, BDs, FTP, etc.)
- tech debt obvia (SDKs antiguos de AWS, APIs internas inexistentes, etc.)
- Genera un informe de objetivos de migración.
- Un arquitecto/dev sénior revisa y prioriza: qué va primero, qué ni tocamos aún.
- El agente recorre el código legado (mirror) y detecta:
Planificación de tareas y alcance del agente
- Para cada objetivo, se define el alcance exacto que manejará el agente:
- directorios afectados
- tipos de cambios permitidos (p.ej., solo cambios de SDK, no de dominio)
- restricciones (no tocar contratos públicos, no cambiar esquemas de DB)
- Para cada objetivo, se define el alcance exacto que manejará el agente:
Generación de PRs por lotes pequeños
- El agente aplica cambios en ramas temáticas con alcance acotado.
- Genera PRs pequeños y revisables, no refactors masivos de miles de líneas.
Revisión asistida + humana
- El agente puede anotar el PR con:
- resumen de cambios
- rationale de decisiones
- sugerencias de pruebas a ejecutar
- Un humano revisa con criterios claros:
- ¿Se ha respetado el alcance definido?
- ¿Ha cambiado algún contrato público sin querer?
- ¿El cambio es mecánico o introduce diseño nuevo?
- El agente puede anotar el PR con:
Pruebas diferenciales antes de mergear
- Antes de fusionar, se ejecuta una batería de pruebas diferenciales (ver siguiente sección).
Aprobación final humana
- El merge a main siempre lo hace una persona con contexto del dominio.
Pruebas diferenciales: compara comportamientos, no solo tests
Migrar legado duele porque muchas veces no hay una buena suite de tests o, si la hay, no cubre los flujos críticos.
Con un agente de codificación puedes:
- Generar tests nuevos a partir del código existente.
- Registrar el comportamiento actual y compararlo con el nuevo.
Tipos de pruebas diferenciales útiles
Golden tests a partir del legado
- Capturar respuestas actuales del sistema en producción o staging.
- Guardarlas como “golden files”.
- Hacer que el sistema migrado genere salidas para los mismos inputs y compararlas.
Snapshots de APIs
- Para endpoints REST/GraphQL:
- grabar peticiones reales (sanitizadas)
- reproducirlas contra la nueva versión
- comparar payloads, códigos de estado, tiempos de respuesta.
- Para endpoints REST/GraphQL:
Pruebas de regresión generadas por IA
- Usar el propio agente para:
- sugerir casos límite
- montar harness de pruebas alrededor de módulos críticos.
- Usar el propio agente para:
Una buena política: ningún PR grande generado por IA se mergea sin pasar por al menos una capa de pruebas diferenciales.
Límites de permisos: que el agente no se salga del carril
Los agentes tipo AWS Transform pueden:
- leer código
- escribir cambios
- gestionar dependencias
- interactuar con servicios de AWS (según configuración)
Si les das permisos sin límite, pueden:
- modificar infra en cuentas equivocadas
- cambiar pipelines de CI/CD
- exponer secretos en logs
Principios de seguridad y permisos
Cuenta y rol dedicados
- Crea una cuenta/proyecto aislado para el agente.
- Define un rol específico de IAM con permisos mínimos necesarios.
Acceso solo a repos seleccionados
- Nada de acceso global a toda la organización.
- Lista blanca de repos y ramas donde el agente puede operar.
Sin despliegue automático
- El agente puede crear PRs, nunca hacer merge a producción.
- La pipeline de despliegue se dispara solo tras aprobación humana.
Auditoría y logging
- Registra: qué repos toca, qué cambios genera, qué comandos ejecuta.
- Integra estos logs con la observabilidad que ya uses.
Tareas que SÍ tiene sentido delegar al agente
No todo es buen candidato para IA. Estas son tareas que suelen funcionar muy bien:
1. Actualización de SDKs y dependencias
Ejemplos:
- Migrar de SDKs antiguos de AWS a versiones actuales.
- Cambiar clientes de base de datos a drivers soportados en AWS.
- Sustituir librerías de logging, métricas o tracing.
El agente puede:
- localizar todos los puntos de uso
- actualizar imports y llamadas
- adaptar diferencias de firma
- proponer cambios en configuración.
2. Refactors mecánicos de infraestructura de código
Ejemplos:
- Extraer servicios de un monolito a módulos/paquetes (sin cruzar límites de dominio).
- Separar código de IO (S3, colas, HTTP) de la lógica de negocio.
- Introducir adaptadores para hablar con servicios gestionados de AWS.
Aquí el agente ahorra tiempo en:
- mover archivos
- actualizar rutas de import
- generar clases/adaptadores repetitivos.
3. Generación de pruebas y harnesses
El agente puede ayudar a:
- escribir tests de unidad básicos para código legacy poco cubierto
- montar “test harnesses” que llamen a APIs y comparen salidas
- crear scripts de benchmark simples para comparar antes/después.
Ojo: los tests generados son un punto de partida. Alguien con contexto debe revisarlos para evitar tests que solo comprueban la implementación actual, sin validar la intención de negocio.
4. Traducción de código entre lenguajes/plataformas (solo mecánica)
Si migras de una plataforma a otra (por ejemplo, de un framework antiguo en Java a uno más moderno compatible con AWS), el agente puede:
- traducir patrones comunes
- sugerir wrappers equivalentes
- adaptar configuraciones.
Pero el diseño de la nueva arquitectura (bounded contexts, eventos, capas, etc.) debe ser humano.
Tareas que NO deberías delegar (o solo parcialmente)
Hay ámbitos donde la IA puede opinar, pero no decidir.
1. Decisiones de dominio y diseño de arquitectura
Ejemplos:
- Dónde cortar el monolito en servicios.
- Qué bounded contexts definir.
- Cómo versionar APIs públicas.
- Qué partes migrar primero, cuáles dejar en “modo isla”.
La IA no conoce tu negocio, tus SLAs ni tus políticas internas. Puede sugerir patrones genéricos (event‑driven, CQRS, etc.), pero la decisión es tuya.
2. Cambios en contratos públicos y esquemas de datos
No delegues totalmente en el agente:
- rediseñar APIs públicas
- modificar esquemas de bases de datos compartidas
- cambiar formatos de mensajes en colas/eventos
Puede ayudar a implementar una decisión ya tomada:
- generar migraciones SQL
- actualizar clientes
- añadir versionado a endpoints.
Pero la decisión de romper o no compatibilidad hacia atrás debe pasar por manos humanas.
3. Gestión de feature flags y planes de rollout
Migrar un sistema legado casi siempre requiere:
- feature flags
- rutas de canary
- despliegues blue/green
- mecanismos de rollback.
El agente puede generar código para toggles, pero el plan de rollout (qué activar, cuándo, para quién) es puramente humano.
4. Cambios sensibles de seguridad y cumplimiento
No dejes en manos de un agente:
- decisiones de cifrado de datos
- gestión de claves y secretos
- configuración de políticas de acceso.
Puede ayudarte a:
- identificar lugares inseguros
- proponer cifrado en tránsito/en reposo.
Pero la validación con tu equipo de seguridad y cumplimiento es obligatoria.
Ejemplo de flujo concreto con un agente de codificación
Imagina que quieres migrar una aplicación que usa un SDK antiguo de S3 y colas on‑prem a SQS.
Paso a paso:
Catalogar el alcance
- Pides al agente que detecte:
- todos los usos del SDK de S3 antiguo
- todas las integraciones con la cola on‑prem.
- Pides al agente que detecte:
Definir las tareas
- Tarea A: actualizar el SDK de S3 a la versión moderna compatible con AWS.
- Tarea B: introducir un adaptador para que la app pueda publicar/consumir mensajes tanto en la cola on‑prem como en SQS (modo híbrido).
Configurar el agente
- Alcance del agente:
- Solo directorios
infra/yadapters/. - Prohibido tocar
domain/yapi/.
- Solo directorios
- Alcance del agente:
Aplicar cambios y generar PRs
- El agente modifica el código:
- cambia imports y llamadas del SDK de S3
- crea clases
SqsQueueClientyOnPremQueueClient - introduce una interfaz común
QueueClient.
- Genera dos PRs:
- PR1: cambios de SDK S3 + tests de regresión básicos.
- PR2: nuevos adaptadores de cola + wiring en la configuración.
- El agente modifica el código:
Revisión y pruebas
- Dev humano revisa PRs, corrige detalles de estilo/diseño.
- Ejecuta pruebas diferenciales sobre operaciones de S3 y colas.
Rollout controlado
- Se despliega primero con tráfico bajo.
- Se monitoriza error rate y latencias.
- Se avanza al 100 % cuando métricas están estables.
El agente hizo el “pico y pala” del cambio, pero la estrategia, el orden y el despliegue fueron humanos.
Conclusión: trata al agente como a un dev más (con reglas claras)
Montar un “equipo mixto” humano‑IA para migrar aplicaciones legadas a AWS no va de usar IA para todo, sino de encajarla donde más retorno da:
- Que el agente haga el trabajo mecánico y repetitivo (actualizar SDKs, generar tests, mover código).
- Que las personas tomen las decisiones de diseño, negocio, seguridad y rollout.
- Que el flujo entero esté pensado para revisión asistida, pruebas diferenciales y permisos mínimos.
Si diseñas bien esta arquitectura de proyecto alrededor de herramientas como AWS Transform, dejas de elegir entre big bang arriesgado y refactor interminable, y empiezas a migrar legado de forma iterativa, medible y, sobre todo, sostenible.


