Autor: Iker Acevedo¶
Fecha creacion: 2026-10-09
Estado: aceptada
ADR-INV-006 — Un proyecto, varias funciones Lambda y migración Strangler Fig¶
Autor: Iker Acevedo
Fecha: 2026-10-09 (INV-021, INV-022)
Estado: Aceptada
Contexto¶
Dos lambdas gemelas con la misma lógica copiada: cada arreglo se hacía dos veces y ya habían divergido. Había que reemplazarlas sin romper a los llamadores en producción.
Opciones consideradas¶
Opción A — Un proyecto, N funciones¶
Pros: cero duplicación; memoria, timeout, permisos y alarmas por función; una suite de pruebas; patrón ya usado en ApiLambdaDevolucionesMasivo.
Contras: un cambio en el Dominio redespliega todas.
Opción B — Una sola función con router interno¶
Pros: lo más simple.
Contras: la trazabilidad (rápida, poca memoria) compartiría configuración con el proceso por carga (2 GB/15 min).
Opción C — Núcleo compartido + lambdas separadas¶
Pros: útil si son canales distintos.
Contras: aquí comparten casi todo; sería sobrearquitectura.
Decisión¶
Se eligió: Opción A, migrando con Strangler Fig.
Razón: el sistema nuevo crece alrededor del viejo y se repuntan las mismas rutas el día del go-live (reversible en segundos). Primero lo que no reemplaza nada (trazabilidad, recalcular), luego el barrido en simulación, al final las rutas de escritura.
Consecuencias¶
Positivas: los llamadores no cambian; rollback = repuntar la ruta a la gemela.
Negativas: durante la semana de observación conviven ambos sistemas (las gemelas quedan con concurrencia 0 y sin ruta). Ocho funciones por mantener (Arquitectura).
Impacto en el código¶
| Módulo / Repo | Cambio |
|---|---|
LambdasLogiGho.Aplicacion/Logigho/Inventario/ApiLambdaInventario |
Proyecto nuevo (.NET 10, ReadyToRun) |
Terraform_Infraestructura_Logigho |
modules/inventario, modules/inventario-rutas, environments/*/inventario |
pipelines/inventario |
CI y CD de PreProd y producción |
Historial de cambios¶
| Fecha | Autor | Cambio |
|---|---|---|
| 2026-10-21 | Iker Acevedo | Documentado en MkDocs |