Версионирование данных БД в рамках процесса непрерывной поставки. Часть 1 | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Professional
-3%
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Базы данных
-12%
Agile Project Manager
-5%
Android Developer. Professional
-11%
Microservice Architecture
-5%
C++ Developer. Professional
-5%
Highload Architect
-6%
JavaScript Developer. Basic
-8%
Backend-разработчик на PHP
-9%
Разработчик IoT
-13%
PostgreSQL
-8%
Подготовка к сертификации Oracle Java Programmer (OCAJP) Framework Laravel Cloud Solution Architecture Reverse-Engineering. Professional Архитектура и шаблоны проектирования Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Экcпресс-курс «ELK»
-10%
Инфраструктурная платформа на основе Kubernetes
-6%
Administrator Linux.Basic
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Дизайн сетей ЦОД
-13%
PostgreSQL
-8%
Разработчик программных роботов (RPA) на базе UiPath и PIX Reverse-Engineering. Professional Внедрение и работа в DevSecOps Administrator Linux. Advanced Infrastructure as a code in Ansible Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Версионирование данных БД в рамках процесса непрерывной поставки. Часть 1

DevOpsDeep3Site.png

Используя IaС-инструменты, мы можем поднимать и деполитизировать окружения с необходимыми версиями приложений по кнопке. Но ряд приложений помимо изменений кода требуют изменения структуры данных или самих данных в БД. Работать с ручным выполнением миграций в рамках процесса непрерывной поставки неэффективно.

Такой метод не вписывается ни в один из принципов конвейерного подхода поставки ПО

К счастью, для решения этой проблемы есть инструменты. Работая в различных компаниях, я встречал несколько внутренних решений для управления миграциями. Однако большинство из них были ограничены, хотя некоторые из них даже повторяли функционал (идемпотентность, работа с версионированием самих файлов описания миграций) современных систем управления данными БД.

Перед тем, как мы перейдём к инструментам, давайте затронем проблемы, которые они решают:

  • Описание миграций в виде кода – в качестве бонуса получаем совместную работу над изменениями, удобный diff изменений DBA review;
  • Версионирование самих миграций – каждое изменение имеет свою версию, а на основе содержимого изменений можно организовывать идемпотентные миграции;
  • Возможность применять миграции отдельно, перед деплоем приложений, либо самим приложением во время первого запуска после деплоя.

    В результате решения вышеописанных задач и построения процесса непрерывной поставки мы можем:

  • Обнаруживать и исправлять ошибки быстрее – работа с миграциями в виде кода, ревью и тесты помогут в этом;
  • Вносить изменения увереннее и быстрее – один раз пишем сценарии миграции, фиксируем их в системе контроля версий и не заботимся о том, что они будут выполнены иначе, вручную на разных средах;
  • Повысить качество внесения кодовых изменений – единый инструмент, единожды описанный код, который выполняется везде одинаково;
  • Достичь автоматизации в пользу скорости и качества выполнения изменений.

    Инструменты

    Определив задачи, проблемы и результат их решения, я бы хотел отметить актуальными на момент публикации этой заметки следующие инструменты для управления данными БД: liquibase, flyway.

    Первый появился в 2006 году и начал активно развиваться с появлением flyway. До сих пор оба инструмента актуальны и активно развиваются. Мы не будем затрагивать сравнительную характеристику, учитывая активность развития обоих за последний год. В качестве примера возьмём liquibase, о котором поговорим в следующей заметке.

  • Не пропустите новые полезные статьи!

    Спасибо за подписку!

    Мы отправили вам письмо для подтверждения вашего email.
    С уважением, OTUS!

    Автор
    0 комментариев
    Для комментирования необходимо авторизоваться