tło
Pracuję w zespole, który chce wdrożyć wdrożenia bez przestojów. Aby to osiągnąć, planujemy zastosować niebiesko-zieloną strategię wdrażania. Jedną z rzeczy, które zdaję sobie sprawę z przeprowadzania badań, jest to, jak skomplikowane jest wprowadzanie zmian w bazie danych. Prosta operacja, taka jak zmiana nazwy kolumny, może potrwać 3 pełne cykle wydania, aż do jej zakończenia!
Wydaje mi się, że pełne wdrożenie zmiany wymagającej wielu cykli wydawniczych wprowadza wiele potencjalnych błędów ludzkich. W połączonym artykule pokazuje, że zmiany kodu są konieczne dla 2 wydań, a migracja bazy danych jest wymagana dla 3 wydań.
Czego szukam
Obecnie, jeśli chcemy coś zrobić, możemy utworzyć bilet w naszym systemie zarządzania problemami, który tworzy bałagan, a także może zostać przeniesiony do późniejszego sprintu lub zaległości przez kierownictwo; lub możemy utworzyć komentarz do zrobienia TODO, o którym prawdopodobnie całkowicie zapomnimy.
To, czego szukam, to sposób, w jaki komentarz TODO może mieć przed sobą termin, a nasz system ciągłej integracji (obecnie niezdecydowany, którego użyjemy) odrzuci kompilację, jeśli ten termin upłynie.
Na przykład, jeśli zmienimy nazwę kolumny, możemy utworzyć dla niej początkową migrację, a następnie dwa komentarze DO ZROBIENIA, aby zapewnić utworzenie pozostałych dwóch migracji:
// 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
Wydaje się to dość proste do wdrożenia, ale zastanawiam się, czy coś takiego już istnieje, ponieważ nie chcę ponownie wymyślać koła.
Dodatkowe przemyślenia
Wydaje mi się, że mogę tu mieć problem z XY, biorąc pod uwagę, że wdrażanie cykliczne i wdrożenia niebiesko-zielone są uważane za najlepszą praktykę, wydaje się dziwne, że nie mogę znaleźć rozwiązania, które sprawi, że aktualizacje bazy danych będą mniej bolesne. Jeśli uważasz, że szukam całkowicie złej rzeczy, daj mi znać w komentarzu! To powiedziawszy, przykład bazy danych, który podałem, jest tylko jednym przykładem i myślę, że komentarze TODO z terminami byłyby przydatne również w innych sytuacjach, więc nawet jeśli podejdę do tej konkretnej sytuacji zupełnie źle, naprawdę chciałbym odpowiedzieć na moje aktualne pytanie. Dzięki!
EDYCJA: Właśnie pomyślałem o innej sytuacji, w której może to być pomocne. Jeśli używasz funkcji przełączania funkcji do włączania części aplikacji, gdy są one gotowe, musisz uważać, aby je wyczyścić, w przeciwnym razie możesz skończyć z funkcją przełączania długu . Komentarze z terminami mogą być dobrym sposobem na zapamiętanie tego.
TODO <Bug#>:
do śledzenia obejść problemów z innymi komponentami. Po usunięciu błędu w jednym z tych elementów można łatwo znaleźć i rozwiązać odpowiednie obejścia. Nie zastępuje narzędzia do śledzenia problemów, ułatwia konserwację.