Το σχέδιο περιγράφεται στην ενότητα 5 του docs/architecture/23-ops.md. Το Vercel εκτελεί μόνο τον web tier. Όλα τα υπόλοιπα εκτελούνται σε συνοδευτικό host που διαχειρίζεστε εσείς, και είναι απαραίτητο.
Κατάσταση σε αυτή την έκδοση
Η διαμόρφωση είναι έτοιμη (apps/web/vercel.json, το preset Nitro vercel και οι έλεγχοι εκκίνησης). Το Vercel χρειάζεται κοινόχρηστο αποθηκευτικό χώρο αρχείων (QUIRE_STORAGE_DRIVER=s3 ή azure), πρόγραμμα οδήγησης realtime που λειτουργεί σε πολλαπλές παρουσίες συναρτήσεων (QUIRE_REALTIME_DRIVER=sse ή centrifugo) και πάροχο email μέσω HTTP. Χωρίς αυτά, ο web tier αρνείται να ξεκινήσει και το αρχείο καταγραφής ονομάζει κάθε ρύθμιση που λείπει.
Συνοδευτικό host: Fly, Railway, ECS ή δικός σας Docker host με docker/compose.yaml
Postgres
Εξωτερικά, πίσω από pooler συναλλαγών: Neon, Supabase ή RDS με PgBouncer
Αρχεία
S3 ή R2. Δεν υπάρχει μόνιμος δίσκος
Εργασίες παρασκηνίου
Μπαίνουν σε ουρά με pg-boss μέσα στη συναλλαγή του αιτήματος και εκτελούνται από τον συνοδευτικό worker. Με QUIRE_QUEUE_DRIVER=vercel στον συνοδευτικό worker, οι απλές εργασίες (μη ταξινομημένες παραδόσεις ειδοποιήσεων και webhooks) περνούν από τα Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN), ώστε να μην γίνεται polling της Postgres με pool για αυτές
Επαναλαμβανόμενες εργασίες
Ο συνοδευτικός scheduler. Δεν υπάρχει διαδρομή Vercel Cron, επειδή μια εργασία cron που εκτελεί δουλειά μέσα σε συνάρτηση υπερβαίνει το χρονικό όριο
Tracing
OpenTelemetry προς τον collector σας, OTEL_EXPORTER_OTLP_ENDPOINT
Τι δεν μπορεί να κάνει αυτός ο προορισμός
Ο web tier ελέγχει τα παρακάτω κατά την εκκίνηση και αρνείται να συνεχίσει, κατονομάζοντας όλα τα προβλήματα, αντί να αποτύχει αργότερα όταν δεν σταλεί το πρώτο email:
Δεν υποστηρίζεται SMTP. Το Vercel αποκλείει εξερχόμενο SMTP. Ορίστε το QUIRE_EMAIL_PROVIDER_CONFIG σε πάροχο HTTP (Postmark, SES, Mailgun, SendGrid ή Resend). Το QUIRE_SMTP_URL απορρίπτεται.
Δεν υπάρχει τοπικός δίσκος. Το QUIRE_STORAGE_DRIVER=local απορρίπτεται.
Δεν υπάρχει κοινόχρηστη μνήμη μεταξύ κλήσεων. Το QUIRE_REALTIME_DRIVER=inprocess απορρίπτεται. Τα συμβάντα που αποστέλλονται από τον διακομιστή περιορίζονται στο χρονικό όριο της συνάρτησης· ο πελάτης συνδέεται ξανά με δρομέα, οπότε δεν χάνεται συμβάν, αλλά η παρουσία δεν είναι διαθέσιμη.
Οι βάσεις δεδομένων με δεσμευμένους μισθωτές περιορίζονται σε περίπου οκτώ, καθώς καθεμία απαιτεί πρόσθετη ομάδα συνδέσεων σε περιβάλλον που δεν μπορεί να τις μοιράζεται.
Ανάπτυξη
Δημιουργήστε έργο Vercel από το αποθετήριο με Root Directory το apps/web. Το 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 (διεύθυνση του pooler), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, οι ρυθμίσεις αποθήκευσης καθώς και τα QUIRE_COLLAB_URL και QUIRE_COLLAB_SIGNING_KEY που δείχνουν στην υπηρεσία collab του συνοδευτικού host.
Το QUIRE_REPORT_DATABASE_URL αφορά τη φυσική βάση δεδομένων που κατονομάζει το DATABASE_URL. Για κάθε επιπλέον καταχωρισμένη βάση, προσθέστε τη δική της διεύθυνση σύνδεσης quire_report και στο περιβάλλον του web και του worker· έπειτα καταχωρίστε το όνομα της μεταβλητής περιβάλλοντος ως env:NAME στην κονσόλα της πλατφόρμας. Τα Analytics αποτυγχάνουν με ασφαλή τρόπο αν λείπει η διεύθυνση αναφορών αυτής της βάσης.
Στον συνοδευτικό host, εκτελέστε το docker/compose.yaml χωρίς την υπηρεσία web και με το ίδιο docker/.env:
Οι μεταναστεύσεις εκτελούνται εκεί, πριν προωθηθεί κάθε ανάπτυξη Vercel.
Αναπτύξτε. Αν απορριφθεί η διαμόρφωση, το αρχείο καταγραφής της συνάρτησης ξεκινά με «The web tier did not start on vercel» και παραθέτει κάθε ρύθμιση που πρέπει να αλλάξει.
Αναβάθμιση
Εκτελέστε πρώτα τις μεταναστεύσεις από τον συνοδευτικό host, έπειτα προωθήστε τη νέα ανάπτυξη Vercel και τέλος ανανεώστε τους workers του συνοδευτικού host: αυτή είναι η σειρά στο upgrade.md. Η άμεση επαναφορά Vercel επαναφέρει τον κώδικα και είναι πάντα ασφαλής μέσα σε μια έκδοση.