Environnement d'exécution
Vue d'ensemble
Un OAV s'exécute selon deux configurations possibles : développement ou production.
L'environnement d'exécution est déterminé par la variable NODE_ENV :
- la valeur production configure l'environnement en mode production ;
- toute autre valeur configure l'environnement en mode développement.
Ce choix n'est pas cosmétique : il durcit le comportement du serveur, modifie le contenu des erreurs transmises au client et rend certaines options de sécurité non négociables.
Différences entre les deux modes
Comportement | Développement | Production |
|---|---|---|
Introspection du schéma GraphQL | Activée. | Désactivée. |
Détail du schéma dans les erreurs client | Transmis. | Masqué. |
Contenu des erreurs | Message d'origine. | Objet générique { message: 'Error' }. |
Page d'accueil d'Apollo Server | Disponible. | Désactivée. |
Validation de la session (SECURE_SESSION) | Pilotée par la variable. | Toujours active, quelle que soit la valeur de la variable. |
Contexte client au décrochage | Peut être simulé. | Résolu auprès du service de sessions. |
Mode développement
Le mode développement vise la rapidité de la boucle de travail.
- Le client est servi par le serveur de développement Vite (npm run front:dev), avec rechargement à chaud ;
- le serveur Express est démarré par npm run start-server:dev, qui applique au préalable les migrations en attente ;
- les variables d'environnement sont lues depuis le fichier .env local ;
- SECURE_SESSION=false permet de décrocher sur l'OAV sans générer de jeton, en simulant le contexte client dans resolveProjectFromContext ;
- SECURE_COOKIE=false permet de travailler en HTTP.
Mode production
Le mode production vise la robustesse et la confidentialité.
- l'OAV est distribué sous forme d'image Docker, dont le numéro de version et la date de construction sont figés au moment du build ;
- les migrations du modèle de données sont appliquées au démarrage du conteneur, avant le lancement du serveur ;
- la configuration est intégralement portée par des variables d'environnement, injectées par l'orchestrateur ;
- ces variables sont validées au démarrage : un OAV mal configuré s'arrête immédiatement plutôt que de démarrer dans un état incohérent ;
- la validation de la session est imposée, et SECURE_COOKIE=true impose l'usage d'HTTPS.
flowchart LR
A[Container Startup] --> B[Environment Variable Validation]
B --> C[Applying Migrations]
C --> D[Starting the Express Server]État et redémarrage
L'état courant d'un OAV n'est pas conservé en mémoire par le serveur, quel que soit le mode d'exécution :
- le Process (projet, vue active, métadonnées de vue) est persisté dans OIP Headless ;
- les entités sont persistées dans OIP Headless, chaque écriture étant historisée ;
- la session HTTP est stockée dans une table PostgreSQL dédiée, désignée par SESSION_STORE_URL ;
- les notifications de tâches transitent par RabbitMQ.
Un serveur peut donc être redémarré ou répliqué sans perte du parcours en cours.
Résumé
- L'environnement d'exécution est déterminé par la seule variable NODE_ENV ;
- le mode production désactive l'introspection GraphQL, masque le détail des erreurs et impose la validation des sessions ;
- le mode développement autorise un décrochage sans jeton et un contexte client simulé ;
- l'état de l'OAV étant intégralement externalisé, le serveur est redémarrable et réplicable.