Explica cómo reconocer, medir y priorizar deuda arquitectónica según impacto sobre cambios, fallos, operación y opciones futuras, y cómo reducirla incrementalmente.
Última actualización
Actualizada
Nivel
Aplicación
La deuda arquitectónica no es simplemente código feo. Es una decisión estructural que aumenta el costo, el riesgo o la lentitud de cambios futuros. Puede aceptarse conscientemente, pero necesita alcance, interés observable y una condición de revisión.
La metáfora de deuda resulta útil cuando distingue:
Principal: trabajo necesario para cambiar la estructura.
Interés: costo adicional que se paga mientras la deuda permanece.
Beneficio inicial: tiempo, simplicidad o aprendizaje obtenido al asumirla.
Riesgo: posibilidad de que el costo futuro sea mayor de lo esperado.
Texto
decisión temporal
→ entrega o aprendizaje más rápido
→ costo recurrente durante cambios y operación
→ pago, refinanciación o aceptación
No toda imperfección es deuda. Una solución sencilla que cumple drivers y no bloquea evolución puede ser adecuada. Llamarla deuda solo porque no utiliza el patrón preferido confunde calidad con gusto personal.
Usaremos una base compartida durante validación.
El ownership se mantendrá por módulos.
Revisaremos al superar 500 tenants o requerir restore individual.
Título: Payments SDK filtrado en dominio
Contexto: integración inicial rápida
Decisión actual: tipos del proveedor usados en casos de uso
Interés: cada cambio de proveedor toca 14 módulos
Riesgo: bloqueo comercial y errores de migración
Trigger: segundo proveedor o aumento de tarifas > 20 %
Estrategia: introducir PaymentPort y adapter
Evidencia: mapa de imports y cambios recientes
Owner: Payments
Evita tickets como “mejorar arquitectura” o “refactor general”. No permiten estimar valor ni comprobar cierre.
alto interés + alto riesgo
→ prioridad alta
alto interés + bajo riesgo
→ mejorar junto con cambios frecuentes
bajo interés + alto riesgo
→ mitigación, observabilidad y plan
bajo interés + bajo riesgo
→ aceptar y revisar después
Pagar deuda por “pureza” puede consumir recursos sin mejorar el producto.
Un refactor conserva el comportamiento externo relevante mientras cambia estructura. A escala arquitectónica puede requerir periodos donde existen dos caminos.
Una reescritura puede parecer más limpia porque evita restricciones del sistema existente. Sus riesgos:
Reaprender comportamiento no documentado.
Mantener dos productos durante meses.
Retrasar valor hasta el final.
Repetir decisiones incorrectas.
Migrar datos y usuarios en un big bang.
Perder feedback operacional.
Puede justificarse si la plataforma actual impide cualquier evolución, el alcance está bien delimitado y existe estrategia de transición. Aun así, la migración de usuarios, datos e integraciones sigue siendo el problema principal.