Infraestructura Híbrida y Red
La infraestructura de Yuruary está diseñada para maximizar la resiliencia. El sistema opera en dos "Zonas de Disponibilidad" complementarias: una Local que garantiza la autonomía administrativa y una en la Nube que asegura el acceso global.
Diagrama de Infraestructura
El siguiente gráfico detalla los nodos físicos y lógicos, desde los contenedores Docker en la oficina hasta los servicios gestionados en AWS.
Zona 1: Servidor Local (On-Premise Master)
Es el corazón operativo de la administración. Se despliega en un servidor físico ubicado en las oficinas del condominio.
- Hardware Mínimo:
- Servidor tipo Dell PowerEdge o similar.
- 32GB de Memoria RAM (para soportar postgres y nodejs en memoria).
- Almacenamiento SSD NVMe (crítico para la base de datos).
Container Stack (Docker Compose)
Utilizamos Docker Compose para orquestar los servicios como una unidad cohesiva:
- app-core (
yuruary-backend-core): La instancia Master de NestJS. Procesa toda la lógica de negocio y tiene autoridad de escritura. - db-primary (PostgreSQL 16): Base de datos Master. Aquí reside la "verdad" de los datos financieros y legales.
- redis-local: Gestiona las colas de trabajos en segundo plano (emails, notificaciones) y caché de consultas pesadas.
- cloudflared: Un contenedor "Sidecar" ultraligero que mantiene el túnel con la nube.
Zona 2: Nube (AWS - Read Replica)
Infraestructura gestionada para alta disponibilidad, utilizada exclusivamente por el Portal de Residentes.
- RDS (PostgreSQL): Réplica de solo lectura. Se mantiene sincronizada con la base de datos local mediante el
SyncEnginedel backend. Permite a los residentes ver su saldo aunque la oficina no tenga luz. - S3 (Simple Storage Service): Almacén de objetos duradero para:
- Comprobantes de pago (imágenes).
- Backups de la base de datos (snapshots diarios cifrados).
- SQS (Simple Queue Service) / Elasticache: Actúa como buzón de entrada. Cuando un residente reporta un pago, se guarda aquí hasta que el servidor local pueda procesarlo.
Zona 3: Conectividad (Cloudflare Tunnel)
Para conectar el mundo On-Premise con la Nube de forma segura, descartamos las VPN tradicionales y el Port Forwarding en favor de una arquitectura Zero Trust.
¿Por qué Cloudflare Tunnel?
- Sin Puertos Abiertos: No requerimos abrir el puerto 80/443 ni configurar NAT en el router del condominio. Esto elimina vectores de ataque directos (DDoS, Scanners).
- Salida Persistente: El contenedor
cloudflaredinicia una conexión saliente (Outbound) hacia la red Edge de Cloudflare. Todo el tráfico "entrante" viaja encapsulado sobre esta conexión establecida. - Identidad: Podemos aplicar políticas de acceso (Cloudflare Access) antes de que la petición toque nuestro servidor NestJS.