Hintergrund
Ich arbeite in einem Team, das Bereitstellungen ohne Ausfallzeiten implementieren möchte. Wir planen eine blau / grüne Bereitstellungsstrategie, um dies zu erreichen. Eines der Dinge, die mir bei der Recherche klar werden, ist, wie kompliziert es wird, Datenbankänderungen vorzunehmen. Ein einfacher Vorgang wie das Umbenennen einer Spalte kann 3 vollständige Release-Zyklen dauern, bis sie abgeschlossen ist!
Es scheint mir, dass die vollständige Einführung einer Änderung mehrere Veröffentlichungszyklen in Anspruch nimmt und viel Potenzial für menschliches Versagen mit sich bringt. In dem verlinkten Artikel wird gezeigt, dass Codeänderungen für 2 Releases erforderlich sind und eine Datenbankmigration für 3 Releases erforderlich ist.
Was ich suche
Derzeit können wir, wenn wir uns daran erinnern möchten, etwas zu tun, ein Ticket in unserem Issue-Management-System erstellen, das Unordnung schafft und möglicherweise auch zu einem späteren Sprint oder dem Rückstand des Managements übergeht. oder wir können einen TODO-Kommentar erstellen, der wahrscheinlich komplett vergessen wird.
Was ich suche, ist eine Möglichkeit, dass ein TODO-Kommentar eine Deadline haben kann, und unser Continuous Integration-System (derzeit unentschlossen, welches wir verwenden) würde den Build ablehnen, wenn diese Deadline abgelaufen wäre.
Wenn wir beispielsweise eine Spalte umbenennen, können wir die ursprüngliche Migration für sie erstellen und anschließend zwei TODO-Kommentare, um sicherzustellen, dass die verbleibenden zwei Migrationen erstellt werden:
// 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
Dies scheint ziemlich einfach zu implementieren zu sein, aber ich frage mich, ob so etwas bereits existiert, weil ich das Rad nicht neu erfinden möchte.
Zusätzliche Gedanken
Ich habe das Gefühl, dass ich hier möglicherweise unter einem XY-Problem leide, da fortlaufende Bereitstellungen und blau / grüne Bereitstellungen als bewährte Methoden angesehen werden. Es scheint seltsam, dass ich keine Lösung finden kann, um Datenbankaktualisierungen weniger schmerzhaft zu gestalten. Wenn Sie der Meinung sind, dass ich mich komplett mit dem Falschen befasse, lassen Sie es mich bitte in einem Kommentar wissen! Das Datenbankbeispiel, das ich gegeben habe, ist jedoch nur ein Beispiel, und ich denke, dass TODO-Kommentare mit Fälligkeitsterminen auch in anderen Situationen nützlich sind. Selbst wenn ich mich dieser speziellen Situation ganz falsch nähere, würde ich wirklich gerne auf meine antworten eigentliche Frage auch. Vielen Dank!
EDIT: Ich dachte gerade an eine andere Situation, in der dies hilfreich sein könnte. Wenn Sie Feature Toggles verwenden, um Teile Ihrer App zu aktivieren, wenn sie bereit sind, müssen Sie darauf achten, sie zu bereinigen, da Sie andernfalls möglicherweise Toggle Debt erhalten . Kommentare mit Fristen könnten eine gute Möglichkeit sein, sich daran zu erinnern.
TODO <Bug#>:
Workarounds für Probleme mit anderen Komponenten nachverfolgen können . Wenn ein Fehler in einer dieser Komponenten behoben ist, können Sie die entsprechenden Problemumgehungen leicht finden und beheben. Es ersetzt keinen Issue Tracker und erleichtert die Wartung.