डिज़ाइन docs/architecture/23-ops.md के अनुभाग 5 में है। Vercel सिर्फ़ वेब
टियर चलाता है। बाकी सब आपके चलाए companion host पर चलता है और यह वैकल्पिक नहीं है।
इस रिलीज़ में स्थिति
कॉन्फ़िगरेशन तैयार है (apps/web/vercel.json, vercel Nitro preset और startup
जाँच)। Vercel को साझा फ़ाइल स्टोरेज (QUIRE_STORAGE_DRIVER=s3 या azure),
function instances में काम करने वाला realtime driver (QUIRE_REALTIME_DRIVER=sse
या centrifugo) और HTTP email provider चाहिए। इनके बिना वेब टियर शुरू होने से
मना करता है और उसका log हर गायब setting बताता है।
हिस्से
हिस्सा
कहाँ चलता है
web
Vercel Functions, Bun runtime: पृष्ठ, REST, MCP, LTI, मिले webhooks
worker, scheduler, collab, content
Companion host: Fly, Railway, ECS या आपका Docker host जिसमें docker/compose.yaml है
Postgres
बाहरी, transaction pooler के पीछे: Neon, Supabase या PgBouncer वाला RDS
फ़ाइलें
S3 या R2। स्थायी disk नहीं है
बैकग्राउंड jobs
अनुरोध के transaction में pg-boss से queued, companion worker चलाता है। Companion worker पर QUIRE_QUEUE_DRIVER=vercel हो तो हल्के jobs (बिना क्रम की सूचनाएँ और webhook delivery) Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) से जाते हैं, इसलिए उनके लिए pooled Postgres poll नहीं होता
दोहराए जाने वाले jobs
Companion scheduler। Vercel Cron route नहीं है, क्योंकि function में काम करने वाला cron timeout हो जाता है
Tracing
आपके collector को OpenTelemetry, OTEL_EXPORTER_OTLP_ENDPOINT
यह लक्ष्य क्या नहीं कर सकता
वेब टियर शुरू होते समय इन्हें जाँचकर हर समस्या नाम सहित अस्वीकार करता है, न कि
बाद में पहला ईमेल न भेजे जाने पर विफल होता है:
SMTP नहीं। Vercel outbound SMTP रोकता है। QUIRE_EMAIL_PROVIDER_CONFIG को
HTTP provider (Postmark, SES, Mailgun, SendGrid या Resend) पर सेट करें।
QUIRE_SMTP_URL अस्वीकार होता है।
स्थानीय disk नहीं।QUIRE_STORAGE_DRIVER=local अस्वीकार होता है।
Invocations के बीच साझा memory नहीं।QUIRE_REALTIME_DRIVER=inprocess
अस्वीकार होता है। Server-sent events function timeout तक सीमित हैं; client
cursor के साथ दोबारा जुड़ता है, इसलिए इवेंट नहीं खोता, पर उपस्थिति उपलब्ध नहीं।
Pin की गई tenant databases सीमित लगभग आठ तक हैं, क्योंकि हर एक ऐसा वातावरण
जहाँ pools साझा नहीं होते, एक और connection pool है।
डिप्लॉय करना
Repository से Vercel project बनाएँ और Root Directoryapps/web रखें।
apps/web/vercel.json install और build commands (NITRO_PRESET=vercel) सेट
करता है और /sw.js को cache किए बिना देता है।
Environment variables सेट करें। 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 का पता), QUIRE_REPORT_DATABASE_URL,
QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID,
QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, storage settings और
companion की collab service की ओर संकेत करते QUIRE_COLLAB_URL व
QUIRE_COLLAB_SIGNING_KEY। QUIRE_REPORT_DATABASE_URL उसी physical database
के लिए है जिसका नाम DATABASE_URL में है। हर अतिरिक्त registered database
के लिए उसका quire_report connection URL web और worker दोनों environments
में जोड़ें, फिर platform console में उसका environment variable name env:NAME
के रूप में register करें। उस database का report URL न हो तो analytics बंद रहता है।
Companion host पर docker/compose.yaml को web service के बिना और उसी
docker/.env के साथ चलाएँ:
हर Vercel deployment को बढ़ाने से पहले migration वहीं चलती है।
Deploy करें। कॉन्फ़िगरेशन अस्वीकार हो तो function log
“The web tier did not start on vercel” से शुरू होता है और बदलने वाली हर setting
सूचीबद्ध करता है।
अपग्रेड करना
पहले companion host से migrate करें, फिर नई Vercel deployment promote करें,
फिर companion workers बदलें: क्रम upgrade.md में है। Vercel का
तुरंत rollback code rollback है और एक release के भीतर हमेशा सुरक्षित है।