@razer96

Могут ли два микросервиса выполняющие схожую безнес логику, обращаться к одной базе данных?

Всем доброго дня. Опытные DevOps подскажите)) Могут ли два микросервиса быть зависимыми друг от друга так, что у них будет общая база данных?

В кратце. Есть один сервис( дадим ему условное имя А ) на котором крутится сервер Socket.io, и он обрабатывает все ивенты сокета и частично ему нужен доступ к базе данных со всей логикой связанной с комнатами?
И есть второй сервис( дадим ему условное имя В), который полностью реализует бизнес логику комнат и их функционала.

Например. Некий пользователь решил создать новую комнату. Он посылает запрос на сервис В, для того чтобы сохранить созданную им комнату( в модели данной комнаты хранится массив подключений ). Дальше пользователь должен подключиться к этой комнате, и он уже тригерит ивент joinRoom на сервисе A. Сервис А должен сохранить подключенного пользователя в комнату. И вот для подобной ситуации, я думаю нужна общая база. Можно ли так сделать? И какие от этого могут быть недостатки? Заранее спасибо
  • Вопрос задан
  • 523 просмотра
Решения вопроса 2
Не плодите лишние микросервисы. Вам же будет сложней в отладке и тестировании.
По Вашему вопросу - плохая практика использовать одну бд в разных микросервисах.
Ответ написан
@nrgian
Могут, если сильно хочется.
Но не нужно, в общем случае.

Идея микросервисов и цель их создания - в их независимости друг от друга, в автономности.

Поэтому в идеальном случае у микросервисов:

  • и БД должны быть независимыми
  • и запросы, по возможности, должны быть такими, чтобы не приходилось на каждый чих дергать по цепочке все до единого микросервисы


если у вас не так:
то в проектировании ошибка, которая аукнется потом проблемами по производительности и по масштабированию - а масштабирование это, собственно, и есть то, за ради чего микросервисы придуманы.

исключение - какие-то общесистемные вещи, типа микросервиса, отвечающего за аутентификацию/авторизацию.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы