Nasa seksiyon 5 ng docs/architecture/23-ops.md ang disenyo. Web tier lang
ang pinapatakbo ng Vercel. Tumatakbo sa kasamang host na pinangangasiwaan mo ang
lahat ng iba pa; kailangan ito.
Katayuan sa release na ito
Nakahanda na ang configuration (apps/web/vercel.json, ang vercel Nitro
preset, at mga startup check). Kailangan ng Vercel ang shared file storage
(QUIRE_STORAGE_DRIVER=s3 o azure), realtime driver na gumagana sa iba’t ibang
function instance (QUIRE_REALTIME_DRIVER=sse o centrifugo), at HTTP email
provider. Kapag wala ang mga ito, tatanggi ang web tier na magsimula at ililista
ng log ang bawat nawawalang setting.
Mga bahagi
Bahagi
Saan tumatakbo
web
Vercel Functions, Bun runtime: mga pahina, REST, MCP, LTI, natanggap na webhook
worker, scheduler, collab, content
Kasamang host: Fly, Railway, ECS, o sarili mong Docker host na may docker/compose.yaml
Postgres
External, nasa likod ng transaction pooler: Neon, Supabase, o RDS na may PgBouncer
Files
S3 o R2. Walang persistent disk
Mga background job
Ipinipila sa loob ng transaction ng request gamit ang pg-boss at pinapatakbo ng kasamang worker. Kapag QUIRE_QUEUE_DRIVER=vercel sa companion worker, ipinadaraan sa Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) ang magaang trabaho (walang pagkakasunod na notification at webhook delivery) upang hindi ito i-poll sa pooled Postgres
Mga paulit-ulit na trabaho
Ang scheduler ng kasamang host. Walang Vercel Cron route dahil nagti-time out ang cron na gumagawa ng trabaho sa function
Tracing
OpenTelemetry papunta sa collector mo, OTEL_EXPORTER_OTLP_ENDPOINT
Hindi kayang gawin ng target na ito
Sinusuri ito ng web tier sa pagsisimula at tumatanggi, inililista ang lahat ng
problema, sa halip na pumalya sa unang email na hindi naipadala:
Walang SMTP. Hinaharang ng Vercel ang palabas na SMTP. Itakda ang
QUIRE_EMAIL_PROVIDER_CONFIG sa HTTP provider (Postmark, SES, Mailgun,
SendGrid, o Resend). Tinatanggihan ang QUIRE_SMTP_URL.
Walang lokal na disk. Tinatanggihan ang QUIRE_STORAGE_DRIVER=local.
Walang shared memory sa pagitan ng invocation. Tinatanggihan ang
QUIRE_REALTIME_DRIVER=inprocess. Nililimitahan ng timeout ng function ang
server-sent event; muling kumokonekta ang client gamit ang cursor kaya walang
nawawalang event, ngunit hindi available ang presence.
Mga walong pinned tenant database lang dahil nagdaragdag ang bawat isa ng
connection pool sa environment na hindi nakapaghahati ng pool.
Pag-deploy
Gumawa ng Vercel project mula sa repository at itakda ang Root Directory
sa apps/web. Itinatakda ng apps/web/vercel.json ang install at build command
(NITRO_PRESET=vercel) at sine-serve ang /sw.js nang walang cache.
Itakda ang mga environment variable. Mula sa docker/.env.example, kailangan
man lang ang: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN,
QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY,
QUIRE_MASTER_KEY, DATABASE_URL (address ng pooler),
QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID,
QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, mga setting ng storage, at
QUIRE_COLLAB_URL at QUIRE_COLLAB_SIGNING_KEY na nakaturo sa collab service
ng kasamang host.
Nakatali ang QUIRE_REPORT_DATABASE_URL sa pisikal na database na pinangalanan
ng DATABASE_URL. Para sa bawat dagdag na rehistradong database,
idagdag ang sarili nitong quire_report connection URL sa environment ng web at
worker, saka irehistro sa platform console ang pangalan nito bilang env:NAME.
Hihinto nang ligtas ang analytics kapag nawawala ang report URL ng database.
Sa kasamang host, patakbuhin ang docker/compose.yaml nang walang web
service at gamit ang parehong docker/.env:
Tumatakbo roon ang migration bago i-promote ang bawat Vercel deployment.
Mag-deploy. Kapag tinanggihan ang configuration, magsisimula ang function log
sa “The web tier did not start on vercel” at ililista ang mga setting na dapat baguhin.
Pag-upgrade
Mag-migrate muna mula sa kasamang host, saka i-promote ang bagong Vercel deployment
at i-roll ang mga worker ng kasama; nasa upgrade.md ang pagkakasunod.
Ligtas sa loob ng isang release ang agarang rollback sa Vercel dahil code lang ito.