Reingeniería SICOSS: El Motor de Nóminas
Migración masiva de un sistema PHP legacy a un backend especializado en Python. Una arquitectura de 47,500+ líneas de código diseñada para procesar liquidaciones de misión crítica con un rendimiento 20x superior.
Métricas de Ingeniería (Post-Auditoría)
0.5s vs 10s (Legacy)
66+ archivos Python
Suite de Tests Automática
Anatomía del Problema (Legacy)
La auditoría inicial reveló patrones de código que impedían el escalamiento del sistema original:
SQL Correlacionado
Subconsultas redundantes por cada fila procesada.
SELECT payroll.id,
(SELECT ARRAY(
SELECT DISTINCT group_id
FROM generic_groups_table
WHERE group_id IN (...)
)) AS category_groups
FROM payroll_registry;Problema N+1 en PHP
Consultas a base de datos dentro de ciclos masivos.
foreach ($employees as $emp) {
// Alarma técnica: I/O en bucle
$details = $db->query(
"SELECT * FROM details..."
);
$this->process($details);
}Arquitectura del Sistema
El sistema no es solo un script; es una plataforma modular basada en Capas (Layered Architecture) y orquestada por componentes especializados:
FastAPI Gateway
Capa de comunicación REST. Manejo de autenticación, validación de schemas con Pydantic y Swagger UI.
SICOSS Backend Core
Pipeline de procesamiento vectorial con Pandas. Orquestación de lógicas fiscales y aplicación de topes complejos.
Extraction Layer
Batch queries optimizadas que eliminan el problema N+1.
Persistence Layer
Inserción masiva ACID en esquema segregado.
Desafíos Técnicos Superados
1. Reemplazo del Bucle N+1
El sistema PHP legacy consultaba la base de datos por cada legajo. Migré esto a un Extractor Manager que utiliza Common Table Expressions (CTEs) para traer un set de datos enriquecido en una sola pasada de memoria.
2. Validaciones de Dominio Complejas
Implementé Value Objects como PeriodoFiscal para encapsular la lógica de validación inmutable, asegurando que ninguna fecha o periodo inválido entre al pipeline de cálculo.
3. Verificador vs Legacy
Para garantizar la seguridad del despliegue, desarrollé un SicossVerifier. Un componente que corre en paralelo el sistema viejo y el nuevo sobre 1.2M de registros para certificar discrepancia cero antes del pase a producción.