advanced
Migrations
Меняйте schemas и data безопасно через versioned steps, backwards-compatible deploys, rollbacks и tested migration windows.
Миграции схемы и данных безопасно меняют прод-структуру между деплоями. Хорошая практика: версионированные файлы миграций, обратно совместимые expand-шаги (добавить nullable колонку → dual-write/backfill → переключить чтение → удалить старое), тест на копии прод-данных и план отката, когда версии приложения и БД могут расходиться.
деплой 1: ADD COLUMN nullable
деплой 2: backfill job + приложение пишет в обе колонки
деплой 3: читаем новую, перестаём писать старую
деплой 4: DROP старой колонки
Долгие миграции — batch-обновления по диапазонам ключей, throttling и online index creation, чтобы не держать блокировку таблицы минутами.
На интервью: разберите zero-downtime переименование колонки или смену типа; инструменты (Flyway, Liquibase, Prisma, Alembic) как механика, не замена дизайна совместимости.
Типовые ошибки: блокирующий `ALTER` на огромных таблицах; нарушение порядка деплоев; необратимые преобразования без backup; миграции «на пустую таблицу»; непротестированный down в панике.
Компромисс — безопасность деплоя и обратимость против более медленного многофазного rollout и ветвления логики приложения на переходный период.
Чеклист:
- Опишите фазы expand/contract миграции.
- Спланируйте идемпотентность backfill и размер batch.
- Согласуйте деплой приложения с версией схемы.
- Тест на реалистичном объёме и блокировках.
- Задокументируйте rollback и repair данных.