രൂപകൽപ്പന docs/architecture/23-ops.md എന്ന ഫയലിലെ 5-ാം വിഭാഗമാണ്. Vercel വെബ് ടയർ മാത്രമേ പ്രവർത്തിപ്പിക്കൂ. ബാക്കിയെല്ലാം നിങ്ങൾ നടത്തുന്ന ഒരു കമ്പാനിയൻ ഹോസ്റ്റിലാണ്, അത് ഐച്ഛികമല്ല.
ഈ റിലീസിലെ അവസ്ഥ
ക്രമീകരണം സ്ഥാനത്തുണ്ട് (apps/web/vercel.json, vercel Nitro പ്രീസെറ്റ്, ആരംഭ പരിശോധനകൾ). Vercel-ന് പങ്കിട്ട ഫയൽ സ്റ്റോറേജ് (QUIRE_STORAGE_DRIVER=s3 അല്ലെങ്കിൽ azure), ഫംഗ്ഷൻ ഇൻസ്റ്റൻസുകൾക്കിടയിൽ പ്രവർത്തിക്കുന്ന റിയൽടൈം ഡ്രൈവർ (QUIRE_REALTIME_DRIVER=sse അല്ലെങ്കിൽ centrifugo), കൂടാതെ ഒരു HTTP ഇമെയിൽ പ്രൊവൈഡറും ആവശ്യമാണ്. ഇല്ലെങ്കിൽ വെബ് ടയർ ആരംഭിക്കാൻ നിരസിക്കും, ഓരോ ഇല്ലാത്ത ക്രമീകരണത്തിന്റെയും പേര് അതിന്റെ ലോഗ് പറയും.
ഘടകങ്ങൾ
ഘടകം
എവിടെ പ്രവർത്തിക്കും
web
Vercel Functions, Node റൺടൈം: പേജുകൾ, REST, MCP, LTI, ലഭിച്ച വെബ്ഹുക്കുകൾ
worker, scheduler, collab, content
ഒരു കമ്പാനിയൻ ഹോസ്റ്റ്: Fly, Railway, ECS, അല്ലെങ്കിൽ docker/compose.yaml ഉള്ള നിങ്ങളുടെ സ്വന്തം Docker ഹോസ്റ്റ്
Postgres
ബാഹ്യം, ഒരു ട്രാൻസാക്ഷൻ പൂളറിന് പിന്നിൽ: Neon, Supabase, അല്ലെങ്കിൽ PgBouncer ഉള്ള RDS
ഫയലുകൾ
S3 അല്ലെങ്കിൽ R2. നിലനിൽക്കുന്ന ഡിസ്ക് ഇല്ല
പശ്ചാത്തല ജോലികൾ
അഭ്യർത്ഥനയുടെ ട്രാൻസാക്ഷനിൽ pg-boss വഴി ക്യൂവിലാക്കി, കമ്പാനിയൻ വർക്കർ പ്രവർത്തിപ്പിക്കും. കമ്പാനിയൻ വർക്കറിൽ QUIRE_QUEUE_DRIVER=vercel ഉണ്ടെങ്കിൽ, ലഘു ജോലികൾ (ക്രമരഹിത അറിയിപ്പും വെബ്ഹുക്ക് ഡെലിവറികളും) Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) വഴി പോകും, അതിനാൽ പൂളുചെയ്ത Postgres അവയ്ക്കായി പോള് ചെയ്യപ്പെടില്ല
ആവർത്തന ജോലികൾ
കമ്പാനിയൻ ഷെഡ്യൂളർ. Vercel Cron റൂട്ട് ഇല്ല, കാരണം ഒരു ഫംഗ്ഷനുള്ളിൽ ജോലി ചെയ്യുന്ന ഒരു cron ടൈംഔട്ടാകും
ട്രേസിംഗ്
നിങ്ങളുടെ കളക്ടറിലേക്ക് OpenTelemetry, OTEL_EXPORTER_OTLP_ENDPOINT
ഈ ലക്ഷ്യസ്ഥാനത്തിന് ചെയ്യാൻ കഴിയാത്തത്
വെബ് ടയർ ആരംഭിക്കുമ്പോൾ ഇവ പരിശോധിച്ച് ഓരോ പ്രശ്നവും പേരെടുത്ത് പറഞ്ഞ് നിരസിക്കും, അയയ്ക്കാത്ത ആദ്യത്തെ ഇമെയിലിൽ പിന്നീട് പരാജയപ്പെടുന്നതിന് പകരം:
SMTP ഇല്ല. Vercel ഔട്ട്ബൗണ്ട് SMTP തടയും. QUIRE_EMAIL_PROVIDER_CONFIG ഒരു HTTP പ്രൊവൈഡറിലേക്ക് (Postmark, SES, Mailgun, SendGrid അല്ലെങ്കിൽ Resend) സജ്ജമാക്കൂ. QUIRE_SMTP_URL നിരസിക്കപ്പെടും.
ലോക്കൽ ഡിസ്ക് ഇല്ല.QUIRE_STORAGE_DRIVER=local നിരസിക്കപ്പെടും.
വിളികൾക്കിടയിൽ പങ്കിട്ട മെമ്മറി ഇല്ല.QUIRE_REALTIME_DRIVER=inprocess നിരസിക്കപ്പെടും. സെർവർ അയയ്ക്കുന്ന ഇവന്റുകൾ ഫംഗ്ഷൻ ടൈംഔട്ടിൽ പരിധിക്കുള്ളിലാണ്; ക്ലയന്റ് ഒരു കർസറോടെ വീണ്ടും ബന്ധിപ്പിക്കും, അതിനാൽ ഒരു ഇവന്റും നഷ്ടപ്പെടില്ല, പക്ഷേ സാന്നിധ്യം ലഭ്യമല്ല.
പിൻതിരിച്ച ടെനന്റ് ഡാറ്റാബേസുകൾ ഏകദേശം എട്ടെണ്ണം വരെ മാത്രം, കാരണം പൂളുകൾ പങ്കിടാൻ കഴിയാത്ത ഒരു എൻവിരോൺമെന്റിൽ ഓരോന്നും മറ്റൊരു കണക്ഷൻ പൂളാണ്.
ഡിപ്ലോയ് ചെയ്യൽ
Root Directoryapps/web ഉള്ള റപ്പോസിറ്ററിയിൽ നിന്ന് ഒരു Vercel പ്രോജക്റ്റ് നിർമ്മിക്കൂ. apps/web/vercel.json ഇൻസ്റ്റലും ബിൽഡ് കമാന്റുകളും (NITRO_PRESET=vercel) സജ്ജമാക്കുകയും /sw.js ക്യാഷ് ചെയ്യാതെ നൽകുകയും ചെയ്യും.
എൻവിരോൺമെന്റ് വേരിയബിളുകൾ സജ്ജമാക്കൂ. docker/.env.example-ൽ നിന്ന്, കുറഞ്ഞത്: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (പൂളറിന്റെ വിലാസം), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, സ്റ്റോറേജ് ക്രമീകരണങ്ങൾ, കൂടാതെ കമ്പാനിയന്റെ collab സേവനത്തെ ചൂണ്ടിക്കാട്ടുന്ന QUIRE_COLLAB_URL, QUIRE_COLLAB_SIGNING_KEY. QUIRE_REPORT_DATABASE_URLDATABASE_URL പറയുന്ന ഭൗതിക ഡാറ്റാബേസിന്റേതാണ്. ഓരോ അധിക രജിസ്റ്റർ ചെയ്ത ഡാറ്റാബേസിനും അതിന്റെ സ്വന്തം quire_report കണക്ഷൻ URL web, worker എന്നീ രണ്ട് എൻവിരോൺമെന്റുകളിലും ചേർക്കൂ, പിന്നെ അതിന്റെ എൻവിരോൺമെന്റ് വേരിയബിളിന്റെ പേര് പ്ലാറ്റ്ഫോം കൺസോളിൽ env:NAME ആയി രജിസ്റ്റർ ചെയ്യൂ. ആ ഡാറ്റാബേസിന്റെ റിപ്പോർട്ട് URL ഇല്ലെങ്കിൽ അനലിറ്റിക്സ് അടയ്ക്കപ്പെട്ട് പരാജയപ്പെടും.
കമ്പാനിയൻ ഹോസ്റ്റിൽ, docker/compose.yamlweb സേവനമില്ലാതെയും അതേ docker/.env ഉപയോഗിച്ചും പ്രവർത്തിപ്പിക്കൂ:
ഓരോ Vercel ഡിപ്ലോയ്മെന്റും പ്രൊമോട്ട് ചെയ്യും മുമ്പ്, മൈഗ്രേഷനുകൾ അവിടെ പ്രവർത്തിക്കും.
ഡിപ്ലോയ് ചെയ്യൂ. നിരസിക്കപ്പെട്ട ക്രമീകരണത്തിൽ ഫംഗ്ഷൻ ലോഗ് “The web tier did not start on vercel” എന്നതുകൊണ്ട് ആരംഭിക്കും, മാറ്റേണ്ട ഓരോ ക്രമീകരണവും പട്ടികപ്പെടുത്തും.
അപ്ഗ്രേഡ് ചെയ്യൽ
ആദ്യം കമ്പാനിയൻ ഹോസ്റ്റിൽ മൈഗ്രേറ്റ് ചെയ്യൂ, പിന്നെ പുതിയ Vercel ഡിപ്ലോയ്മെന്റ് പ്രൊമോട്ട് ചെയ്യൂ, പിന്നെ കമ്പാനിയന്റെ വർക്കറുകൾ റോൾ ചെയ്യൂ: ക്രമം upgrade.md-ൽ. ഒരു Vercel തൽക്കാല റോൾബാക്ക് ഒരു കോഡ് റോൾബാക്കാണ്, ഒരു റിലീസിനുള്ളിൽ എപ്പോഴും സുരക്ഷിതമാണ്.