Id-disinn jinsab f’docs/architecture/23-ops.md sezzjoni 6. Workers imexxu livell web
imnaqqas. Parità ta’ karatteristiċi fuq Workers hija barra mill-iskop (PRD sezzjoni 12): dak li
dan il-mira ma jistax jagħmel jiġi rifjutat meta jibda, bl-isem.
Status f’din ir-release
Il-konfigurazzjoni tinsab f’postha (apps/web/wrangler.jsonc, il-preset Nitro
cloudflare-module, il-pont Hyperdrive u l-kontrolli tal-bidu). Worker jeħtieġ ħażna kompatibbli ma’ S3 għal R2
(QUIRE_STORAGE_DRIVER=s3), driver realtime bejn talbiet
(QUIRE_REALTIME_DRIVER=durable_objects jew centrifugo), cache kondiviża
(QUIRE_CACHE_DRIVER=postgres jew valkey) u fornitur tal-email HTTP.
Mingħajrhom il-Worker jirrifjuta li jibda u l-log tiegħu jsemmi kull setting.
Id-driver Durable Objects huwa klijent tal-Worker realtime f’
apps/realtime-worker (Durable Object wieħed għal kull kanal għal fan-out, preżenza
u storja, wieħed għal kull persuna għal skonnessjonijiet); deployjah flimkien, kif hawn taħt,
jew uża Centrifugo.
Il-biċċiet
Piece
On Cloudflare
web
Worker b’nodejs_compat
Postgres
Estern, milħuq permezz ta’ Hyperdrive: HYPERDRIVE għar-rwol tal-applikazzjoni, REPORT_HYPERDRIVE għar-rwol tar-rapport fuq dik l-istess database fiżika. Il-livell web jikkopja kull string ta’ konnessjoni f’DATABASE_URL u QUIRE_REPORT_DATABASE_URL meta jibda
Files
R2, permezz tal-API S3 tiegħu (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); il-binding FILES iwaħħal il-bucket
Background jobs
pg-boss fuq Hyperdrive meta x-xogħol irid jiġi kkwodjat ma’ kitba. B’QUIRE_QUEUE_DRIVER=cloudflare fuq il-worker sieħeb, ix-xogħol ħafif (kunsinni ta’ notifiki mhux ordnati u webhook) jgħaddi minn Cloudflare Queues minflok, biex Postgres ma jiġix polled għalihom. Il-worker sieħeb imexxi t-tnejn
Host sieħeb ta’ containers. Worker ma jistax imexxihom
Tracing
Osservabbiltà ta’ Workers, mixgħula f’wrangler.jsonc
REPORT_HYPERDRIVE jipprovdi r-rwol tar-rapport għad-database fiżika msemmija
minn HYPERDRIVE. Din il-mira ma sservix tenants imwaħħla ma’ databases fiżiċi addizzjonali,
kif deskritt hawn taħt.
X’dan il-mira ma jistax jagħmel
Rifjutat fil-bidu, b’kull problema elenkata f’daqqa:
Ebda SMTP. Uża fornitur HTTP f’QUIRE_EMAIL_PROVIDER_CONFIG.
Ebda disk lokali.QUIRE_STORAGE_DRIVER irid isemmi ħażna ta’ oġġetti.
Ebda realtime jew cache fil-proċess. Workers ma jaqsmu l-ebda memorja bejn
talbiet, għalhekk QUIRE_REALTIME_DRIVER=inprocess u
QUIRE_CACHE_DRIVER=memory huma rifjutati.
Ebda ClamAV, Gotenberg jew ffmpeg fil-Worker.CLAMAV_URL,
GOTENBERG_URL u FFMPEG_PATH issettjati fuq il-Worker huma rifjutati; issettjahom fuq
il-worker sieħeb minflok.
Ebda organizzazzjoni b’database dedikata. Il-bindings Hyperdrive ta’ Worker huma
fissi fil-ħin tad-deploy, għalhekk organizzazzjoni bid-database tagħha tieħu paġna ċara
“mhux disponibbli hawn”. Serviha minn Compose jew Vercel.
U ħaġa waħda li mhijiex rifjutata iżda trid tkun magħrufa: prerendering u
riġenerazzjoni statika inkrementali ma jaħdmux fuq Workers, tkun xi tkun
tgħid id-dokumentazzjoni tal-framework. Kull rotta tirrendi għal kull talba.
Fuq din il-mira żomm it-tranżazzjonijiet qosra u qatt ma żomm waħda fuq sejħa tan-network:
Hyperdrive jerġa’ jistabbilixxi l-istat tas-sessjoni meta konnessjoni terġa’ lura fil-pool,
għalhekk il-kuntest tat-tenant jiġi ssettjat għal kull tranżazzjoni.
Deployjar
Oħloq ir-riżorsi:
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
Poġġi ż-żewġ ids ta’ Hyperdrive f’apps/web/wrangler.jsonc.
Issettja s-sigrieti, wieħed kull darba b’bun run --bun wrangler secret put <NAME> minn
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. Settings sempliċi
(QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS,
QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) imorru f’
vars.
Ibni u deployja minn apps/web:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Deployja l-Worker realtime, bis-QUIRE_REALTIME_WORKER_SECRET tal-livell web
u s-sigriet tat-token tiegħu bħala QUIRE_REALTIME_TOKEN_SECRET (il-livell web jiffirma
tokens realtime bis-QUIRE_REALTIME_TOKEN_SECRET tiegħu stess, jew b’
QUIRE_SECRET_KEY meta dak ikun issettjat, għalhekk uża liema juża), u ssettja
QUIRE_REALTIME_WORKER_URL fuq il-livell web għall-indirizz tiegħu:
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
Għal xogħol ħafif fuq Cloudflare Queues, oħloq queue waħda għal kull queue ħafifa u
issettja dawn fuq il-worker sieħeb (token API b’qari u
kitba ta’ 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, u QUIRE_QUEUE_PREFIX jekk mhuwiex quire-.
Ħaddem il-host sieħeb kif fil-gwida ta’ Vercel, pass 3.
Il-migrazzjonijiet jaħdmu hemmhekk, qabel kull deployment tal-Worker.
Konfigurazzjoni rifjutata tidher f’bun run --bun wrangler tail bħala “The web tier did
not start on cloudflare”, segwita minn kull setting x’tibdel.