Pilote Orléans · configuration, pas un fork · aucun lieu inventé

Livrable 29

Déploiement

Aucun coût en euros. Catégories seulement.

Cible produit (prod réelle future)

MorceauIntentionNote
App webHébergement managé, région UEAujourd'hui le chemin de cet environnement est Vercel
PostgresManagé, UE, sauvegardesNeon si c'est le Postgres fourni — PostGIS à vérifier, pas à supposer
RedisRate limit, cache Now, locksPas dans le sandbox. Ne pas simuler un cluster
ObjetsBucket UE, CDNMédias. Absent tant que non créé
JobsCron managé ou worker uniquePas Kubernetes
E-mailTransactionnel UETHIRD-PARTY non choisi
SecretsGestionnaire de l'hébergeurPas de .env commité dans cet environnement

Environnements : local, test, staging, production — bases et clés séparées. Le preview de travail n'est pas une prod.

Cet environnement

  • Une app Vite / TanStack Start, port de preview imposé par la plateforme.
  • Base embarquée si aucune DATABASE_URL ; Postgres injecté au déploiement.
  • Pas de Redis, pas de worker long, pas d'écriture disque durable côté serveur en prod.
  • Donc : pas de file locale comme file de prod ; pas de tuiles générées sur le disque de la fonction.

CI (quand le code existe)

lint, typecheck, unit, tests de permission, build, migrations avant trafic. E2E sur le parcours critique. Pas de déploiement prod sans ces portes. Le détail d'outillage n'est pas inventé comme déjà vert.

Migrations

SQL versionné, expansif d'abord (ajouter colonne, backfill, puis contrainte). Rollback documenté par migration : au minimum « comment revenir », pas un down magique non testé.

Scaling

Interdit par défaut : Kafka, Kubernetes, dizaines de services. Autorisé : CDN, cache, read replica si une métrique le demande. Aucune métrique n'existe.

Coûts à surveiller (sans chiffres)

Tuiles et geocoding à la requête, base, sortie CDN, stockage images, tokens IA, e-mail, push, frais carte bancaire. Garde-fous : pas d'IA sans clic, plafond par session, tuiles statiques plutôt que raster à l'usage si le droit le permet, agrégats plutôt que logs infinis.

Alerte budget : à configurer chez l'hébergeur le jour où il y a une dépense. Pas une alerte fictive.

PWA

Manifest et service worker : shell offline + derniers lieux déjà chargés en cache. Pas une copie offline de toute la ville. Push : P1, permission séparée, THIRD-PARTY (navigateur + éventuellement un push service).

Disponibilité

Pas de SLO numérique dans ce document. Le jour du lancement : écrire l'objectif avec le contrat hébergeur, mesurer, sinon ne pas l'afficher sur un status page fantôme.

Décision

  • Choix : une app UE, Postgres UE, providers optionnels dégradables, pas d'orchestration lourde.
  • Risque : Vercel + PostGIS + cron est un assemblage à prouver, pas une architecture déjà validée. IMPLEMENTED — NOT YET VALIDATED à l'heure du premier déploiement.
  • Multi-ville : le même déploiement sert N villes. Pas un cluster par ville.