Микросервисы и изменения в базе данных

#database #microservices

Вопрос:

У нас есть микросервисы и DDL-скрипты для базы данных в качестве ресурсов в файле jar, которые развертываются на микросервисе start с использованием liquibase/flyway. Это выглядит нормально для DDL.

Что делать с DML? Мы должны создать новый файл jar с помощью сценариев DML, а затем повторно развернуть микросервис? Или будет лучше иметь отдельные развертывания для баз данных и микросервисов?

Как экспортировать/импортировать данные между средами (dev,sit,uat и т.д.)?

Если микросервис поддерживает операции CRUD, можем ли мы использовать микросервис для экспорта/импорта данных? Т. Е. в среде разработки мы настраиваем данные, затем экспортируем в json и импортируем в uat с помощью микросервиса и json.

Ответ №1:

Олег, хороший вопрос. Я предлагаю отделить развертывание базы данных от развертывания приложений и принять стратегию GitOps (CD) для обоих.

Конвейер развернет БД (применяя DDL), и вы будете контролировать поток-это то, что называется практикой сбора данных. https://www.truedataops.org

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

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

Например, Oracle GoldenGate может помочь в этом процессе. https://www.oracle.com/integration/goldengate/

Но мне интересно, почему вы переносите данные из сред, относящихся к различным этапам жизненного цикла вашего продукта (данные разработчиков обычно являются непроизводственными данными, также не рекомендуется использовать производственные данные на этапах разработки-проблемы безопасности/защиты).