Фон
Я работаю в команде, которая стремится внедрить развертывание без простоев. Мы планируем использовать сине-зеленую стратегию развертывания для достижения этой цели. Одна из вещей, которые я осознаю, выполняя исследования, это то, насколько сложно вносить изменения в базу данных. Простая операция, такая как переименование столбца, может занять 3 полных цикла выпуска, пока она не будет завершена!
Мне кажется, что полное развертывание изменения в течение нескольких циклов выпуска может привести к человеческим ошибкам. В связанной статье показано, что изменения кода необходимы для 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 с указанием сроков будут полезны и в других ситуациях, поэтому даже если я неправильно подхожу к этой конкретной ситуации, мне бы очень хотелось получить ответы на свои вопросы. актуальный вопрос тоже. Спасибо!
РЕДАКТИРОВАТЬ: я просто подумал о другой ситуации, где это может быть полезно. Если вы используете Feature Toggles для включения частей вашего приложения, когда они будут готовы, вы должны быть осторожны, чтобы очистить их, в противном случае вы можете получить Toggle Debt . Комментарии со сроками могут быть хорошим способом запомнить это.
TODO <Bug#>:
для отслеживания обходных путей для проблем с другими компонентами. Когда ошибка устранена в одном из этих компонентов, вы можете легко найти и устранить соответствующие обходные пути. Он не заменяет систему отслеживания проблем, он облегчает обслуживание.