Ale dirèkteman nan kontni an

Web tier sou Cloudflare Workers

Kouri yon web tier Quire ki gen kapasite redui sou Cloudflare Workers.

Gade kòm Markdown

Konsepsyon an nan docs/architecture/23-ops.md, seksyon 6. Workers yo kouri yon web tier redui. Menm fonksyon ak lòt vèsyon yo pa nan objektif Workers yo (PRD seksyon 12): lè yo kòmanse, yo refize fonksyon sib sa a pa kapab fè, epi yo bay non li.

Estati nan vèsyon sa a

Konfigirasyon an pare (apps/web/wrangler.jsonc, preset Nitro cloudflare-module, pon Hyperdrive ak verifikasyon demaraj yo). Yon Worker bezwen depo ki konpatib ak S3 pou R2 (QUIRE_STORAGE_DRIVER=s3), yon driver reyalite-a-kounye a ki mache nan plizyè demann (QUIRE_REALTIME_DRIVER=durable_objects oswa centrifugo), yon kach pataje (QUIRE_CACHE_DRIVER=postgres oswa valkey) ak yon founisè imèl HTTP. San eleman sa yo, Worker la refize kòmanse epi log li bay non chak paramèt. Driver Durable Objects la se yon client Worker reyalite-a-kounye a nan apps/realtime-worker (yon Durable Object pou chak chanèl pou distribisyon, prezans ak istwa; youn pou chak moun pou dekoneksyon); deplwaye li ansanm jan sa esplike pi ba a, oswa sèvi ak Centrifugo.

Konpozan yo

Konpozan Sou Cloudflare
web Yon Worker avèk nodejs_compat
Postgres Deyò, aksesib atravè Hyperdrive: HYPERDRIVE pou wòl aplikasyon an; REPORT_HYPERDRIVE pou wòl rapò a sou menm bazdone fizik la. Lè web tier la kòmanse, li kopye chak chèn koneksyon nan DATABASE_URL ak QUIRE_REPORT_DATABASE_URL
Fichye R2, atravè API S3 li a (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); binding FILES la konekte bucket la
Travay an aryè-plan pg-boss sou Hyperdrive lè fòk travay la antre nan ke nan menm tan ak yon ekriti. Si yo mete QUIRE_QUEUE_DRIVER=cloudflare sou worker konpayon an, travay lejè yo (notifikasyon san lòd ak livrezon webhook) pase nan Cloudflare Queues; konsa yo pa sonde Postgres pou sa yo. Worker konpayon an kouri toude
Reyalite-a-kounye a Worker reyalite-a-kounye a, apps/realtime-worker, avèk Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Yon host container konpayon. Worker pa kapab kouri yo
Trase Workers observability, aktive nan wrangler.jsonc

REPORT_HYPERDRIVE bay wòl rapò a pou bazdone fizik HYPERDRIVE idantifye a. Jan sa esplike pi ba a, sib sa a pa sèvi tenant ki fikse nan lòt bazdone fizik.

Sa sib sa a pa kapab fè

Li refize lè li kòmanse epi li bay lis chak pwoblèm anmenmtan:

  • Pa gen SMTP. Sèvi ak yon founisè HTTP nan QUIRE_EMAIL_PROVIDER_CONFIG.
  • Pa gen disk lokal. QUIRE_STORAGE_DRIVER dwe nonmen depo objè.
  • Pa gen reyalite-a-kounye a oswa kach nan pwosesis la. Workers pa pataje memwa ant demann; se poutèt sa yo refize QUIRE_REALTIME_DRIVER=inprocess ak QUIRE_CACHE_DRIVER=memory.
  • Worker la pa kouri ClamAV, Gotenberg ni ffmpeg. Li refize CLAMAV_URL, GOTENBERG_URL ak FFMPEG_PATH ki mete sou Worker la; mete yo pito sou worker konpayon an.
  • Òganizasyon ki gen bazdone dedye pa disponib. Binding Hyperdrive Worker yo fikse nan moman deplwaman, kidonk yon òganizasyon ki gen pwòp bazdone li jwenn paj “pa disponib isit la”. Sèvi l nan Compose oswa Vercel.

Men yon bagay li pa refize, men fòk ou konnen: pre-rann paj ak rejenere paj estatik piti piti pa mache sou Workers, kèlkeswa sa dokiman framework la di. Yo rann chak route pou chak demann.

Sou sib sa a, kenbe transaction yo kout epi pa janm kite youn louvri pandan yon apèl rezo: Hyperdrive re-inisyalize eta sesyon an lè koneksyon an retounen nan pool lan, kidonk yo fikse tenant context pou chak transaction.

Deplwaye

  1. Kreye resous yo:
    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
    Mete de ID Hyperdrive yo nan apps/web/wrangler.jsonc.
  2. Mete sekrè yo youn apre lòt avèk bun run --bun wrangler secret put <NAME> apati 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. Mete paramèt senp yo (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) nan vars.
  3. Bati epi deplwaye apati apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Deplwaye Worker reyalite-a-kounye a a, avèk QUIRE_REALTIME_WORKER_SECRET ki nan web tier la epi sekrè token li a kòm QUIRE_REALTIME_TOKEN_SECRET. Web tier la siyen token reyalite-a-kounye a ak pwòp QUIRE_REALTIME_TOKEN_SECRET li, oswa QUIRE_SECRET_KEY si premye a pa fikse; donk sèvi ak valè li itilize a. Mete QUIRE_REALTIME_WORKER_URL nan web tier la pou adrès Worker la:
    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. Pou travay lejè pase nan Cloudflare Queues, kreye yon ke pou chak ke lejè epi mete paramèt sa yo sou worker konpayon an (yon token API ki gen dwa li ak ekri 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 ak QUIRE_QUEUE_PREFIX si li pa quire-.
  6. Kouri host konpayon an jan etap 3 nan gid Vercel la esplike. Migration yo fèt la, anvan chak deplwaman Worker.

Lè konfigirasyon an refize, bun run --bun wrangler tail montre “The web tier did not start on cloudflare”, epi li bay chak paramèt pou chanje.

Navigasyon

Tape pou chèche…

↑↓ navige↵ chwaziEsc fèmen