Saltar al contenido principal

Arquitectura de Microfrontends

Adoptamos una arquitectura de Microfrontends basada en Module Federation para permitir el desarrollo y despliegue independiente de diferentes módulos funcionales.


1. Conceptos Fundamentales

Module Federation (Vite)

Permite que aplicaciones JavaScript carguen código de otras aplicaciones en tiempo de ejecución de forma eficiente, compartiendo dependencias comunes para evitar duplicación.

Componentes de la Arquitectura

  1. Host (Shell): La aplicación principal que orquesta la navegación, autenticación y carga los remotos.
  2. Remotes (Microfrontends): Aplicaciones independientes que exponen componentes o páginas específicas (ej. Módulo de Catálogos, Módulo de Inventario).
  3. Shared Dependencies: Librerías comunes (React, MUI, Axios) que se cargan una sola vez.

2. Estructura del Sistema

graph TD
Shell[Shell Application] --> Auth[Auth & Permissions]
Shell --> Nav[Unified Navigation]
Shell -.-> MF1[Microfrontend A]
Shell -.-> MF2[Microfrontend B]
MF1 --> API1[Backend API A]
MF2 --> API2[Backend API B]

3. Comunicación entre Microfrontends

Evitamos el acoplamiento directo entre remotos. La comunicación ocurre a través del Shell:

Window Object / Context Global

El Shell expone un contexto global en window para datos compartidos (ej. token de autenticación, ubicación seleccionada).

Eventos Personalizados (CustomEvents)

Utilizamos el bus de eventos del navegador para comunicación asíncrona:

  • El Shell dispara un evento location-changed.
  • Los Microfrontends escuchan y actualizan su estado local.

4. Ventajas de este Enfoque

  • Despliegue Independiente: Podemos actualizar un módulo sin tocar el Shell.
  • Tecnologías Flexibles: Diferentes equipos pueden usar versiones distintas de librerías si es necesario (aunque se desaconseja).
  • Escalabilidad del Equipo: Los equipos trabajan en repositorios separados, reduciendo conflictos de código.

Temas Relacionados