Arhitektuur on kirjeldatud dokumendi docs/architecture/23-ops.md jaotises 6.
Workers käitab vähendatud veebikihti. Funktsioonide võrdsus pole Workersi puhul
eesmärk (PRD jaotis 12): sihtkoha piirangutest keeldutakse käivitumisel nimeliselt.
Selle väljalaske olek
Seadistus on olemas (apps/web/wrangler.jsonc, cloudflare-module Nitro
eelseade, Hyperdrive’i sild ja käivituskontrollid). Worker vajab R2 jaoks
S3-ühilduvat salvestust (QUIRE_STORAGE_DRIVER=s3), päringutevahelist
reaalajaside draiverit (QUIRE_REALTIME_DRIVER=durable_objects või
centrifugo), jagatud vahemälu (QUIRE_CACHE_DRIVER=postgres või valkey)
ning HTTP-põhist e-posti pakkujat. Nendeta keeldub Worker käivitumast ja logi
nimetab kõik seaded. Durable Objectsi draiver kasutab rakenduses
apps/realtime-worker asuvat reaalajateenust (iga kanali jaoks üks Durable
Object edastuseks, kohalolekuks ja ajalooks; iga inimese jaoks üks ühenduse
katkemiseks); juuruta see allpool kirjeldatud viisil kõrvale või kasuta
Centrifugot.
Osad
Osa
Cloudflare’is
web
nodejs_compat-iga Worker
Postgres
Väline, Hyperdrive’i kaudu: HYPERDRIVE rakenduserollile ning samas füüsilises andmebaasis aruanderollile REPORT_HYPERDRIVE. Käivitumisel kopeerib veebikiht ühendusstringid DATABASE_URL ja QUIRE_REPORT_DATABASE_URL muutujasse
Failid
R2, S3 API kaudu (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES sidumine ühendab hoidla
Tausttööd
Kirjutustoiminguga järjekorda lisatava töö jaoks pg-boss Hyperdrive’i kaudu. Kui kaas-töötlejal on QUIRE_QUEUE_DRIVER=cloudflare, lähevad kerged tööd (järjestamata teavitused ja veebikonksude edastused) hoopis Cloudflare Queuesi, nii et Postgresit nende jaoks ei küsitleta. Kaas-töötleja käitab mõlemat
Reaalajaside
Reaalaja-Worker apps/realtime-worker koos Durable Objectsiga
Workersi jälgitavus, lubatud failis wrangler.jsonc
REPORT_HYPERDRIVE annab aruanderolli füüsilise andmebaasi jaoks, mille nimi on
HYPERDRIVE. See sihtkoht ei teeninda lisafüüsilistesse andmebaasidesse seotud
rentnikke, nagu allpool kirjeldatud.
Mida see sihtkoht teha ei saa
Käivitamisel lükatakse kõik probleemid korraga tagasi:
SMTP puudub. Kasuta väljal QUIRE_EMAIL_PROVIDER_CONFIG HTTP-pakkujat.
Kohalik ketas puudub.QUIRE_STORAGE_DRIVER peab nimetama
objektisalvestust.
Protsessisisest reaalajasidet ega vahemälu pole. Workerite päringud ei
jaga mälu, seega lükatakse tagasi QUIRE_REALTIME_DRIVER=inprocess ja
QUIRE_CACHE_DRIVER=memory.
Workeris pole ClamAV-d, Gotenbergi ega ffmpegi. Workerile määratud
CLAMAV_URL, GOTENBERG_URL ja FFMPEG_PATH lükatakse tagasi; määra need
kaastöötlejale.
Eriotstarbelise andmebaasiga organisatsioone pole. Workeri Hyperdrive’i
sidumised on juurutamisel fikseeritud, seega näeb oma andmebaasiga
organisatsioon selget teadet „siin pole saadaval”. Teeninda seda Compose’i või
Verceli kaudu.
Samuti tuleb teada, et eelrenderdamine ja järkjärguline staatiline taastootmine
ei tööta Workersis, mida tahes ütleb raamistiku dokumentatsioon. Iga marsruut
renderdatakse päringu korral.
Hoia sellel sihtkohal tehingud lühikesed ega jäta neid võrgukutse ajaks avatuks:
ühenduse ühendusepuhvrisse naastes lähtestab Hyperdrive seansi oleku, mistõttu
rentniku kontekst määratakse iga tehingu kohta eraldi.
Juurutamine
Loo ressursid:
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
Lisa kaks Hyperdrive’i ID-d faili apps/web/wrangler.jsonc.
Määra saladused ükshaaval käsuga bun run --bun wrangler secret put <NAME> kaustas
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. Lihtsad seaded
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) lisa
jaotisse vars.
Ehita ja juuruta kaustast apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Juuruta reaalaja-Worker, andes sellele veebikihi väärtuse
QUIRE_REALTIME_WORKER_SECRET ja märgi saladuse QUIRE_REALTIME_TOKEN_SECRET
(veebikiht allkirjastab reaalajamärgid enda QUIRE_REALTIME_TOKEN_SECRET abil
või selle puudumisel QUIRE_SECRET_KEY-ga, seega kasuta sama väärtust, mida
veebikiht kasutab). Määra veebikihis ka selle aadressiks
QUIRE_REALTIME_WORKER_URL:
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
Cloudflare Queuesi kergete tööde jaoks loo iga kerge järjekorra kohta oma
järjekord ja määra need kaastöötlejal (API tunnus peab lubama Queuesi lugemist
ja kirjutamist):
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
Määra QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN ning QUIRE_QUEUE_PREFIX, kui eesliide pole quire-.
Käivita kaashost nii, nagu kirjeldab Verceli juhendi 3. samm.
Migratsioonid käivitatakse seal enne iga Workeri juurutust.
Tagasilükatud seadistust näeb käsuga bun run --bun wrangler tail; logi algab tekstiga
“The web tier did not start on cloudflare” ja nimetab muudetavad seaded.