El problema
Una interfaz moderna no alcanza si cada acción termina exponiendo las formas del sistema legacy que hay detrás. En seguros bancarios, los contratos internos, formatos y códigos de error suelen responder a décadas de historia operativa.
El riesgo era que la UI heredara esas formas: pantallas difíciles de razonar, errores poco claros y cambios costosos cada vez que el core exigía una integración distinta.
La decisión
La solución fue construir una frontera explícita. El backend-for-frontend tradujo tareas de usuario a llamadas legacy, agregó respuestas y mantuvo los detalles de integración lejos de la experiencia.
Esa frontera funcionó como anti-corruption layer: la UI hablaba el lenguaje del producto, mientras el BFF absorbía formatos, sesiones y reglas del mundo bancario.
Trade-offs
Agregar una capa implica responsabilidad: contratos, monitoreo y ownership. Pero en este caso la alternativa era distribuir complejidad legacy por toda la aplicación.
Centralizar la traducción hizo más visible dónde estaban los riesgos y permitió evolucionar con menos fricción.
Resultado
El sistema pudo ofrecer una experiencia más clara sin negar la realidad del core existente. La arquitectura no eliminó el legacy; lo puso detrás de un límite controlado.
La lección fue que en integraciones bancarias la abstracción correcta no es decorativa: es lo que permite que el producto avance.