12 de marzo de 2024 · Refactorización

Refactorizar un sistema legacy en Python sin detener la operación

Cómo planificamos una refactorización por fases en un ERP interno que llevaba ocho años sin pruebas automatizadas.

Pantalla con código Python y terminal abierta durante una sesión de refactorización

Cuando un sistema legacy sostiene la operación diaria, reescribirlo de golpe no es una opción. En este caso partimos de un monolito en Python 2.7 con lógica de negocio mezclada en las vistas y sin cobertura de pruebas. La estrategia fue aislar primero los módulos de facturación y stock, escribir pruebas de caracterización sobre el comportamiento actual y recién entonces mover código hacia servicios separados.

Documentamos cada decisión en el repositorio para que el equipo interno pudiera seguir el hilo sin depender de nosotros. El resultado fue una migración por etapas que nunca detuvo la operación y dejó al equipo con la capacidad de continuar el trabajo por su cuenta.

Resumen del caso

Un caso real de refactorización progresiva: qué se cambió primero, qué se dejó intacto y cómo se midió el avance.

Autor del artículo

Refactorizar un sistema legacy en Python sin detener la operación

Llevo doce años entrando a codebases que nadie quiere abrir. Buena parte de ese tiempo lo pasé en fábricas y distribuidoras donde el ERP sostiene la facturación del día, así que aprendí a mover piezas sin apagar la máquina. Este artículo sobre la refactorización del ERP en Python 2.7 salió de un trabajo real: ocho años de parches, lógica de negocio dentro de las vistas y cero pruebas automatizadas.

Trabajo con Python, PostgreSQL y Docker, y con Node cuando la integración lo pide. Antes de tocar una línea escribo pruebas de caracterización para fijar el comportamiento actual, aunque sea feo. Es la única forma honesta de saber que no rompiste algo mientras limpias.

Especialidad

Refactorización de monolitos y sistemas legacy

Stack habitual

Python, PostgreSQL, Docker, Node

Contexto

Pymes con operación diaria que no puede parar

Configuracion de cookiesUsamos cookies para mantener el sitio estable, recordar opciones basicas y entender que paginas resultan utiles. Puedes aceptar, rechazar o revisar la configuracion antes de continuar.