Bases de données et stockage
PostgreSQL, MongoDB, Valkey et buckets S3 : les dépendances persistantes de ton app.
Bases de données et stockage
📍 Où trouver ça dans l'UI
- Definitions : Infra → onglet Architecture → Databases / Storage
- Instances par env : Infra → Environments → {env} → Databases / Storage
Une app a souvent besoin de stocker des données. Wakastart supporte 2 grandes catégories.
Base de données (Database)
C'est quoi ? Un système qui stocke des données structurées et permet de les requêter. C'est le coeur de la persistance de ton app.
Moteurs disponibles dans Wakastart :
| Engine | Type | Usage typique |
|---|---|---|
| PostgreSQL | Relationnelle (SQL) | Le défaut pour la plupart des apps : transactions, schéma rigide |
| MongoDB | Document (NoSQL) | Données flexibles, schemas évolutifs |
| Valkey (= Redis) | Key-value en mémoire | Cache, sessions, file d'attente |
2 modes : IN_CLUSTER vs MANAGED
| Mode | Où c'est hébergé | Pour |
|---|---|---|
| IN_CLUSTER | Dans le cluster K8s Wakastart, comme un pod | Dev, prototypes, faible volume |
| MANAGED | Sur une infrastructure cloud managée (HA, backups auto, monitoring inclus) | Prod sérieuse |
→ Tu choisis le mode au niveau de la Definition (ex: defaultMode: IN_CLUSTER pour faciliter dev) et tu peux overrider par Instance (ex: en prod, on met mode: MANAGED).
Pattern d'usage typique
textDatabaseDefinition "primary" ├── engineType: POSTGRESQL ├── defaultMode: IN_CLUSTER ├── defaultPlan: "essential" └── defaultVersion: "15"
Stockage (Storage Bucket) — S3
C'est quoi un bucket S3 ? Un système de stockage de fichiers/objets : images, vidéos, PDF, archives, exports CSV… Tout ce qui n'est pas structuré et n'a pas besoin d'un schéma relationnel.
S3 = "Simple Storage Service" (à l'origine Amazon, repris par plusieurs providers avec une API compatible). Wakastart provisionne un bucket dédié pour chaque environnement.
Différence avec une BDD :
- BDD = données structurées, requêtables (SELECT, etc.). Performant pour lire des champs précis.
- S3 = fichiers entiers, stockage froid pas cher. Tu PUT un fichier, tu GET un fichier. Pas de requête dedans.
StorageBucketDefinition / StorageBucketInstance
Même pattern que les databases : tu définis une fois au niveau Architecture, instancié par environnement.
Une StorageBucketInstance produit pour le code applicatif 6 credentials :
S3_URL— URL d'API S3S3_ENDPOINT— endpoint régionalS3_REGION— région physiqueS3_BUCKET— nom du bucketS3_ACCESS_KEY_ID— clé d'accèsS3_SECRET_ACCESS_KEY— clé secrète
→ Ton service les reçoit via des variables d'env (cf. chapitre Variables et secrets).