Для чего нужны миграции базы данных на проектах

22 ноября 2019 г.

Максим Лавриненко, директор по информационным технологиям

  • Разработка крупных интернет-магазинов
  • Техподдержка и доработки веб-проектов
  • Внедрение порталов и CRM на Битрикс 24
  • Разработка порталов и сервисов

TL;DR: Чтобы повысить качество и уменьшить риски.

Приведенный ниже подход используется при разработке веб-проектов на различных фреймворках. В качестве примера возьмем разработку на «Битриксе», потому что на нем делается очень много сайтов в России, «инфоблоки» на слуху, поэтому так будет понятнее, о чём идёт речь.

С точки зрения руководителя проекта со стороны заказчика, который немного подкован в администрировании Битрикс, задача, которая требует создания нового инфоблока и вывода информации из этого инфоблока в публичную часть, схематично решается в два шага:

Однако, с точки зрения программиста, использующего современные подходы при разработке, практически что угодно «через интерфейс системы» имеет ряд существенных недостатков:

Но непосредственно программист — не один человек, делающий проект. Крупные проекты делаются усилиями десятков, а иногда и сотен разработчиков, и когда на проекте столько много голов, каждая может начать «тянуть» в свою сторону, с точки зрения технологий, подходов и других аспектов. Поэтому в дело вступает технический лидер команды проекта, осуществляя надзор над правками кодовой базы проекта — ревью. Но как ему убедиться, что изменения, сделанные в базу данных, корректны? Если их сделали вручную, то никаких «артефактов» этих действий не остается. И вот мы получаем ещё одну проблему:

Что же делать? Писать миграции — код, который вносит нужные изменения в базу данных, а также позволяет их отменить.

Ура! Наши проблемы решены, но мы решили даже те проблемы, которые сразу не было видно. Например:

В случае наличия миграции, проблема уходит — миграция=файл, а значит её легко сохранить в контроле версий и передать с помощью её возможностей.

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

В большинстве случаев миграции выполняются крайне быстро, проблема теряет актуальность.

Идеален ли этот подход? Как и все в нашей жизни — отнюдь. Он хорош, но порой может «потребовать» больше, чем отсутствие какого-либо подхода:

Наша практика показывает, что это несущественные недостатки.

Мы не предлагаем клиентам услугу написания миграций. Это необходимость для обеспечения качественного подхода при разработке, и работы по написанию миграций всегда будут в составе работ для задач, где меняется структура данных или же сами данные.