ንድፉ በ docs/architecture/23-ops.md ክፍል 5 ላይ ነው። Vercel የድር ክፍሉን ብቻ ያስኬዳል። ሌላው ሁሉ እርስዎ በሚያስተዳድሩት ተያያዥ ሆስት ላይ ይሠራል፤ ይህም አማራጭ አይደለም።
በዚህ እትም ያለው ሁኔታ
ውቅሩ ተዘጋጅቷል (apps/web/vercel.json፣ vercel Nitro presetና የጅማሬ ምርመራዎች)። Vercel የጋራ ፋይል ማከማቻ (QUIRE_STORAGE_DRIVER=s3 ወይም azure)፣ በfunction ክፍሎች መካከል የሚሠራ realtime driver (QUIRE_REALTIME_DRIVER=sse ወይም centrifugo) እና HTTP የኢሜይል አቅራቢ ይፈልጋል። እነዚህ ከሌሉ የድር ክፍሉ መነሳት እምቢ ይላል፤ ምዝግቡም የጎደለውን ቅንብር ሁሉ ይዘረዝራል።
ክፍሎቹ
| ክፍል | የሚሠራበት ቦታ |
|---|---|
web |
Vercel Functions፣ Bun runtime፦ ገጾች፣ REST፣ MCP፣ LTI፣ የተቀበሉ webhooks |
worker፣ scheduler፣ collab፣ content |
ተያያዥ ሆስት፦ Fly፣ Railway፣ ECS ወይም የራስዎ Docker ሆስት ከdocker/compose.yaml ጋር |
| Postgres | ውጫዊ፣ ከtransaction pooler በኋላ፦ Neon፣ Supabase ወይም PgBouncer ያለው RDS |
| ፋይሎች | S3 ወይም R2። ቋሚ ዲስክ የለም። |
| የጀርባ ሥራዎች | ከጥያቄው transaction ጋር በpg-boss ይገባሉ፣ በተያያዥ workerም ይሠራሉ። በተያያዥ worker QUIRE_QUEUE_DRIVER=vercel ከሆነ ቀላል ሥራዎች (በቅደም ተከተል ያልተያዙ ማሳወቂያዎችና webhook መላኪያዎች) በVercel Queues (VERCEL_QUEUE_REGION፣ VERCEL_QUEUE_TOKEN) ይሄዳሉ፤ pooled Postgres አይፈተሽም። |
| ተደጋጋሚ ሥራዎች | ተያያዥ scheduler። Vercel Cron route የለም፤ ሥራን በfunction ውስጥ የሚያከናውን cron timeout ይደርስበታል። |
| ክትትል | 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አይቀበልም። Server-sent events እስከ function timeout ብቻ ይቆያሉ፤ ደንበኛው cursor ተጠቅሞ እንደገና ይገናኛል፣ ስለዚህ ክስተት አይጠፋም፤ የሰው መኖር ግን አይገኝም። - በተለየ የውሂብ ጎታ የተቀመጡ tenant ዎች ገደብ አላቸው፤ በግምት ስምንት ብቻ፣ እያንዳንዱ በpool ማጋራት የማይችል አካባቢ ተጨማሪ ግንኙነት ስለሚፈጥር።
ማሰማራት
- ከመዝገቡ Vercel project ይፍጠሩ፣ Root Directoryን
apps/webያድርጉ።apps/web/vercel.jsonየመጫኛና የግንባታ ትእዛዞችን (NITRO_PRESET=vercel) ያዘጋጃል፤/sw.jsንም በcache ሳይቀመጥ ያቀርባል። - የአካባቢ ተለዋዋጮችን ያዘጋጁ። ከ
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፣ የማከማቻ ቅንብሮችና ወደ ተያያዥ collab አገልግሎት የሚያመለክቱQUIRE_COLLAB_URLእናQUIRE_COLLAB_SIGNING_KEY።QUIRE_REPORT_DATABASE_URLበDATABASE_URLየተለየው አካላዊ database ላይ ነው። ለእያንዳንዱ ተጨማሪ የተመዘገበ database የራሱንquire_reportURL ወደ webና worker አካባቢ ያክሉ፤ በመድረኩ ኮንሶልም የአካባቢ ተለዋዋጭ ስሙን እንደenv:NAMEይመዝግቡ። የሪፖርት URL ከጎደለ analytics በደህንነት ምክንያት አይሠራም። - በተያያዥ ሆስት
docker/compose.yamlንwebአገልግሎት ሳይኖር፣ ተመሳሳይdocker/.envተጠቅመው ያስኪዱ፦ ማሻሻያውን በVercel ከማስጀመርዎ በፊት ማዛወር እዚያ ይሠራል።docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content - ያሰማሩ። ውቅሩ ካልተቀበለ function ምዝግብ በ“የድር ክፍሉ በvercel ላይ አልተነሳም” ይጀምራል፤ ሊቀየሩ የሚገቡ ቅንብሮችን ሁሉ ይዘረዝራል።
ማሻሻል
መጀመሪያ ከተያያዥ ሆስት ማሻሻያ ያስኬዱ፣ ከዚያ አዲሱን Vercel deployment ያስጀምሩ፣ በመጨረሻ የተያያዙ workersን ያዙሩ፦ ቅደም ተከተሉ በየማሻሻያ መመሪያ አለ። የVercel ፈጣን rollback የኮድ rollback ነው፤ በአንድ እትም ውስጥ ሁልጊዜ ደህንነቱ የተጠበቀ ነው።