Skip to Content
📚 Bienvenido a la documentación técnica de Rial AI 👋
☁️ Arquitectura Cloud

☁️ Arquitectura Cloud

Rial AI corre íntegramente en Google Cloud Platform (región southamerica-east1, Brasil), con Supabase como proveedor de base de datos y autenticación.

Diagrama general

Componentes

Cloud Run — Aplicaciones

ServicioImagen DockerRecursosDescripción
rial-frontendrial-frontend:latest en Artifact Registry1 CPU, 1 GB RAMNext.js SSR — interfaz del cliente y admin
rial-backendrial-backend:latest en Artifact Registry2 CPU, 4 GB RAMNestJS REST API — lógica de negocio

Ambos servicios están configurados con auto-scaling (mínimo 0 instancias en staging, mínimo 1 en producción).

Cloud Functions — Workers

WorkerQueueTimeoutDescripción
images-downloadimages-download9 minGenera signed URLs de GCS para descarga
admin-metricsadmin-metrics-fetcher9 minCalcula métricas y escribe en el caché del backend
faceswap-recognitionfaceswap-recognition9 minProcesa reconocimiento facial

Ver la página de Workers para detalle de cada función.

Cloud Tasks — Colas de mensajes

Cada worker tiene su propia cola independiente. El backend encola una tarea con el jobId y los parámetros en la cola correspondiente; Cloud Tasks dispara la Cloud Function destino.

ColaWorker destinoRate limit
images-downloadimages-download Cloud FunctionConfigurable
admin-metrics-fetcheradmin-metrics Cloud Function1 task/segundo
faceswap-recognitionfaceswap-recognition Cloud FunctionConfigurable

Cloud Scheduler — Trabajos programados

JobCronDestinoDescripción
admin-metrics-refresh0 6,18 * * * (aprox. 2x/día)Cola admin-metrics-fetcherDispara el worker de métricas admin

Cloud Storage — Almacenamiento de imágenes

BucketUso
rial_prodProducción — imágenes de prendas y resultados generados
rial_stagingStaging — entorno de prueba
rial_testTesting — tests de integración

Las imágenes nunca son públicas. El acceso se da siempre a través de signed URLs con expiración de 1 hora.

Artifact Registry — Docker Images

Almacena las imágenes Docker de rial-frontend, rial-backend y los workers. Cada merge a las ramas develop (staging) o production dispara un GitHub Action que construye y sube una nueva imagen.

Supabase

ComponenteUso
PostgreSQLBase de datos principal — todas las entidades del sistema
AuthGestión de usuarios, sesiones y tokens JWT

El backend usa DATABASE_URL (con pgBouncer para pooling) y DATABASE_URL_DIRECT (para migraciones Prisma sin pooling).

Cache

Caché de métricas admin con TTL. El worker admin-metrics escribe aquí; el API lee directamente. No es un servicio separado: corre in-process dentro de rial-backend usando @nestjs/cache-manager. Si REDIS_URL está configurada se conecta a esa URL; si no, usa memoria en proceso. No se usa para sesiones ni para nada crítico — si el caché falla, el API devuelve los datos como no disponibles y el worker recalcula en la próxima ejecución del scheduler.

New Relic

APM (Application Performance Monitoring) instalado en rial-backend. Captura:

  • Trazas de requests HTTP
  • Errores y excepciones
  • Métricas de performance (CPU, memoria, latencia)
  • Deployment tracking — cada deploy a producción registra un evento en New Relic

Ambientes

AmbienteFrontendBackend APIBase de datosBucket GCS
Producciónrial-ai.comapi.rial-ai.comSupabase prodrial_prod
Stagingstaging.rial-ai.comhttps://rial-backend-staging-304072319206.southamerica-east1.run.appSupabase stagingrial_staging

Secretos y variables de entorno

Todos los secretos se gestionan en secrets.rial-ai.com . En producción, se inyectan como variables de entorno en Cloud Run a través del paso de deploy de GitHub Actions. Las credenciales de GCS se montan como volume secret en Cloud Run (/secrets/gcs-sa-key).

Dominios

DNS gestionado con Cloud DNS. El dominio rial-ai.com está registrado en Squarespace y apunta a los Cloud Run services.

Last updated on