Branching de bases (copy-on-write)
Clone instantané d'un backend en moins de 10 s — équivalent git branch pour PostgreSQL. Idéal pour tester migrations dangereuses, preview environments par PR.
Branching de base — git branch pour PostgreSQL
Le branching Pool C est l'équivalent d'un git branch pour les bases de données : en moins de 10 secondes, un clone instantané du dataset produit un backend complet et indépendant avec les mêmes données que le parent au moment du clone. Mécanisme rendu possible par le copy-on-write du filesystem versionné : le clone ne stocke initialement que les différences, et les deux instances peuvent diverger librement.
Quand brancher — quand non
Idéal pour
- Tester une migration dangereuse avant production
- Preview environments par PR (données réelles de staging)
- Sandbox de développement avec données anonymisées
- Reproduction de bug client sur copie isolée
Pas adapté
- Forks permanents avec divergence importante (préférer un nouveau backend)
- Plan Free (branching disponible Pro+)
Créer une branche
# Depuis le projet principal
paas backends branch create feature-auth-v2 --project wzfbhd
# Depuis une autre branche (ex: staging)
paas backends branch create test-migration --project wzfbhd --from staging
# Via API
curl -X POST "https://console.di2amp.com/api/v1/backends/wzfbhd/branches" \
-H "Authorization: Bearer $PAAS_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"feature-auth-v2"}'
# Réponse
{
"project_id": "abcdef",
"name": "feature-auth-v2",
"parent_project_id": "wzfbhd",
"url": "https://abcdef.runtime.di2amp.com",
"status": "active"
}
Comment ça marche
Workflow en 5 à 10 secondes :
- Snapshot du dataset parent (instantané, copy-on-write)
- Clone du snapshot — pas de copie physique, juste un pointeur
- Génération d'un nouveau
project_idde 6 lettres - Démarrage d'un container PostgreSQL sur le clone, avec credentials distincts
- Routing :
abcdef.runtime.di2amp.com→ compute hébergeant la branche
L'espace supplémentaire n'est alloué que pour les blocs modifiés après la création.
Indépendance complète
Une fois créée, la branche est totalement indépendante du parent :
-- Sur la branche ALTER TABLE users ADD COLUMN phone_verified BOOLEAN DEFAULT false; UPDATE users SET status = 'test';
Le parent n'est pas affecté. Les blocs modifiés sont stockés uniquement dans le dataset de la branche. Réciproquement, les nouvelles données du parent sont invisibles depuis la branche après le clone.
Lister et gérer
paas backends branches list --project wzfbhd paas backends branches show abcdef --project wzfbhd paas backends branches delete abcdef --project wzfbhd
Cycle de vie
| Type | Durée de vie |
|---|---|
| Branche éphémère (défaut) | 30 jours puis suppression auto |
| Branche liée à une PR | Supprimée au merge / close de la PR |
Branche persistante (--persistent) | Pas de suppression auto (Pro+) |
Cleanup horaire automatique. Destruction d'une branche libère les blocs copy-on-write.
« Merge » vers le parent
Le merge automatique de données n'est pas supporté (trop de cas conflictuels). Procédure recommandée : générer les migrations SQL depuis la branche, valider sur la branche, appliquer manuellement sur le parent via le SQL Editor du Studio.
Intégration preview environments Pool A
Les branches Pool C s'intègrent avec les preview environments Pool A. Workflow paas.toml :
[preview] enabled = true backend_branch = true # créer une branche Pool C par PR backend_project = "wzfbhd" # parent à brancher
À l'ouverture d'une PR : preview Pool A créé (monapp-pr-42.runtime.di2amp.com) + branche Pool C créée (pr42abc.runtime.di2amp.com) + variables d'environnement du preview pointant vers la branche. À la fermeture / merge : les deux sont détruits simultanément.
Plans
| Plan | Branches |
|---|---|
| Free | Non disponible |
| Pro | 5 branches actives max |
| Business | illimité |
| Entreprise | illimité + branches persistantes |
Sécurité et isolation
Une branche est un projet à part entière, avec ses propres credentials, son propre jwt_secret. Aucun croisement de données possible entre une branche et son parent au niveau auth.
Pour aller plus loin
Tarification associée
Branching facturé à l'heure de branche active (espace copy-on-write + ressources compute). Indicatif ~0,013 €/h en Pro. Voir tarifs.