It ûntwerp stiet yn docs/architecture/23-ops.md seksje 6. Workers draaie in beheinde
web tier. Gelykweardigens fan funksjes op Workers falt bûten de omfang (PRD seksje 12):
wat dizze target net kin, wurdt by it starten mei de namme neamd wegere.
Steat yn dizze release
De konfiguraasje is oanwêzich (apps/web/wrangler.jsonc, de Nitro-preset
cloudflare-module, de Hyperdrive-brêge en startkontrôles). In Worker hat S3-kompatibele
opslach foar R2 nedich (QUIRE_STORAGE_DRIVER=s3), in realtime-driver foar ferskate
fersiken (QUIRE_REALTIME_DRIVER=durable_objects of centrifugo), in dielde cache
(QUIRE_CACHE_DRIVER=postgres of valkey) en in HTTP-e-mailprovider. Sûnder dy
ynstellingen wegeret de Worker te begjinnen en neamt it logboek elk probleem.
De Durable Objects-driver is in client fan de realtime Worker yn apps/realtime-worker
(ien Durable Object per kanaal foar fan-out, oanwêzigens en skiednis, ien per persoan
foar ferbinings dy’t fuortfalle); set dy njonken de web tier yn, lykas hjirûnder, of brûk Centrifugo.
De ûnderdielen
Underdiel
Op Cloudflare
web
In Worker mei nodejs_compat
Postgres
Ekstern fia Hyperdrive: HYPERDRIVE foar applikaasjerol, REPORT_HYPERDRIVE foar rapportrol op deselde fysike database. By it starten kopiearret de web tier elke ferbiningsrige nei DATABASE_URL en QUIRE_REPORT_DATABASE_URL
Bestannen
R2 fia de S3 API (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); de FILES-binding keppelt de bucket
Eftergrûntaken
pg-boss fia Hyperdrive as in taak tegearre mei in skriuwaksje op de wachtrige moat. Mei QUIRE_QUEUE_DRIVER=cloudflare op de begeliedende worker geane lichte taken (net-oardere meidielingen en webhookleveringen) fia Cloudflare Queues, sadat Postgres dêr net foar poallet wurdt. De begeliedende worker draait beide
Realtime
De realtime Worker, apps/realtime-worker, mei Durable Objects
In begeliedende containerhost. In Worker kin se net útfiere
Tracing
Workers-observability, ynskeakele yn wrangler.jsonc
REPORT_HYPERDRIVE leveret de rapportrol foar de fysike database dy’t HYPERDRIVE neamt.
Dizze target betsjinnet gjin tenants dy’t oan ekstra fysike databases fêstset binne, sa’t
hjirûnder beskreaun wurdt.
Wat dizze target net kin
Wurdt by it starten wegere, mei alle problemen tagelyk neamd:
Gjin SMTP. Brûk in HTTP-provider yn QUIRE_EMAIL_PROVIDER_CONFIG.
Gjin lokale skiif.QUIRE_STORAGE_DRIVER moat objektopslach oanjaan.
Gjin realtime of cache yn it proses. Workers diele gjin ûnthâld tusken fersiken,
dus QUIRE_REALTIME_DRIVER=inprocess en QUIRE_CACHE_DRIVER=memory wurde wegere.
Gjin ClamAV, Gotenberg of ffmpeg yn de Worker.CLAMAV_URL, GOTENBERG_URL en
FFMPEG_PATH ynsteld op de Worker wurde wegere; set se yn op de begeliedende worker.
Gjin organisaasjes mei tawijde databases. Hyperdrive-bindings fan in Worker steane
fêst by ynset, dus krijt in organisaasje mei eigen database in dúdlike side
“hjir net beskikber”. Betsjinje dy fan Compose of Vercel ôf.
En ien ding dat net wegere wurdt, mar datst witte moatst: prerenderjen en inkrementele
statyske fernijing wurkje net op Workers, wat de raamwurkdokumintaasje ek seit. Elke
rûte wurdt per fersyk renderd.
Hâld op dizze target transaksjes koart en lit se nea oer in netwurkoprop hinne iepen stean:
Hyperdrive set sesjesteat werom as in ferbining nei de pool giet, dus tenant-kontekst wurdt
per transaksje ynsteld.
Ynsette
Meitsje de boarnen oan:
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
Set de twa Hyperdrive-ID’s yn apps/web/wrangler.jsonc.
Stel de geheimen ien foar ien yn mei bun run --bun wrangler secret put <NAME> út 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.
Gewoane ynstellingen (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN,
QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET,
QUIRE_COLLAB_URL) komme yn vars.
Bou en set yn út apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Set de realtime Worker yn mei de QUIRE_REALTIME_WORKER_SECRET fan de web tier en
syn tokengeheim as QUIRE_REALTIME_TOKEN_SECRET (de web tier ûndertekenet realtimetokens
mei eigen QUIRE_REALTIME_TOKEN_SECRET, of mei QUIRE_SECRET_KEY as dy net ynsteld is;
brûk dus deselde wearde as dy brûkt wurdt). Set QUIRE_REALTIME_WORKER_URL op de web tier
nei syn adres:
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
Om lichte taken fia Cloudflare Queues út te fieren, meitsje ien queue per lichte taak en
set de folgjende yn op de begeliedende worker (in API-token mei lêzen en skriuwen fan 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
Stel QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN en QUIRE_QUEUE_PREFIX yn as it net quire- is.
Draai de begeliedende host lykas yn stap 3 fan de Vercel-hantlieding.
Migrations rinne dêr foar elke Worker-ynset.
By wegere konfiguraasje lit bun run --bun wrangler tail sjen: “The web tier did not start on cloudflare”,
folge troch elke ynstelling dy’t feroare wurde moat.