ডিজাইন docs/architecture/23-ops.mdৰ section 6-ত। Workers-ত সীমিত web tier চলে। Workers-ত feature parity scope-ৰ বাহিৰত (PRD section 12): এই target-এ কৰিব নোৱাৰা কাম আৰম্ভ হওঁতেই নামসহ নাকচ হয়।
এই release-ৰ অৱস্থা
Configuration সাজু (apps/web/wrangler.jsonc, cloudflare-module Nitro preset, Hyperdrive bridge আৰু startup check)। Worker-ৰ R2-ৰ বাবে S3-compatible storage (QUIRE_STORAGE_DRIVER=s3), request-সমূহৰ মাজত realtime driver (QUIRE_REALTIME_DRIVER=durable_objects বা centrifugo), shared cache (QUIRE_CACHE_DRIVER=postgres বা valkey) আৰু HTTP email provider লাগে। নাথাকিলে Worker আৰম্ভ হ’বলৈ অস্বীকাৰ কৰি log-ত প্ৰতিটো setting কয়। Durable Objects driver apps/realtime-workerৰ realtime Worker-ৰ client (fan-out, presence আৰু history-ৰ বাবে প্ৰতিটো channel-ত এটা Durable Object; disconnect-ৰ বাবে প্ৰতিজন ব্যক্তিত এটা); তলত দিয়াৰ দৰে কাষতে deploy কৰক অথবা Centrifugo ব্যৱহাৰ কৰক।
অংশবোৰ
| অংশ | Cloudflare-ত |
|---|---|
web |
nodejs_compat-সহ Worker |
| Postgres | Hyperdrive-ৰে পোৱা বাহ্যিক database: application role-ৰ বাবে HYPERDRIVE, একে physical database-ৰ report role-ৰ বাবে REPORT_HYPERDRIVE। আৰম্ভ হওঁতে web tier-এ প্ৰতিটো connection string DATABASE_URL আৰু QUIRE_REPORT_DATABASE_URLলৈ copy কৰে |
| File | S3 API-ৰে R2 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES binding-এ bucket সংযোগ কৰে |
| Background job | লিখাৰ সৈতে job queue কৰিবলগীয়া হ’লে Hyperdrive-ৰ ওপৰত pg-boss। সহায়ক worker-ত QUIRE_QUEUE_DRIVER=cloudflare দিলে সৰু job (ক্ৰমবিহীন notification আৰু webhook delivery) Cloudflare Queues-ৰে যায়, সেয়ে Postgres-ত poll নহয়। সহায়ক worker-এ দুয়োটা চলায় |
| Realtime | Durable Objects-সহ realtime Worker, apps/realtime-worker |
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg |
সহায়ক container host। Worker-এ এইবোৰ চলাব নোৱাৰে |
| Tracing | wrangler.jsoncত অন কৰা Workers observability |
REPORT_HYPERDRIVE-এ HYPERDRIVE-এ নাম দিয়া physical database-ৰ report role দিয়ে। তলত বৰ্ণনা কৰা দৰে অতিৰিক্ত physical database-ত pinned tenant এই target-এ serve নকৰে।
এই target-এ কি কৰিব নোৱাৰে
আৰম্ভ কৰোঁতে প্ৰতিটো সমস্যা একেলগে দেখুৱাই নাকচ কৰে:
- SMTP নাই।
QUIRE_EMAIL_PROVIDER_CONFIGত HTTP provider ব্যৱহাৰ কৰক। - Local disk নাই।
QUIRE_STORAGE_DRIVER-এ object storage নাম দিব লাগিব। - In-process realtime বা cache নাই। Worker-এ request-সমূহৰ মাজত memory ভাগ নকৰে, সেয়ে
QUIRE_REALTIME_DRIVER=inprocessআৰুQUIRE_CACHE_DRIVER=memoryনাকচ হয়। - Worker-ত ClamAV, Gotenberg বা ffmpeg নাই। Worker-ত ছেট কৰা
CLAMAV_URL,GOTENBERG_URLআৰুFFMPEG_PATHনাকচ হয়; ইয়াৰ সলনি সহায়ক worker-ত দিয়ক। - Dedicated database থকা প্ৰতিষ্ঠান নাই। Worker-ৰ Hyperdrive binding deploy সময়ত নিৰ্দিষ্ট, সেয়ে নিজা database থকা প্ৰতিষ্ঠানে স্পষ্ট “ইয়াত উপলব্ধ নহয়” page পায়। Compose বা Vercel-ৰ পৰা serve কৰক।
এটা বস্তু নাকচ নহয় যদিও জানিব লাগিব: framework documentation-এ যিয়েই কওক, Workers-ত prerendering আৰু incremental static regeneration নচলে। প্ৰতিটো route প্ৰতিটো request-ত render হয়।
এই target-ত transaction চুটি ৰাখক আৰু network call চলোঁতে খোলা নাৰাখিব: connection pool-লৈ ঘূৰিলে Hyperdrive-এ session state reset কৰে, সেয়ে প্ৰতিটো transaction-ত tenant context ছেট হয়।
Deploy
- Resource সৃষ্টি কৰক:
দুটা Hyperdrive IDbun 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-jobsapps/web/wrangler.jsoncত দিয়ক। bun run --bun wrangler secret put <NAME>ৰেapps/webৰ পৰা এটাকৈ secret ছেট কৰক: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। সাধাৰণ setting (QUIRE_APP_ORIGIN,QUIRE_CONTENT_ORIGIN,QUIRE_PLATFORM_DOMAINS,QUIRE_DATABASE_ID,S3_ENDPOINT,S3_BUCKET,QUIRE_COLLAB_URL)varsত দিয়ক।apps/webৰ পৰা build আৰু deploy কৰক:NITRO_PRESET=cloudflare-module bun run build bun run --bun wrangler deploy- Web tier-ৰ
QUIRE_REALTIME_WORKER_SECRETআৰু ইয়াৰ token secretQUIRE_REALTIME_TOKEN_SECRETহিচাপে লৈ realtime Worker deploy কৰক (web tier-এ নিজৰQUIRE_REALTIME_TOKEN_SECRETৰে realtime token sign কৰে, অথবা সেয়া unset হ’লেQUIRE_SECRET_KEYৰে; যিটো ই ব্যৱহাৰ কৰে সেইটো দিয়ক); web tier-ত ইয়াৰ addressQUIRE_REALTIME_WORKER_URLহিচাপে ছেট কৰক: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 - Cloudflare Queues-ত সৰু job-ৰ বাবে প্ৰতিটো light queue-ৰ বাবে এটা queue সৃষ্টি কৰি সহায়ক worker-ত ছেট কৰক (Queues read আৰু write অনুমতি থকা API token):
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-deadQUIRE_QUEUE_DRIVER=cloudflare,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_QUEUES_TOKENআৰুQUIRE_QUEUE_PREFIXquire-নহ’লে ছেট কৰক। - Vercel গাইডৰ step 3 অনুসৰি সহায়ক host চলাওক। প্ৰতিটো Worker deployment-ৰ আগতে তাত migration চলে।
Configuration নাকচ হ’লে bun run --bun wrangler tailত “The web tier did not start on cloudflare” আৰু তাৰ পিছত সলনি কৰিবলগীয়া প্ৰতিটো setting দেখা যায়।