Refactorización de un dominio core y gobernanza de arquitectura en SaaS
Buk, 2025 — De un componente transversal acoplado a supuestos implícitos a soporte nativo de ex-colaboradores, sin afectar a los módulos dependientes
Situación
En la plataforma SaaS de gestión de RR. HH. de Buk, el componente y el modelo de datos de Colaborador eran un bloque transversal reutilizado por la gran mayoría de los módulos (nómina, asistencia, beneficios, clima laboral). Sin embargo, la arquitectura del componente asumía implícitamente que todo usuario registrado era un colaborador activo.
Al requerir el lanzamiento de encuestas para ex-colaboradores (procesos de offboarding y encuestas de salida), el sistema no permitía cargar ni consultar usuarios desvinculados sin alterar el comportamiento global de la plataforma.
Tarea
Como champion/líder de la misión, debía rediseñar y refactorizar el componente de colaboradores en backend y frontend para soportar la entidad de ex-colaboradores desvinculados, garantizando cero tiempo de inactividad, retrocompatibilidad con todos los módulos dependientes y la aprobación técnica del equipo central de Plataforma.
Acción
- Análisis de impacto y mapeo de dependencias: audité el código para identificar todos los acoplamientos y las consultas directas a la entidad Colaborador a lo largo de los distintos submódulos, antes de tocar una sola línea de la interfaz compartida.
- Refactorización defensiva y retrocompatibilidad: rediseñé la interfaz del componente en backend (API REST) y frontend (Vue.js), abstrayendo la consulta del estado (activo/desvinculado) mediante scopes y filtros configurables, de modo que las llamadas existentes conservaran su comportamiento previo sin cambios.
- Gobernanza y estrategia de pull requests: fragmenté la refactorización en cambios atómicos y revisables, coordinando las revisiones de arquitectura con el equipo de Plataforma para cumplir los estándares de rendimiento y seguridad de la base de código principal.
- Plan de pruebas y QA exhaustivo: diseñé junto con QA una matriz de pruebas de regresión y automaticé pruebas unitarias y de integración para certificar que el cálculo de nóminas y los permisos de usuarios activos no sufrieran alteración alguna.
Compromisos de ingeniería (trade-offs)
- Refactorización incremental vs. reescritura del componente desde cero: mantener la estructura base de la entidad Colaborador y extenderla mediante filtros y scopes, en lugar de crear una tabla o un servicio separado para ex-colaboradores, asumió una carga de pruebas de retrocompatibilidad mucho mayor, a cambio de preservar la integridad referencial histórica y evitar la duplicación de los datos de usuario.
- QA exhaustivo vs. velocidad de despliegue: invertir en revisión atómica de pull requests con el equipo de Plataforma y en pruebas de regresión cruzadas extendió el time-to-market de la funcionalidad, a cambio de reducir al mínimo el riesgo de caídas o inconsistencias en el cálculo de nómina de los usuarios activos.
Resultado
| Métrica | Estado inicial | Tras la refactorización |
|---|---|---|
| Soporte de entidades | Exclusivo para colaboradores activos | Soporte nativo para ex-colaboradores en encuestas de salida |
| Incidencias en producción | Riesgo alto por impacto transversal | Sin incidencias reportadas en nómina ni asistencia tras el despliegue |
| Gobernanza técnica | Código acoplado a supuestos implícitos | Cambios revisados y aprobados por el equipo de Plataforma |
Se habilitó el módulo de encuestas a ex-colaboradores (offboarding), abriendo una nueva línea de métricas de retención de talento para las empresas clientes.