Миграции схемы данных: продолжаем использовать

Практика показала, что тема миграций в битрикс-сообществе хоть и не сильно обсуждаема, но интересна многим судя по количеству заинтересовавшихся разработчиков нашим решением  на GitHub.

6.png
[spoiler]
С момента последнего отчета о жизни нашего решения, мы продолжили его активно использовать на проектах и теперь с уверенностью можно сказать, что модуль полностью выполняет рутинную работу мигрирования структуры базы данных между проектами.

При использовании модуля мы придерживаемся следующей стратегии. Автомиграции используем при разработке нового проекта. Если же нужны безотказные обновления, например после релиза проекта,  используем сценарии. Сценарии - это те же миграции для модификации данных, например когда нужно единожды выполнить определенный функционал. Обновления публичных площадок происходит быстро без закрытия публичной части сайта.

Во время использования модуля появилась необходимость в интерфейсе командной строки при обновлениях. Основная проблема была в том, что некоторые скрипты миграций могут выполняться продолжительное время, что приводило к автоматической остановке скрипта при применении миграций в административной панели "1С-Битрикс".

В итоге, был добавлен режим командной строки, позволяющий работать с миграциями в консоли, который предоставляет два больших преимущества:
  • Время применения миграций не ограничено таймаутом сервера, с которым можно столкнуться при работе из административной панели. Актуально для "ручных" миграций по изменению структуры архитектуры проекта;
  • Появилась возможность автоматизировать применение миграцией с обновлением кода. Теперь при обновлении кода на production-сервере можно одновременно обновить структуру БД, на которую опирается новый код, не получив при этом фатальных ошибок. Для реализации подхода можно использовать "CYPB Git".
Файл для работы с миграциями из командной строки расположен по пути: bitrix/tools/ws_migrations.php.

2.png
Вызов помощи отображает список доступных действий

3.png
Просмотр списка подготовленных миграций

4.png
Применение миграций

5.png
Откат последнего изменения
Также были добавлены некоторые технические детали улучшающие работу модуля при работе с автоматическими миграциями.
Наша команда и дальше продолжит развивать решение. Ждем от вас обратной связи по его использованию.

Более детальное описание модуля доступно на GitHub:
https://github.com/worksolutions/bitrix-module-migrations

Ссылка на модуль в Marketplace:
http://marketplace.1c-bitrix.ru/solutions/ws.migrations/


P.S.
Силами команды сайта http://bitrix.expert был записан подкаст, раскрывающий особенности модуля миграций:
http://bitrix.expert/tekhnologii/migratsii-bazy-dannykh-v-bitriks-kak-eto-delayut/