De Konzept ass docs/architecture/23-ops.md Kapitel 6. Workers féieren en reduzéierte Web-Tier. Feature-Paritéit op Workers ass ausserhalb vum Ëmfang (PRD Kapitel 12): wat dëst Ziel net ka maachen gëtt beim Start, no Numm, refuséiert.
Status an dëser Verëffentlechung
D’Konfiguratioun steet (apps/web/wrangler.jsonc, de cloudflare-module Nitro-Preset, d’Hyperdrive-Bréck an d’Kontrollen beim Start). E Worker braucht S3-kompatiblen Späicherplatz fir R2 (QUIRE_STORAGE_DRIVER=s3), en Realtime-Driver iwwer Demanden (QUIRE_REALTIME_DRIVER=durable_objects oder centrifugo), en gedeelte Cache (QUIRE_CACHE_DRIVER=postgres oder valkey) an en HTTP-E-Mail-Ubidder. ouni se refuséiert de Worker ze starten an seng Log nennt all Astellung. De Durable-Objects-Driver ass e Client vum Realtime-Worker an apps/realtime-worker (een Durable Object pro Kanal fir Verteilen, Präsenz a Geschicht, een pro Persoun fir Disconnects); depotéiert en mat dobaussen, wéi hei drënner, oder benotzt Centrifugo.
De Stéck
Stéck
Op Cloudflare
web
E Worker mat nodejs_compat
Postgres
Extern, erreechbar iwwer Hyperdrive: HYPERDRIVE fir d’Applikatiounsroll, REPORT_HYPERDRIVE fir d’Reportroll op där selwechter physikalescher Datebank. De Web-Tier kopéiert all Verbindungsstring an DATABASE_URL an QUIRE_REPORT_DATABASE_URL wann en start
Fichieren
R2, iwwer seng S3-API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); d’FILES-Bannung setzt den Bucket drun
Hannergrondjoben
pg-boss iwwer Hyperdrive, wann de Job mat engem Schreiwen an d’Queue muss. Mat QUIRE_QUEUE_DRIVER=cloudflare op dem Begleed-Worker ginn déi liicht Joben (net sortéiert Noriichten- a Webhooks-Liwwerungen) amplaz dessen iwwer Cloudflare Queues, sou datt Postgres net dofir ofgeruff gëtt. De Begleed-Worker féiert béid aus
Realtime
De Realtime-Worker, apps/realtime-worker, mat Durable Objects
En Begleedcontainer-Server. E Worker kann se net ausféieren
Tracing
Workers Observability, aktivéiert an wrangler.jsonc
REPORT_HYPERDRIVE liwwert d’Reportroll fir d’physikalesch Datebank, deen HYPERDRIVE nennt. Dëst Ziel bedéient keng Tenanten, déi op zousätzlech physikalesch Datebanken festgeluecht sinn, wéi hei drënner beschriwwen.
Wat dëst Deploy-Ziel net ka maachen
Refuséiert beim Start, mat all Problem op eemol opgelëscht:
Kee SMTP. Benotzt en HTTP-Ubidder an QUIRE_EMAIL_PROVIDER_CONFIG.
Kee lokalen Disk.QUIRE_STORAGE_DRIVER muss en Objektspäicher nennen.
Kee Realtime oder Cache bannendrem Prozess. Workers deelen keng
Gedächtnis tëscht Demanden, sou datt QUIRE_REALTIME_DRIVER=inprocess an
QUIRE_CACHE_DRIVER=memory refuséiert ginn.
Kee ClamAV, Gotenberg oder ffmpeg am Worker.CLAMAV_URL,
GOTENBERG_URL an FFMPEG_PATH, déi op de Worker gesat ginn, ginn
refuséiert; setzt se amplaz dessen op de Begleed-Worker.
Keng Organisatiounen mat enger eegener Datebank. D’Hyperdrive-Bannunge
vun engem Worker sinn beim Depotéieren fix, sou datt eng Organisatioun mat
hirer eegener Datebank eng kloer Säit “net verfügbar hei” kritt. Bedéient
se vu Compose oder Vercel.
An eng Saach, déi net refuséiert gëtt, mä wësse misst: Prerendering an inkrementell nei Generéierung vu statischem Inhalt funktionéieren op Workers net, egal wat d’Dokumentatioun vum Framework seet. All Route gëtt pro Demande gerendert.
Um dëst Ziel haalt d’Transaktiounen kuerz an eng ni iwwer en Netzwierk-Uruff: Hyperdrive setzt den Sessiounszoustand zréck, wann eng Verbindung an de Pool zréchtkëmmt, sou datt de Kontext vum Tenant pro Transaktioun gesat gëtt.
Deploys
Erstellt d’Ressourcen:
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
Setzt déi zwee Hyperdrive-IDs an apps/web/wrangler.jsonc.
Setzt d’Geheimnisser, eemol nom aneren mat
bun run --bun wrangler secret put <NAME> vu apps/web aus: 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. Gewéinlech Astellungen
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) ginn
an vars.
Baut a depotéiert vu apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Depotéiert de Realtime-Worker, mat QUIRE_REALTIME_WORKER_SECRET vum
Web-Tier a sengem Token-Geheimnis als QUIRE_REALTIME_TOKEN_SECRET (de
Web-Tier signéiert Realtime-Token mat sengem eegenem
QUIRE_REALTIME_TOKEN_SECRET, oder mat QUIRE_SECRET_KEY wann dat net
gesat ass, also benotzt dat wat en benotzt), a setzt
QUIRE_REALTIME_WORKER_URL um Web-Tier op seng Adress:
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
Fir liicht Joben op Cloudflare Queues, erstellt eng Queue pro liichter
Queue a setzt dëst op de Begleed-Worker (en API-Token mat Queues Liesen a
Schreiwen):
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, an QUIRE_QUEUE_PREFIX wann net quire-.
Féiert de Begleedserver aus wéi am Vercel-Guide, Schrëtt 3.
Migratioune laufen do, ier all Worker-Deploys.
Eng refuséiert Konfiguratioun weist sech an bun run --bun wrangler tail als “The web tier did not start on cloudflare”, gefolgt vun all Astellung, déi geännert gëtt.