В публикации о том, как мы делаем деплой на проектах в комментариях зашла речь о том, как быть с миграциями данных. Мы как раз работали над этой проблемой и обещали поделиться результатами.
Сначала немного предистории.
В идеальных условиях проектом занимается только один программист, знающий все его тонкие нюансы. Это легко осуществить в небольшой компании. Но чем масштабнее проект, тем больше людей нужно привлекать для работы над ним, и тем сложнее поддерживать актуальные данные между разработчиками.
Изначально нам хватало удаленной базы данных. Разработчики видели актуальную версию схемы данных, но она часто зависала, плюс во время релиза мы могли забыть перенести некоторые изменения на production, что приводило к ошибкам.
Однажды нам это надоело, и мы решили, что программистам следует работать с локальной базой данных без доступа к административной панели. Все изменения делались с помощью API в файлах миграций. Требуется добавить инфоблок новостей? Пиши код на API. Переносить изменения в базу данных при релизе стало проще, но программистам приходилось постоянно отвлекаться на написание миграций на API, даже не смотря на все вспомогательные скрипты, которые мы использовали. Хотя над некоторыми проектами мы и сейчас так работаем.
Первые наработки будущего модуля появились еще во время поездки на зимнюю партнерскую конференцию «1С-Битрикс». Но, как часто это бывает, внутренние проекты делаются в самую последнюю очередь. Поэтому только сейчас, спустя несколько месяцев, мы готовы показать результаты работы.
Основная часть работы с данными идет в инфоблоках, поэтому в первую версию у нас вошли именно они. Наш модуль миграций умеет переносить между версиями проекта типы инфоблоков, сами инфоблоки и их свойства, которые входят в коробку. Также под миграции можно вынести разделы инфоблоков, если того требует бизнес-логика проекта.
Модуль расширяем, то есть в миграции можно будет подключить любые сущности, которые есть в “1С-Битрикс”. Модуль находится в публичном репозитории на github, поэтому у нас есть надежда, что количество сущностей поддерживаемых модулем будет расти с помощью сообщества.
В случае развития функционала модуля планируется периодически выкладывать стабильную сборку в виде модуля на маркетплейс. Сейчас на него загружена первая версия.