স্থাপত্যের বিবরণ docs/architecture/23-ops.md-এর section 5-এ। Vercel শুধু web tier চালায়। বাকি সব আপনার পরিচালিত companion host-এ চলে, এটি ঐচ্ছিক নয়।
এই release-এর অবস্থা
Configuration প্রস্তুত আছে (apps/web/vercel.json, vercel Nitro preset ও startup check)। Vercel-এর জন্য shared file storage (QUIRE_STORAGE_DRIVER=s3 অথবা azure), function instance জুড়ে কাজ করে এমন realtime driver (QUIRE_REALTIME_DRIVER=sse অথবা centrifugo) এবং HTTP email provider দরকার। এগুলো না থাকলে web tier চালু হতে অস্বীকার করে এবং log-এ প্রতিটি অনুপস্থিত setting-এর নাম দেয়।
উপাদান
উপাদান
কোথায় চলে
web
Vercel Functions, Bun runtime: page, REST, MCP, LTI, প্রাপ্ত webhook
worker, scheduler, collab, content
companion host: Fly, Railway, ECS অথবা docker/compose.yaml-সহ আপনার Docker host
Postgres
বাহ্যিক, transaction pooler-এর পেছনে: Neon, Supabase অথবা PgBouncer-সহ RDS
Files
S3 অথবা R2। স্থায়ী disk নেই
Background job
request-এর transaction-এর ভেতরে pg-boss-এ enqueue হয়, companion worker-এ চলে। Companion worker-এ QUIRE_QUEUE_DRIVER=vercel হলে হালকা job (ক্রমবিহীন notification ও webhook delivery) Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) দিয়ে যায়, ফলে সেগুলোর জন্য pooled Postgres poll করা হয় না
পুনরাবৃত্ত কাজ
companion scheduler। Vercel Cron route নেই, কারণ function-এর ভেতরে কাজ করা cron timeout হয়ে যায়
চালুর সময় web tier এগুলো পরীক্ষা করে এবং পরে প্রথম email পাঠাতে ব্যর্থ হওয়ার বদলে প্রতিটি সমস্যা উল্লেখ করে শুরু হতে অস্বীকার করে:
SMTP নেই। Vercel outbound SMTP আটকায়। QUIRE_EMAIL_PROVIDER_CONFIG-এ HTTP provider দিন (Postmark, SES, Mailgun, SendGrid অথবা Resend)। QUIRE_SMTP_URL প্রত্যাখ্যাত হয়।
Local disk নেই।QUIRE_STORAGE_DRIVER=local প্রত্যাখ্যাত হয়।
Invocation-এর মধ্যে shared memory নেই।QUIRE_REALTIME_DRIVER=inprocess প্রত্যাখ্যাত হয়। Server-sent event function timeout পর্যন্ত চলে; client cursor দিয়ে আবার যুক্ত হয়, তাই event হারায় না, তবে presence পাওয়া যায় না।
নির্দিষ্ট tenant database সীমিত—প্রায় আটটি পর্যন্ত, কারণ প্রত্যেকটি এমন environment-এ আরেকটি connection pool, যেখানে pool ভাগ করা যায় না।
Deploy করা
Repository থেকে Vercel project তৈরি করে Root Directory-তে apps/web দিন। apps/web/vercel.json install ও build command (NITRO_PRESET=vercel) নির্ধারণ করে এবং /sw.js cache ছাড়া পরিবেশন করে।
Environment variable নির্ধারণ করুন। docker/.env.example থেকে অন্তত: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (pooler-এর address), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, storage setting, এবং companion-এর collab service-এ নির্দেশ করা QUIRE_COLLAB_URL ও QUIRE_COLLAB_SIGNING_KEY। QUIRE_REPORT_DATABASE_URLDATABASE_URL-এ নাম দেওয়া physical database-এর জন্য। প্রতিটি অতিরিক্ত নিবন্ধিত database-এর জন্য web ও worker—দুই environment-এ তার নিজস্ব quire_report connection URL যোগ করুন, তারপর platform console-এ environment variable-এর নাম env:NAME আকারে নিবন্ধন করুন। database-এর report URL না থাকলে analytics কাজ করতে অস্বীকার করে।
Companion host-এ docker/compose.yaml চালান, web service বাদ দিয়ে এবং একই docker/.env ব্যবহার করে:
প্রতিটি Vercel deployment চালু করার আগে সেখানেই migration চলে।
Deploy করুন। Configuration প্রত্যাখ্যাত হলে function log শুরু হয় “The web tier did not start on vercel” দিয়ে এবং বদলাতে হবে এমন প্রতিটি setting তালিকাভুক্ত করে।
Upgrade
আগে companion host থেকে migration চালান, তারপর নতুন Vercel deployment চালু করুন, এরপর companion worker-গুলো update করুন: ক্রমটি upgrade.md-তে বর্ণিত। Vercel-এর instant rollback code rollback, এবং release-এর মধ্যে সবসময় নিরাপদ।