Слышал ли что-нибудь про Liquibase?

«Слышал ли что-нибудь про Liquibase?» — вопрос из категории DevOps и инфраструктура, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я активно использовал Liquibase в нескольких проектах для управления миграциями базы данных (Database Schema Migration). Это инструмент, который позволяет описывать изменения структуры БД (создание таблиц, добавление колонок, индексов) в декларативных файлах (XML, YAML, JSON или SQL) и версионировать их вместе с кодом приложения.

Как это работает на практике:

  1. Изменения описываются в файлах changelog.
  2. Liquibase отслеживает применённые изменения в служебной таблице DATABASECHANGELOG в целевой БД.
  3. При запуске (часто из CI/CD пайплайна) инструмент применяет только те изменения, которые ещё не были выполнены.

Пример changelog в формате YAML:

databaseChangeLog:
  - changeSet:
      id: 1
      author: dev
      changes:
        - createTable:
            tableName: person
            columns:
              - column:
                  name: id
                  type: int
                  autoIncrement: true
                  constraints:
                    primaryKey: true
              - column:
                  name: name
                  type: varchar(255)

Ключевые преимущества, которые я оценил:

  • Согласованность: Идентичная схема БД на всех окружениях (dev, staging, production).
  • Воспроизводимость: Новый разработчик или окружение могут быть подняты с нуля одной командой.
  • Откат изменений (Rollback): Возможность откатиться к предыдущей версии схемы, что критично для отката релиза.