Contexte
Je travaille dans une équipe qui cherche à mettre en œuvre des déploiements sans temps d'arrêt. Nous prévoyons d'utiliser une stratégie de déploiement bleu / vert pour y parvenir. En réalisant cette recherche, je réalise notamment à quel point il est difficile de modifier les bases de données. Une opération simple, comme renommer une colonne, peut prendre 3 cycles complets avant d'être complétée!
Il me semble que le déploiement complet d'un changement prend plusieurs cycles de publication, ce qui crée un potentiel d'erreur humaine. Dans l'article lié, il est montré que les modifications de code sont nécessaires pour 2 versions et qu'une migration de base de données est nécessaire pour 3 versions.
Ce que je cherche
Actuellement, si nous voulons nous souvenir de faire quelque chose, nous pouvons créer un ticket dans notre système de gestion des problèmes, ce qui crée un fouillis et peut également être déplacé vers un sprint ultérieur ou le retard accumulé par la direction; ou nous pouvons créer un commentaire TODO, qui sera probablement complètement oublié.
Ce que je recherche, c’est la manière dont un commentaire TODO peut être assorti d’un délai, et notre système d’intégration continue (actuellement indécis, que nous utiliserons) rejetterait la construction si ce délai était expiré.
Par exemple, si nous renommons une colonne, nous pourrions créer la migration initiale correspondante, puis deux commentaires TODO pour garantir la création des deux migrations restantes:
// TODO by v55: Create migration to move constraints to new column, remove references to old column in app
// TODO by v56: Create migration to drop old column
Cela semble assez simple à mettre en œuvre, mais je me demande si quelque chose comme cela existe déjà, car je ne veux pas réinventer la roue.
Pensées supplémentaires
Je pense que je pourrais souffrir du problème XY ici, étant donné que les déploiements progressifs et les déploiements bleu / vert sont considérés comme une pratique exemplaire. Il semble donc étrange que je ne trouve pas de solution pour rendre les mises à jour de base de données moins pénibles. Si vous pensez que je cherche à me tromper complètement, faites-le-moi savoir dans un commentaire! Cela dit, l'exemple de base de données que j'ai donné n'est qu'un exemple, et je pense que les commentaires de TODO avec les dates d'échéance seraient également utiles dans d'autres situations. Par conséquent, même si j'aborde cette situation en particulier de manière erronée, j'aimerais vraiment répondre à mes questions. question réelle aussi. Merci!
EDIT: Je viens de penser à une autre situation où cela pourrait être utile. Si vous utilisez Feature Toggles pour activer des parties de votre application lorsqu'elles sont prêtes, vous devez faire attention à les nettoyer, sinon vous risquez de vous retrouver avec Basculer la dette . Les commentaires avec des délais pourraient être un bon moyen de s'en souvenir.
TODO <Bug#>:
pour suivre les solutions de contournement des problèmes liés aux autres composants. Lorsqu'un bogue est effacé sur l'un de ces composants, vous pouvez facilement trouver et résoudre les solutions de contournement pertinentes. Il ne remplace pas un outil de suivi des problèmes, il facilite la maintenance.