Referencia
Has heredado un sistema sin documentación: por dónde empezar
Alguien se fue, o cambió el proveedor, y ahora respondes tú de algo que no escribiste y que no puede pararse. La reacción normal es abrir el código. No empieces por ahí: empieza por saber qué te puede tumbar esta semana.
El inventario del primer día
Nada de esto exige entender el sistema. Son preguntas que se responden mirando, y hasta que no estén respondidas cualquier decisión técnica es una apuesta.
- Quién puede entrar a producción
- La lista de personas con acceso al servidor, a la base de datos y al panel de la nube. Suele incluir a alguien que ya no está, y esa es la primera cosa que se arregla.
- Cómo se despliega
- Qué comando, desde dónde y quién lo ha ejecutado por última vez. Si la respuesta es «se sube por FTP desde el portátil de alguien», eso no es una crítica: es el dato que ordena todo lo demás.
- Las copias de seguridad, y la última restauración
- Que existan copias no es la pregunta. La pregunta es cuándo fue la última vez que alguien restauró una y comprobó que el sistema arrancaba con ella. Si nadie lo ha hecho nunca, no sabes si tienes copias.
- Los procesos programados
- Los
cron, las colas y las tareas que solo corren a fin de mes. Son lo que más sorprende, porque no aparecen mientras miras el código y sí aparecen el día 1 a las tres de la mañana. - Dónde están los secretos
- Claves de API, credenciales, certificados. Si están dentro del repositorio, ya lo sabes: hay que rotarlas, y eso pasa a ser urgente y no importante-algún-día.
- Las integraciones con terceros
- Con qué habla el sistema y con qué credenciales: pasarela de pago, correo, mensajería, el ERP. Cada una es una cuenta que alguien paga y que puede caducar sin avisar.
- El tamaño real de los datos
- Cuánto pesa la base de datos y cuánto crece al mes. Determina si una migración se hace en una ventana de mantenimiento o hay que planificarla de otra manera.
- Las versiones de todo
- Del lenguaje, del framework, del sistema operativo y del motor de base de datos. Es el apartado siguiente y es el que suele traer la primera fecha límite.
Qué está a punto de caducar
Un sistema heredado no suele fallar por su código: falla porque algo debajo dejó de recibir parches y nadie lo estaba mirando. Esa es la parte con fecha, y la fecha la pone otro.
- La versión del lenguaje. Si es PHP, la fecha está publicada: el calendario de soporte de PHP y Symfony dice hasta cuándo recibe parches cada rama, y cuál exige cuál.
- El sistema operativo del servidor. Una distribución fuera de soporte deja de recibir parches de seguridad aunque tu aplicación siga intacta.
- El motor de base de datos, que suele ir un par de versiones por detrás de todo lo demás.
- Las dependencias abandonadas: las que no han tenido una versión nueva en años. No caducan en una fecha, caducan el día que aparece un fallo y no hay quien lo arregle.
Mantener, envolver o sustituir
Con el inventario delante, cada parte del sistema cae en uno de tres sitios. La decisión no se toma por lo antiguo que sea el código, sino por lo que cuesta cada cambio y por lo que pasa si se cae.
Mantener
Funciona, cambia poco y su tecnología sigue con soporte. No se toca. La tentación de reescribir esto es la que se lleva los presupuestos.
Envolver
Funciona pero nadie quiere entrar. Se le pone una interfaz por delante y lo nuevo se construye contra ella, mientras lo de dentro se sustituye por partes. El sistema no para en ningún momento.
Sustituir
Cada cambio cuesta desproporcionadamente, o la tecnología ya no recibe parches. Se sustituye por trozos y cada trozo entra en producción cuando está: nunca hay una versión paralela esperando a integrarse al final, que es donde estos proyectos se atascan.
Lo que no aparece en esta lista es reescribirlo entero de una vez. Con un sistema en producción que no puede pararse, esa opción no compite: el negocio sigue cambiando mientras dura la reescritura, y la versión nueva persigue a un objetivo que se mueve.
Preguntas frecuentes
- El sistema no tiene tests. ¿Se puede tocar?
- Sí, pero no se empieza tocando. Se escriben primero los tests de lo que se va a mover, aunque el resto siga sin tenerlos: sirven de red para ese cambio concreto. Migrar sin red es lo que convierte una migración en una crisis.
- ¿Cuánto tarda entender un sistema heredado?
- El inventario de arriba se responde en días, no en semanas, y con él ya se puede decidir. Entenderlo entero tarda tanto como haga falta y casi nunca es necesario: se entiende la parte que se va a tocar, y el resto se documenta según se llega a él.
- No hay nadie que lo conociera. ¿Cambia algo?
- Cambia el orden. Sin nadie a quien preguntar, el sistema en marcha es la única fuente fiable: los registros, la base de datos y el comportamiento en producción dicen la verdad, y cualquier documento que aparezca hay que contrastarlo contra ellos antes de creerlo.
- ¿Merece la pena arreglarlo o es mejor empezar de cero?
- Empezar de cero es la respuesta correcta con menos frecuencia de lo que parece. Un sistema que lleva años en producción contiene decisiones de negocio que nadie recuerda haber tomado y que nadie ha escrito: reescribirlo desde una especificación las pierde todas, y aparecen de una en una, como incidencias.
¿Por dónde empezamos?
Dos formas de arrancar, según lo que tengas hoy delante. Respuesta en un día laborable.