Saltar al contenido principal

Arquitectura del Sistema

Visión General​

Lean Collection System (LCS) es una aplicación web de gestión de cobranza desplegada en Azure Container Apps. Utiliza una arquitectura de microservicios ligera con dos contenedores principales (web + worker), una base de datos SQL Server, y almacenamiento de archivos en Azure Blob Storage.

Componentes de Infraestructura​

ComponenteServicio AzurePropósito
Web AppContainer AppsAplicación principal Next.js
WorkerContainer Apps (interno)Procesamiento en background
Base de DatosAzure SQL ServerAlmacenamiento de datos
ArchivosBlob StorageArchivos importados y exportados
RegistryContainer RegistryImágenes Docker
DocumentaciónStatic Web AppsSitio Docusaurus
DNSCustom domainsadmin.recuperacionintegral.com

Capas de la Aplicación​

1. Edge Runtime — Proxy (src/proxy.ts)​

El proxy es el primer punto de contacto para cada request. Se ejecuta en el Edge Runtime de Next.js para latencia mínima.

Responsabilidades:

  • Verificar que el usuario esté autenticado (JWT válido)
  • Evaluar permisos de acceso a la página desde el token JWT (sin consultas a DB)
  • Controlar timeout por inactividad (30 min default)
  • Forzar cambio de contraseña si está expirada (>60 días)
  • Redirigir a login si la sesión es inválida

:::info Performance Al evaluar permisos desde el JWT directamente, el proxy no necesita consultar la base de datos en cada request, logrando latencia menor a 5ms por evaluación. :::

2. Node Runtime — Server Components + API Routes​

Server Components:

  • Renderizado server-side de páginas del dashboard
  • Consultas a DB mediante Prisma para datos iniciales
  • Filtrado de sidebar según permisos del usuario

API Routes:

  • Lógica de negocio para CRUD operations
  • Validación de permisos con requirePermission()
  • Manejo de importaciones/exportaciones
  • Triggers al Worker via HTTP

3. Client Components — UI Interactiva​

  • React 19 con Server Components por defecto
  • shadcn/ui para componentes de interfaz (basado en Radix UI)
  • Tailwind CSS para estilos
  • Formularios, tablas interactivas, modales, progress bars

4. Worker Service — Background Processing​

Container independiente que procesa tareas asíncronas:

Características del Worker:

  • Escala a cero cuando no hay trabajo (ahorro de costos)
  • Se despierta vía HTTP trigger desde la Web App
  • Procesa jobs de forma inmediata (sin polling/delay)
  • Recovery automático de jobs interrumpidos al iniciar
  • Graceful shutdown en SIGTERM (persiste progreso)

Patrón de Comunicación Web ↔ Worker​

Escalamiento​

ContainerMin RéplicasMax RéplicasTrigger
Web App010HTTP traffic
Worker05HTTP concurrent requests

:::tip Scale-to-Zero Ambos containers escalan a cero en horarios de inactividad, minimizando costos. El Worker solo se activa cuando hay jobs pendientes. :::

Flujo de Datos Completo​

Tecnologías Clave​

CapaTecnologíaVersiónPropósito
FrontendNext.js15Framework React full-stack
UIshadcn/ui + Radix—Componentes accesibles
EstilosTailwind CSS4Utility-first CSS
ORMPrisma6Type-safe database access
AuthNextAuth.jsv5Autenticación JWT
DBSQL ServerAzure SQLBase de datos relacional
StorageAzure Blob—Archivos binarios
RuntimeNode.js20+Server runtime
ContainerDocker—Containerización
CI/CDPowerShell—Scripts de despliegue