HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: devops, liquibase, flyway, версионирование данных бд</p>
1 <p>Теги: devops, liquibase, flyway, версионирование данных бд</p>
2 <p>Используя IaС-инструменты, мы можем поднимать и деполитизировать окружения с необходимыми версиями приложений по кнопке. Но ряд приложений помимо изменений кода требуют изменения структуры данных или самих данных в БД. Работать с ручным выполнением миграций в рамках процесса непрерывной поставки неэффективно.</p>
2 <p>Используя IaС-инструменты, мы можем поднимать и деполитизировать окружения с необходимыми версиями приложений по кнопке. Но ряд приложений помимо изменений кода требуют изменения структуры данных или самих данных в БД. Работать с ручным выполнением миграций в рамках процесса непрерывной поставки неэффективно.</p>
3 <h4>Такой метод не вписывается ни в один из принципов конвейерного подхода поставки ПО</h4>
3 <h4>Такой метод не вписывается ни в один из принципов конвейерного подхода поставки ПО</h4>
4 <p>К счастью, для решения этой проблемы есть инструменты. Работая в различных компаниях, я встречал несколько внутренних решений для управления миграциями. Однако большинство из них были ограничены, хотя некоторые из них даже повторяли функционал (идемпотентность, работа с версионированием самих файлов описания миграций) современных систем управления данными БД.</p>
4 <p>К счастью, для решения этой проблемы есть инструменты. Работая в различных компаниях, я встречал несколько внутренних решений для управления миграциями. Однако большинство из них были ограничены, хотя некоторые из них даже повторяли функционал (идемпотентность, работа с версионированием самих файлов описания миграций) современных систем управления данными БД.</p>
5 <h4>Перед тем, как мы перейдём к инструментам, давайте затронем проблемы, которые они решают:</h4>
5 <h4>Перед тем, как мы перейдём к инструментам, давайте затронем проблемы, которые они решают:</h4>
6 <ol><li>Описание миграций в виде кода - в качестве бонуса получаем совместную работу над изменениями, удобный diff изменений DBA review;</li>
6 <ol><li>Описание миграций в виде кода - в качестве бонуса получаем совместную работу над изменениями, удобный diff изменений DBA review;</li>
7 <li>Версионирование самих миграций - каждое изменение имеет свою версию, а на основе содержимого изменений можно организовывать идемпотентные миграции;</li>
7 <li>Версионирование самих миграций - каждое изменение имеет свою версию, а на основе содержимого изменений можно организовывать идемпотентные миграции;</li>
8 <li>Возможность применять миграции отдельно, перед деплоем приложений, либо самим приложением во время первого запуска после деплоя.</li>
8 <li>Возможность применять миграции отдельно, перед деплоем приложений, либо самим приложением во время первого запуска после деплоя.</li>
9 </ol><h4>В результате решения вышеописанных задач и построения процесса непрерывной поставки мы можем:</h4>
9 </ol><h4>В результате решения вышеописанных задач и построения процесса непрерывной поставки мы можем:</h4>
10 <ol><li>Обнаруживать и исправлять ошибки быстрее - работа с миграциями в виде кода, ревью и тесты помогут в этом;</li>
10 <ol><li>Обнаруживать и исправлять ошибки быстрее - работа с миграциями в виде кода, ревью и тесты помогут в этом;</li>
11 <li>Вносить изменения увереннее и быстрее - один раз пишем сценарии миграции, фиксируем их в системе контроля версий и не заботимся о том, что они будут выполнены иначе, вручную на разных средах;</li>
11 <li>Вносить изменения увереннее и быстрее - один раз пишем сценарии миграции, фиксируем их в системе контроля версий и не заботимся о том, что они будут выполнены иначе, вручную на разных средах;</li>
12 <li>Повысить качество внесения кодовых изменений - единый инструмент, единожды описанный код, который выполняется везде одинаково;</li>
12 <li>Повысить качество внесения кодовых изменений - единый инструмент, единожды описанный код, который выполняется везде одинаково;</li>
13 <li>Достичь автоматизации в пользу скорости и качества выполнения изменений.</li>
13 <li>Достичь автоматизации в пользу скорости и качества выполнения изменений.</li>
14 </ol><h4>Инструменты</h4>
14 </ol><h4>Инструменты</h4>
15 <p>Определив задачи, проблемы и результат их решения, я бы хотел отметить актуальными на момент публикации этой заметки следующие инструменты для управления данными БД: liquibase, flyway.</p>
15 <p>Определив задачи, проблемы и результат их решения, я бы хотел отметить актуальными на момент публикации этой заметки следующие инструменты для управления данными БД: liquibase, flyway.</p>
16 <p>Первый появился в 2006 году и начал активно развиваться с появлением flyway. До сих пор оба инструмента актуальны и активно развиваются. Мы не будем затрагивать сравнительную характеристику, учитывая активность развития обоих за последний год. В качестве примера возьмём liquibase, о котором поговорим в следующей заметке.</p>
16 <p>Первый появился в 2006 году и начал активно развиваться с появлением flyway. До сих пор оба инструмента актуальны и активно развиваются. Мы не будем затрагивать сравнительную характеристику, учитывая активность развития обоих за последний год. В качестве примера возьмём liquibase, о котором поговорим в следующей заметке.</p>
17  
17