На Heroku, как только вы нажимаете новый код, экземпляры веб-сервисов перезапускаются... даже если добавления/изменения базовой базы данных (через синхронизацию или переход на юг) еще не были применены.
Во многих случаях это может привести к появлению безобидных ошибок, так как синхронизация/миграция запускается вскоре после этого. Но я обеспокоен тем, что в некоторых случаях новый код может частично работать, делая неожиданные изменения в базе данных предварительной миграции.
Какой правильный способ быть в безопасности от этого риска?
Один из способов может заключаться в том, чтобы добавить syncdb/migrate в Procfile, чтобы он запускался до перезапуска сети. Но в случае нескольких экземпляров или, возможно, даже случая, когда один экземпляр старого кода остается включенным до тех пор, пока не будет известен один экземпляр нового кода, все еще существует вариант проблемы, где код разговаривая с БД с несогласованной схемой.
Есть ли функция удержания всех веб-экземпляров (или общая передовая практика), позволяющая завершить миграцию без веб-трафика?
Или меня слишком беспокоит риск, который практически ничтожен?