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 данных.