Пишете ли миграции базы данных самостоятельно или используете инструменты
Что проверяют
Есть ли у вас опыт эволюции схемы на живом проекте, где база уже наполнена, а приложение не останавливается. Ответ «использую Alembic» ничего не решает: интересно, что вы делаете с тем, что он сгенерировал, и как выкатываете изменение, не уронив работающий код.
Как отвечать
Назовите инструмент и сразу его границы. В проектах на SQLAlchemy это Alembic, в Django встроенные миграции. Автогенерация (alembic revision --autogenerate) даёт черновик: она сравнивает метаданные моделей с базой и не понимает переименований, видит их как удаление плюс добавление колонки, часто пропускает изменение типа, серверные умолчания, частичные индексы и ограничения. Поэтому файл всегда читается и правится руками, а за down_revision следят, чтобы история оставалась линейной; разъехавшиеся ветки сводит alembic merge.
Перенос данных пишется отдельным шагом через op.execute или op.bulk_insert, а не через ORM-модели: модели меняются, и старая миграция однажды перестанет исполняться.
Главное, что стоит проговорить, это совместимость. Выкатка не атомарна, какое-то время старый код работает с новой схемой. Отсюда порядок в несколько шагов: добавить nullable-колонку, выкатить код, который её пишет, забэкофиллить пачками, только потом ставить NOT NULL. Удаление колонки разносится на два релиза. Тяжёлые операции идут с lock_timeout, индексы строятся через CREATE INDEX CONCURRENTLY (в Django это AddIndexConcurrently и миграция с atomic = False).
Где спотыкаются
Доверяют автогенерации вслепую. Переименование поля уезжает в прод как DROP плюс ADD, и содержимое колонки исчезает на самой безобидной с виду правке.
Второе: пишут downgrade формально или оставляют pass. Откат схемы редко возвращает данные, поэтому честный ответ это прямая совместимость и резервная копия, а не вера в кнопку отката.
Третье: применяют миграции при старте приложения. Несколько реплик поднимаются одновременно и гонятся за одной блокировкой, а массовый UPDATE без батчей на большой таблице держит её до конца выкатки.