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