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 + RadixComponentes accesibles
EstilosTailwind CSS4Utility-first CSS
ORMPrisma6Type-safe database access
AuthNextAuth.jsv5Autenticación JWT
DBSQL ServerAzure SQLBase de datos relacional
StorageAzure BlobArchivos binarios
RuntimeNode.js20+Server runtime
ContainerDockerContainerización
CI/CDPowerShellScripts de despliegue