|
| 1 | +# 56. Rollbacks et Migrate Down |
| 2 | + |
| 3 | +Date : 2024-12-19 |
| 4 | + |
| 5 | +## État |
| 6 | + |
| 7 | +Draft |
| 8 | + |
| 9 | +## Contexte |
| 10 | + |
| 11 | +Nous souhaitons clarifier les procédures de rollback sur l'environnement production (retour en arrière de version classiquement). |
| 12 | +Meme si nous préférons privilégier l'application d'un patch en production pour résoudre un incident, il peut être nécessaire de faire un rollback de version, selon la nature de l'incident. |
| 13 | +Dans le contexte actuel, l'application d'un patch est une opération longue (25 min minimum). Une semi-automatisation permettrait d'amoindrir ce délai et de préférer cette solution au rollback de version dans certains cas. |
| 14 | + |
| 15 | +Les rollbacks de versions ne contenant pas de migration peuvent être effectués aujourd'hui en production. Pour cela, on redéploie la version précédante sur toutes les apps simultanément. |
| 16 | + |
| 17 | +Concernant les versions avec migration de données, le rollback est plus dangereux : |
| 18 | +- risque de perte de données, |
| 19 | +- un ordre d’exécution incertain peut causer des deadlocks, |
| 20 | +- incertitude quand à la qualité des « down » développés : pas toujours écrits, pas de tests, pas de validation… |
| 21 | +- Nécessité de synchroniser avec les responsables des différents incréments pour s’assurer que tout va bien se passer |
| 22 | +- Nécessité de bloquer les recettes potentielles en cours et corriger l'environnement de recette avant de refaire une Mise En Production. |
| 23 | + |
| 24 | +A l'avenir, le déploiement continu permettra de résoudre une partie des problèmes rencontrés et de limiter les risques. |
| 25 | +Dans le contexte d’aller vers du déploiement plus continu, l’effort à mettre transite ainsi vers notre rapidité à mettre en production. |
| 26 | +Le lien entre les captains et les équipes de dev reste essentiel, en cas de soucis les équipes doivent rester alerte pour prévenir de leurs incertitudes au plus tôt. Côté captains il faut continuer à bien remonter les alertes pour créer cet échange le plus rapidement possible. |
| 27 | + |
| 28 | +### Solution |
| 29 | + |
| 30 | +**Description** |
| 31 | + |
| 32 | +Après discussion en équipe, les captains proposent les préconisations suivantes : |
| 33 | +- Les PRs de migration de données ne doivent contenir que la migration. Idéalement dans 2 MEP différentes. |
| 34 | +- Séparer le code pour pouvoir revert plus facilement l’une ou l’autre. |
| 35 | + |
| 36 | + (Idéalement, avoir une MEP échelonnée elles sont dans deux MEP différentes) |
| 37 | +- Les captains sont au courant au plus tot => On aimerait être reviewer de tous les scripts de migration |
| 38 | +- Nos précos pour les scripts de migration |
| 39 | + - Les migrates down sont obligatoires |
| 40 | + |
| 41 | + (on peut en avoir besoin meme si on les fait manuellement, c’est une aide précieuse) |
| 42 | + |
| 43 | + - On doit être capable de migrate up => migrate down => migrate up |
| 44 | + |
| 45 | + Donc les scripts de migrations doivent être Idempotent, |
| 46 | + |
| 47 | + pas de modification de type, |
| 48 | + |
| 49 | + pas de pertes ni modifications de données (=> écrire un script différent dans ce cas, qui nécessitera une intervention captains, hors phase de mise en production) |
| 50 | + |
| 51 | + La clause default sur le create/alter table est autorisée. |
| 52 | + |
| 53 | + |
| 54 | +**Avantage(s):** |
| 55 | +- Possiblité de mitiguer rapidement un incident en executant des rollbacks en production. |
| 56 | +- Pas de risque de perte de données sur un rollback. |
| 57 | + |
| 58 | +**Inconvénient(s):** |
| 59 | +- Risque de délai supplémentaire pour les PR avec migration. |
| 60 | + |
| 61 | +## Décision |
| 62 | + |
| 63 | +## Conséquences |
0 commit comments