Zum Inhalt sprangen

De Web-Tier op Cloudflare Workers

Féiert en reduzéierte Quire-Web-Tier op Cloudflare Workers.

Als Markdown weisen

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
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg 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

  1. 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-files
    bun run --bun wrangler queues create quire-jobs
    Setzt déi zwee Hyperdrive-IDs an apps/web/wrangler.jsonc.
  2. 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.
  3. Baut a depotéiert vu apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. 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-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. 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-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, an QUIRE_QUEUE_PREFIX wann net quire-.
  6. 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.

Navigatioun

Tippt fir ze sichen…

↑↓ navigéieren↵ auswielenEsc zoumaachen