Паттерн Database per service


Слово "per" в английском означает "за", "в", "на" или "каждый", когда речь идет о количестве или частоте

Контекст
Проблемная Маша:
Мы тут на микрах разрабатываем маркетплейс, не понимаем какую структуру базы данных сделать...
Выручающий Саша:
А в чем проблема сделать как обычно таблички order, customer и т.д. в одной базе?
Проблемная Маша:
  1. Сервисы мы хотим слабосвязанные, у нас кросс функциональные команды разработчиков, мы хотим независимо разрабатывать, развертывать да и масштабировать микры.
  2. И для одних микров у нас лучше подходит реляционная PostgreSQL, а для некоторых луче MongoDB
Выручающий Саша:
Ну, милая, тогда без вариантов вам нужен паттерн Database per service
Проблема
Микросервис надо сделать независимой частью приложения, каким образом тогда обеспечить хранение данных в приложении?
Решение
Суть в том, чтобы сделать таблички, относящиеся к определенному сервису недоступными всем остальным. Теперь только через этот сервис можно достучаться к этим данным!

Это значит, что никаких реляционных связей с табличками, не относящимся к микру не должно быть.
И доступ к нашим табличкам должен иметь только наш микр.

Какие есть варианты:
  • Private-tables-per-service – каждый сервис работает со своими табличками, к которым только он имеет доступ.
  • Schema-per-service – каждый сервис работает со своей схемой в базе данных.
  • Database-server-per-service – каждый сервис работает со своей базой данных.
Переход к Database per service
Онлайн-школа профессионального программирования на java для коммерческих разработчиков и соискателей.
2 главные задачи, которые мы решаем:
  1. Трудоустройство и успешное прохождение испыталки.
  2. Переход на современный стек middle+
Наше главное достояние:
Менторская поддержка 24/7 и обучение в формате живого общения
Получить консультацию по обучению