Aqbeż għall-kontenut

Il-livell web fuq Cloudflare Workers

Ħaddem livell web imnaqqas ta' Quire fuq Cloudflare Workers.

Ara bħala Markdown

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
Realtime Il-Worker realtime, apps/realtime-worker, b’Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg 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

  1. 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-files
    bun run --bun wrangler queues create quire-jobs
    Poġġi ż-żewġ ids ta’ Hyperdrive f’apps/web/wrangler.jsonc.
  2. 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.
  3. Ibni u deployja minn apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. 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-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. 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-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun 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-.
  6. Ħ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.

Navigazzjoni

Ittajpja biex tfittex…

↑↓ innaviga↵ agħżelEsc agħlaq