বিষয়বস্তুলৈ যাওক

Cloudflare Workers-ত web tier

Cloudflare Workers-ত সীমিত Quire web tier চলাওক।

Markdown হিচাপে চাওক

ডিজাইন 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

  1. Resource সৃষ্টি কৰক:
    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
    দুটা Hyperdrive ID apps/web/wrangler.jsoncত দিয়ক।
  2. 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ত দিয়ক।
  3. apps/webৰ পৰা build আৰু deploy কৰক:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Web tier-ৰ QUIRE_REALTIME_WORKER_SECRET আৰু ইয়াৰ token secret QUIRE_REALTIME_TOKEN_SECRET হিচাপে লৈ realtime Worker deploy কৰক (web tier-এ নিজৰ QUIRE_REALTIME_TOKEN_SECRETৰে realtime token sign কৰে, অথবা সেয়া unset হ’লে QUIRE_SECRET_KEYৰে; যিটো ই ব্যৱহাৰ কৰে সেইটো দিয়ক); web tier-ত ইয়াৰ address QUIRE_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
  5. 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-dead
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN আৰু QUIRE_QUEUE_PREFIX quire- নহ’লে ছেট কৰক।
  6. Vercel গাইডৰ step 3 অনুসৰি সহায়ক host চলাওক। প্ৰতিটো Worker deployment-ৰ আগতে তাত migration চলে।

Configuration নাকচ হ’লে bun run --bun wrangler tailত “The web tier did not start on cloudflare” আৰু তাৰ পিছত সলনি কৰিবলগীয়া প্ৰতিটো setting দেখা যায়।

নেভিগেচন

বিচাৰিবলৈ লিখক…

↑↓ নেভিগেট কৰক↵ বাছকEsc বন্ধ কৰক