Saltar al contenido principal

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:

  1. app-core (yuruary-backend-core): La instancia Master de NestJS. Procesa toda la lógica de negocio y tiene autoridad de escritura.
  2. db-primary (PostgreSQL 16): Base de datos Master. Aquí reside la "verdad" de los datos financieros y legales.
  3. redis-local: Gestiona las colas de trabajos en segundo plano (emails, notificaciones) y caché de consultas pesadas.
  4. 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 SyncEngine del 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?

  1. 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).
  2. Salida Persistente: El contenedor cloudflared inicia una conexión saliente (Outbound) hacia la red Edge de Cloudflare. Todo el tráfico "entrante" viaja encapsulado sobre esta conexión establecida.
  3. Identidad: Podemos aplicar políticas de acceso (Cloudflare Access) antes de que la petición toque nuestro servidor NestJS.