La plataforma llevaba años creciendo sobre el mismo servidor. Tenía varias interfaces web, procesos en segundo plano y datos persistentes, y algunas dependencias solo funcionaban en esa máquina. El código, la configuración y los datos estaban mezclados, y nadie podía garantizar que una instalación nueva fuera igual que producción.
Cada actualización dependía de alguien que conociera bien cómo estaba montado ese servidor. Reescribir el producto desde cero llevaba demasiado tiempo y dinero, y además era arriesgado, porque buena parte de lo que hacía seguía siendo útil. Había que cambiar la forma de operarlo sin parar el negocio ni perder funciones.
Empezamos estudiando cómo se comportaba la plataforma en producción y de qué dependía cada parte. Con eso decidimos qué se podía separar, qué tenía que seguir funcionando junto y qué datos debían quedarse fuera de las imágenes de la aplicación.
Después montamos un entorno reproducible con contenedores y Kubernetes. Cada versión se construye y se guarda de forma automática, y la infraestructura se gestiona desde Git, así que cada cambio queda revisado y ligado al código que lo generó. Cuando se aprueba un cambio, la plataforma de despliegue actualiza los servicios sola. Los procesos que más recursos consumen los separamos para que solo arranquen cuando hay trabajo pendiente.
Lo hicimos por fases, manteniendo la compatibilidad con el producto y trabajando junto a su equipo de desarrollo.
La plataforma ya no depende de lo que alguien recuerde sobre un servidor concreto. Cada versión se construye, se valida y se despliega siempre igual, los cambios quedan registrados y la configuración sensible está separada del código.
El equipo publica versiones nuevas sin pasos manuales y, si algo falla, vuelve a la anterior. Los recursos se ajustan a la actividad real, y la empresa conserva el producto en el que ya había invertido, ahora sobre una base que puede seguir evolucionando.