Saltar al contenido

La capa web en Vercel

Ejecuta la capa web de Quire en Vercel con un worker complementario.

Ver como Markdown

El diseño se describe en la sección 5 de docs/architecture/23-ops.md. Vercel solo ejecuta la capa web. Todo lo demás se ejecuta en un host complementario que operas tú, y es obligatorio.

Estado de esta versión

La configuración está lista (apps/web/vercel.json, el preajuste Nitro vercel y las comprobaciones de inicio). Vercel requiere almacenamiento de archivos compartido (QUIRE_STORAGE_DRIVER=s3 o azure), un controlador de tiempo real compatible con varias instancias de funciones (QUIRE_REALTIME_DRIVER=sse o centrifugo) y un proveedor de correo HTTP. Sin estos, la capa web se niega a iniciar y sus registros indican cada configuración faltante.

Componentes

Componente Dónde se ejecuta
web Vercel Functions, entorno Node: páginas, REST, MCP, LTI y recepción de webhooks
worker, scheduler, collab, content Un host complementario: Fly, Railway, ECS o tu propio host Docker con docker/compose.yaml
Postgres Externa, detrás de un pool de transacciones: Neon, Supabase o RDS con PgBouncer
Archivos S3 o R2. No hay disco persistente
Tareas en segundo plano Se agregan a pg-boss dentro de la transacción de la solicitud y las ejecuta el worker complementario. Con QUIRE_QUEUE_DRIVER=vercel en ese worker, las tareas ligeras (entregas de notificaciones y webhooks sin orden definido) pasan por Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN), así no se consulta Postgres mediante el pool para esas tareas
Tareas periódicas El scheduler complementario. No hay una ruta de Vercel Cron porque una tarea que se ejecuta dentro de una función agota su tiempo de espera
Trazas OpenTelemetry a tu colector, OTEL_EXPORTER_OTLP_ENDPOINT

Limitaciones de este destino

La capa web revisa lo siguiente al iniciar y se niega a hacerlo si hay problemas; los enumera en vez de fallar más adelante cuando no se envíe el primer correo:

  • No admite SMTP. Vercel bloquea SMTP saliente. Configura QUIRE_EMAIL_PROVIDER_CONFIG con un proveedor HTTP (Postmark, SES, Mailgun, SendGrid o Resend). Se rechaza QUIRE_SMTP_URL.
  • No hay disco local. Se rechaza QUIRE_STORAGE_DRIVER=local.
  • Las invocaciones no comparten memoria. Se rechaza QUIRE_REALTIME_DRIVER=inprocess. Los eventos enviados por el servidor se limitan al tiempo de la función; el cliente vuelve a conectarse con un cursor, así que no se pierde ningún evento, pero la información de presencia no está disponible.
  • Las bases de datos de tenants fijadas tienen un límite de aproximadamente ocho, porque cada una agrega otro pool de conexiones en un entorno donde no se pueden compartir los pools.

Desplegar

  1. Crea un proyecto de Vercel desde el repositorio con Root Directory en apps/web. apps/web/vercel.json configura los comandos de instalación y compilación (NITRO_PRESET=vercel) y sirve /sw.js sin caché.
  2. Configura las variables de entorno. Como mínimo, toma de docker/.env.example: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (la dirección del pool), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, la configuración de almacenamiento, y QUIRE_COLLAB_URL y QUIRE_COLLAB_SIGNING_KEY con los datos del servicio collab complementario. QUIRE_REPORT_DATABASE_URL corresponde a la base física indicada por DATABASE_URL. Para cada base registrada adicional, agrega su propia URL de conexión quire_report a los entornos web y del worker; luego registra su nombre de variable como env:NAME en la consola de la plataforma. Las analíticas fallan de forma segura si falta la URL de informes de esa base.
  3. En el host complementario, ejecuta docker/compose.yaml sin el servicio web y con el mismo docker/.env:
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    Las migraciones se ejecutan en ese host antes de promover cada despliegue de Vercel.
  4. Despliega. Si se rechaza la configuración, los registros de la función empiezan con «The web tier did not start on vercel» y enumeran cada ajuste que debes cambiar.

Actualizar

Primero ejecuta las migraciones desde el host complementario, luego promueve el nuevo despliegue de Vercel y por último actualiza los workers complementarios, en el orden descrito en upgrade.md. Revertir al instante un despliegue de Vercel revierte el código y siempre es seguro dentro de una misma versión.

Navegación

Escribe para buscar…

↑↓ navegar↵ seleccionarEsc cerrar