Gihulagway ang disenyo sa seksiyon 6 sa docs/architecture/23-ops.md. Pinamubong web tier ang gipadagan sa Workers. Dili sakop sa tumong ang pagkaparehas sa tanang feature sa Workers (PRD seksiyon 12): kon dili mahimo niining target, isalikway kini sa pagsugod ug nganlan.
Kahimtang niining release
Andam na ang configuration (apps/web/wrangler.jsonc, ang Nitro preset nga cloudflare-module, ang Hyperdrive bridge ug ang mga pagsusi sa pagsugod). Nagkinahanglan ang Worker og S3-compatible storage para sa R2 (QUIRE_STORAGE_DRIVER=s3), realtime driver nga moandar sa daghang request (QUIRE_REALTIME_DRIVER=durable_objects o centrifugo), gipaambitang cache (QUIRE_CACHE_DRIVER=postgres o valkey) ug HTTP email provider. Kon wala kini, dili mosugod ang Worker ug ilista sa log ang matag setting. Kliyente sa realtime Worker sa apps/realtime-worker ang Durable Objects driver (usa ka Durable Object kada channel para sa fan-out, presence ug history, ug usa kada tawo para sa mga disconnect); i-deploy kini tupad sa web tier sumala sa ubos, o gamita ang Centrifugo.
Mga bahin
Bahin
Sa Cloudflare
web
Usa ka Worker nga adunay nodejs_compat
Postgres
Eksternal, maabot pinaagi sa Hyperdrive: HYPERDRIVE para sa application role, REPORT_HYPERDRIVE para sa report role niadtong pisikal nga database. Kopyahon sa web tier ang matag connection string ngadto sa DATABASE_URL ug QUIRE_REPORT_DATABASE_URL sa pagsugod niini
Files
R2, pinaagi sa S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); ikabit sa FILES binding ang bucket
Background jobs
pg-boss pinaagi sa Hyperdrive kon kinahanglan i-enqueue ang job uban sa write. Kon gamiton sa kauban nga worker ang QUIRE_QUEUE_DRIVER=cloudflare, moagi sa Cloudflare Queues ang gaan nga mga job (notifications ug webhook delivery nga walay gitakdang han-ay), busa dili pangutan-on alang niini ang Postgres. Ang kauban nga worker maoy mopadagan sa duha
Realtime
Ang realtime Worker nga apps/realtime-worker, uban sa Durable Objects
Kauban nga container host. Dili kini mapadagan sa Worker
Tracing
Workers observability, nga gi-enable sa wrangler.jsonc
Naghatag ang REPORT_HYPERDRIVE sa report role para sa pisikal nga database nga ginganlan sa HYPERDRIVE. Dili makaserbisyo niining target sa mga tenant nga naka-pin sa dugang nga pisikal nga database, sumala sa gihulagway sa ubos.
Dili mahimo niining target
Isalikway sa pagsugod samtang ilista ang tanan nga problema:
Walay SMTP. Gamita ang HTTP provider sa QUIRE_EMAIL_PROVIDER_CONFIG.
Walay lokal nga disk. Kinahanglan nagtudlo ang QUIRE_STORAGE_DRIVER sa object storage.
Walay in-process realtime o cache. Dili magpaambit og memorya ang mga Worker tali sa mga request, busa isalikway ang QUIRE_REALTIME_DRIVER=inprocess ug QUIRE_CACHE_DRIVER=memory.
Walay ClamAV, Gotenberg o ffmpeg sulod sa Worker. Isalikway ang CLAMAV_URL, GOTENBERG_URL ug FFMPEG_PATH kon itakda kini sa Worker; itakda hinuon kini sa kauban nga worker.
Walay organisasyon nga adunay kaugalingong database. Naka-fix sa oras sa pag-deploy ang mga Hyperdrive binding sa Worker, busa ipakita ang klarong panid nga “dili magamit dinhi” sa organisasyong adunay kaugalingong database. Iserbisyo kini gikan sa Compose o Vercel.
Aduna pay usa ka butang nga wala isalikway apan kinahanglan mahibaloan: dili molihok sa Workers ang prerendering ug incremental static regeneration, bisan unsay isulti sa dokumentasyon sa framework. I-render ang matag route sa matag request.
Niining target, himoa nga mubo ang mga transaction ug ayaw kini ipadayon samtang nagtawag sa network: i-reset sa Hyperdrive ang kahimtang sa session kon ibalik ang connection ngadto sa pool, busa itakda ang tenant context kada transaction.
Pag-deploy
Paghimo sa mga resource:
bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"bun run --bun wrangler r2 bucket create quire-filesbun run --bun wrangler queues create quire-jobs
Ibutang ang duha ka Hyperdrive id sa apps/web/wrangler.jsonc.
Itakda tagsa-tagsa ang mga sekreto pinaagi sa bun run --bun wrangler secret put <NAME> gikan sa apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET. Ang mga ordinaryong setting (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) ibutang sa vars.
Build-a ug i-deploy gikan sa apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
I-deploy ang realtime Worker uban sa QUIRE_REALTIME_WORKER_SECRET sa web tier ug token secret niini isip QUIRE_REALTIME_TOKEN_SECRET (pirmahan sa web tier ang realtime token gamit ang kaugalingong QUIRE_REALTIME_TOKEN_SECRET, o ang QUIRE_SECRET_KEY kon wala kini itakda, busa gamita ang bisan hain niini nga gigamit niini). Itakda ang QUIRE_REALTIME_WORKER_URL sa web tier aron itudlo sa address niini:
cd apps/realtime-workerbun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRETbun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRETbun run --bun wrangler deploy
Para sa gaan nga job sa Cloudflare Queues, paghimo og usa ka queue kada gaan nga queue ug itakda kini sa kauban nga worker (kinahanglan API token nga makabasa ug makasulat sa Queues):
bun run --bun wrangler queues create quire-events-notificationsbun run --bun wrangler queues create quire-events-notifications-deadbun run --bun wrangler queues create quire-events-webhooksbun run --bun wrangler queues create quire-events-webhooks-dead
QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, ug QUIRE_QUEUE_PREFIX kon dili quire-.
Padagana ang kauban nga host sama sa lakang 3 sa giya sa Vercel. Didto modagan ang migration sa dili pa ang matag deployment sa Worker.
Ipakita ang gisalikway nga configuration sa bun run --bun wrangler tail isip “The web tier did not start on cloudflare”, gisundan sa matag setting nga usbon.