@Dr3g0nra1der
Backend Java Developer

Как следует разбить микросервисы?

Встал вопрос разработки ПО для devrel специалистов. Сейчас система находится в стадии проектирования для MVP. Есть некоторые вопросы насчет архитектуры и делигирования задач микросервисам.

Дано:

Нужен функционал аутентификации, взаимодействия с сообществом (опросы, посты итд) и фидбека. Эти 3 модели будут использовать +- похожую модель юзера с незначительными различиями. Запросы от каждого микросервиса к Auth service будут замедлять систему, а хранить одинаковые данные в разных БД нецелесообразно. Как быть в такой ситуации?

656e3d0db6624933519505.png
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 3
petermzg
@petermzg
Самый лучший программист
Запросы от каждого микросервиса к Auth service будут замедлять систему, а хранить одинаковые данные в разных БД нецелесообразно.


Основная модель:
Client -> API Gateway -> Services -> Message Broker.
Для аутентификации:
Client -> Auth Gateway -> Auth Service -> Message Broker.

API Gateway обращаются к Auth Service за правами доступа к конкретным endpoints. И полученные права кешируют. Запросы от сервисов к Auth Service не нужны, в моделях передаются условия, для каких прав запрашиваются данные.
Каждый сервис отвечает только за свою вотчину и является "источником правды". Другие сервисы получают события о действиях в нужных сервисах и дублируют у себя данные. Так как не требуются запросы к другим сервисам, то дублирование не тормозит, а наоборот ускорят работу сервиса.

В gateway правило, один endpoint делает запрос в один сервис, никакой логики обьединения данных на gateway.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Ну слушай. В микросервисах нет математической формулы правильности архитектуры. Все итеративно.

Ты пишешь.
Запросы от каждого микросервиса к Auth service будут замедлять систему

Ну тогда не спрашивай часто. Спрашивай редко. Или введи какое-то кеширование. Вот токены для этого
дела и создавались. Обновить токен раз в сутки - это нагрузка никакая. Можно с этим жить.

И вообще микросервисы тоже с нуля начисто никто не пишет. Это процесс итеративный. Опытным путем
так сказать.
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Как по мне, для MVP достаточно будет монолита. + т.к. модели практически одинаковые, то будет проще.
Если выстрелит, то сделай рефакторинг под модульный монолит, а потом и микросервисы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы