Фон
Я працюю в команді, яка хоче реалізувати розгортання з нульовим простоєм. Для цього ми плануємо використовувати стратегію синього / зеленого розгортання. Однією з речей, які я усвідомлюю при проведенні дослідження, є те, наскільки складним є внесення змін до бази даних. Така проста операція, як перейменування стовпця, може тривати три цикли повного випуску, поки не буде завершено!
Мені здається, що повне впровадження змін вимагає декількох циклів випуску, вкладає багато потенціалу для людських помилок. У пов'язаній статті видно, що зміни коду необхідні для 2 випусків, а для 3 випусків потрібна міграція бази даних.
Що я шукаю
В даний час, якщо ми хочемо щось запам'ятати, ми можемо створити квиток у нашій системі управління випусками, що створює безлад, а також може перейти до більш пізнього спринту або відставання керівництвом; або ми можемо створити коментар TODO, про який, ймовірно, забудуться повністю.
Що я шукаю, це спосіб, коли коментар TODO може мати крайній термін проти нього, і наша система безперервної інтеграції (поточна невизначеність, яку ми будемо використовувати) відхилить збірку, якби цей термін закінчився.
Наприклад, якщо ми перейменовуємо стовпець, ми могли б створити для нього початкову міграцію, а потім два коментарі TODO, щоб забезпечити створення двох інших міграцій:
// 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
Це здається досить простим у виконанні, але мені цікаво, чи щось подібне вже існує, тому що я не хочу заново вигадувати колесо.
Додаткові думки
Я відчуваю, що тут я можу страждати від проблеми XY, враховуючи, що розгортання розгортання та синьо / зелені розгортання вважаються найкращою практикою, здається дивним, що я не можу знайти рішення для того, щоб зробити оновлення бази даних менш болючими. Якщо ви думаєте, що я повністю розглядаю неправильну річ, будь ласка, повідомте мене про це у коментарі! При цьому, приклад бази даних, який я наводив, є лише одним із прикладів, і я думаю, що коментарі TODO з термінами здачі були б корисні і в інших ситуаціях, тому навіть якщо я підходжу до цієї конкретної ситуації все неправильно, я б дуже хотів відповісти на свою власне питання теж. Дякую!
EDIT: Я просто думав про іншу ситуацію, коли це може бути корисним. Якщо ви використовуєте Feature Toggles, щоб увімкнути частини програми, коли вони будуть готові, ви повинні бути обережними, щоб очистити їх, інакше у вас може виникнути проблема Toggle Debt . Коментарі з термінами можуть стати гарним способом пам’ятати про це.
TODO <Bug#>:
для відстеження способів вирішення проблем з іншими компонентами. Коли помилка очищена на одному з цих компонентів, ви можете легко знайти та вирішити відповідні обхідні шляхи. Він не замінює трекер випуску, він полегшує обслуговування.