Довольно часто техническим менеджерам, системным аналитикам, тестировщикам и разработчикам приходится исследовать, какие артефакты остаются в базах данных после разных процессов. Особенно если вы исследуете группу связанных сервисов, инкапсулирующих большое количество бизнес-логики со времен динозавров.
Gaudi — консольная утилита, позволяющая автоматизировать отслеживание изменений данных в базах PostgreSQL и генерировать человекочитаемые отчеты.
- В конфигурационном файле
config.ymlуказываются настройки соединения для каждой БД, с которой мы будем работать. - При запуске с аргументом
-a installутилита стучится в каждую БД и создает для каждой таблицы в схемеpublicтриггеры наinsert,update,delete. - Затем она создает в схеме
tempтаблицуgaudi_log_table, куда будут записываться измененные данные. - После этого делаем запрос в сервисы через API (или как они у вас работают) и смотрим в таблицу
gaudi_log_table, в нее запишутся все изменения со всех таблиц. - Генерируем отчет с параметром
-a report, он будет сохранен в директории./reports. - После изучения удалить все триггеры и таблицу с логами можно запуском утилиты с параметром
-a uninstall.
Накатить отслеживание изменений:
bundle exec ruby gaudi.rb -d service1,service2 -a installСгенерировать HTML-отчет об изменениях в директорию ./reports
bundle exec ruby gaudi.rb -d service1,service2 -a reportОткатить отслеживание изменений:
bundle exec ruby gaudi.rb -d service1,service2 -a uninstall- Установить Ruby не ниже версии 3.0 с помощью любого менеджера версий: RVM или rbEnv.
- Склонировать репозиторий
git clone https://github.com/creadone/gaudi.git. - Перейти в директорию репозитория
cd gaudi. - Установить модули проекта
bundle install. - Запустить
bundle exec ruby gaudi.rb -d service1,service2 -a install.
Иногда RVM ругается и выплевывает при сборке Ruby в качестве ошибки что-то невнятное, в этом случае нужно проверить версию openssl и при необходимости установить свежую.
В локальном репозитории выполнить git pull