Migrations de schéma sans temps d'arrêt
Le problème
Pendant une publication, deux versions de code tournent ensemble. Une migration qui modifie une colonne d'un coup en casse une. Donc chaque changement structurel est décomposé en une séquence d'étapes, chacune sûre par elle-même.
La séquence sûre
Ajouter. Une nouvelle colonne, nullable, sans toucher à l'existante.
Double écriture. Le code écrit dans les deux colonnes et préfère lire l'ancienne.
Remplissage. En petits lots, en dehors des heures de pointe, avec la possibilité de s'arrêter.
Changement de lecture. Après vérification que les données sont identiques.
Suppression. Dans une publication séparée, après avoir confirmé que personne ne lit.
Règles de prudence
Une migration sur une grande table peut bloquer. Vérifiez le comportement de verrouillage dans votre moteur et exécutez sur une copie de la taille de la production. Une sauvegarde avant, et un script de retour en arrière écrit à l'avance — pas improvisé sous pression.
Pour aller plus loin
Gérez les migrations comme du code en contrôle de version, avec exécution automatique et contrôle de l'ordre. Et ne mélangez pas un changement de schéma avec un changement de logique dans la même publication : quand quelque chose se casse, vous voulez savoir lequel des deux est en cause.