ወደ ይዘቱ ዝለል

የድር ክፍል በVercel ላይ

የQuire ድር ክፍልን በVercel ላይ ከተያያዘ worker ጋር ያስኬዱ።

ንድፉ በ 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 ማጋራት የማይችል አካባቢ ተጨማሪ ግንኙነት ስለሚፈጥር።

ማሰማራት

  1. ከመዝገቡ Vercel project ይፍጠሩ፣ Root Directoryን apps/web ያድርጉ። apps/web/vercel.json የመጫኛና የግንባታ ትእዛዞችን (NITRO_PRESET=vercel) ያዘጋጃል፤ /sw.jsንም በcache ሳይቀመጥ ያቀርባል።
  2. የአካባቢ ተለዋዋጮችን ያዘጋጁ። ከ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_report URL ወደ webና worker አካባቢ ያክሉ፤ በመድረኩ ኮንሶልም የአካባቢ ተለዋዋጭ ስሙን እንደ env:NAME ይመዝግቡ። የሪፖርት URL ከጎደለ analytics በደህንነት ምክንያት አይሠራም።
  3. በተያያዥ ሆስት docker/compose.yamlን web አገልግሎት ሳይኖር፣ ተመሳሳይ docker/.env ተጠቅመው ያስኪዱ፦
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    ማሻሻያውን በVercel ከማስጀመርዎ በፊት ማዛወር እዚያ ይሠራል።
  4. ያሰማሩ። ውቅሩ ካልተቀበለ function ምዝግብ በ“የድር ክፍሉ በvercel ላይ አልተነሳም” ይጀምራል፤ ሊቀየሩ የሚገቡ ቅንብሮችን ሁሉ ይዘረዝራል።

ማሻሻል

መጀመሪያ ከተያያዥ ሆስት ማሻሻያ ያስኬዱ፣ ከዚያ አዲሱን Vercel deployment ያስጀምሩ፣ በመጨረሻ የተያያዙ workersን ያዙሩ፦ ቅደም ተከተሉ በየማሻሻያ መመሪያ አለ። የVercel ፈጣን rollback የኮድ rollback ነው፤ በአንድ እትም ውስጥ ሁልጊዜ ደህንነቱ የተጠበቀ ነው።

ዳሰሳ

ለመፈለግ ይተይቡ…

↑↓ ዳስስ↵ ምረጥEsc ዝጋ