ADR-035: Inmovilización de versiones de software¶
Estado: aceptado
Contexto¶
Hasta mayo de 2026, los servicios de SmallCountry se actualizaban sin un proceso formal. Cada administrador actualizaba según criterio propio, con riesgos de roturas por cambios en APIs, dependencias y formatos de datos.
El 11 de mayo de 2026 se tomó la decisión de congelar todas las versiones de software a las versiones estables disponibles en esa fecha.
Decisión¶
- Base inmutable: todo el desarrollo se construye sobre versiones conocidas y verificadas
- Actualizaciones controladas: ningún servicio se actualiza automáticamente. No se usa
:latesten imágenes Docker - Proceso explícito: cada cambio de versión requiere commit en Forgejo, revisión, prueba en staging y aprobación
- Trazabilidad: el historial de versiones se documenta en
operaciones/versiones.mdy en cada ficha individual
Cada ficha de servicio muestra la versión bloqueada con un badge 📌 vX.Y · YYYY-MM-DD debajo del badge de estado.
Alternativas consideradas¶
A. Actualización continua (rolling release)¶
Usar :latest en todas las imágenes Docker y actualizar semanalmente.
Descartada por riesgo de roturas imprevistas y falta de tiempo para verificar cada actualización.
B. Actualización por necesidad¶
Actualizar solo cuando un servicio requiera una función nueva o un parche de seguridad.
Descartada porque sin un registro de versiones es imposible saber qué versión corre en cada servicio, y los parches de seguridad críticos pueden pasar desapercibidos.
Consecuencias¶
Positivas¶
- Entorno predecible: las versiones no cambian sin decisión explícita
- Reproducibilidad: un backup puede restaurarse en una máquina con las mismas versiones
- Seguridad controlada: las actualizaciones de seguridad se evalúan caso por caso
Negativas¶
- Deuda técnica: las versiones se quedan obsoletas si no se actualizan periódicamente
- Proceso adicional: cada actualización requiere tiempo de planificación y verificación
- CVEs no parcheados: entre el descubrimiento de una vulnerabilidad y su actualización planificada puede pasar tiempo
Neutrales¶
- El estado congelado es reversible: cualquier servicio puede actualizarse cuando se decida
- La lista de versiones en
operaciones/versiones.mdpermite auditorías rápidas