Как спроектировать backend инфраструктуру?

Привет всем, я хотел бы услышать ваше мнение о моей попытке спроектировать серверную архитектуру для мобильного приложения, над которым я сейчас работаю.

UYA2F5I.jpg

Мне нужно спроектировать бэкэнд, который будет использоваться мобильным приложением (обычные пользователи) и интерфейсом администратора (пользователи-администраторы, веб-интерфейс).

Я решил разделить всю систему на отдельные части:
  • MobileAPI - REST API, предоставляющий endpoint'ы для мобильного приложения. Контроллеры и валидация входных данных
  • AdminAPI - REST API, предоставляющий endpoint'ы для мобильного приложения. Контроллеры и валидация входных данных
  • Backend - Монолит, содержащий всю логику, использует gRPC для связи. Получает запросы только от инстансов MobileAPI и AdminAPI


Я знаю, что в настоящее время предпочтительнее использовать микросервисы, а не монолит. Однако из-за небольшого кол-ва людей, работающих над проектом, их оркестровка будет болезненной. Пока все масштабирование будет горизонтальным, по типу "больше экземпляров монолита под балансировщиком нагрузки". На самих инстансах нет внутреннего состояния (будут использоваться JWT токены, база данных вынесена), поэтому я полагаю, что добавление новых инстансов будет относительно безболезненным

Хотелось бы услышать потенциальные проблемы с этим подходом, а также хотел бы узнать мнения о том, где управлять аутентификацией (например, проверка JWT)?
  • Вопрос задан
  • 3415 просмотров
Решения вопроса 3
DevMan
@DevMan Куратор тега Веб-разработка
тот вопрос, когда все ответы в коментах, а не ответах.

балансер для админов? о_О рили? у вас админы генерируют активность, сравнимую с хомяками?

grpc? o_OOOO рили? зачем? ещё бы soap прикрутили, шоб совсем по взрослому.
Ответ написан
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
что мне не нравится, так это то что у рядовых пользователей есть доступ к бэкенду и инструменты судя по схеме у админов и пользователей совпадают
Ответ написан
zoonman
@zoonman
CEO @ LinuxQuestions.ru
Во-первых, есть https://github.com/grpc/grpc-web
Во-вторых, ваша архитектура выглядит так:
App, Web --> Balancer --> API (gRPC) --> DB (Sharded&Replicated)

Не плодите сущностей сверх меры. Приведенная вами архитектура для малых проектов является пустой тратой времени, а в больших она будет абсолютно другой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
"Веб-сайт: базис, архитектура, создание"
----------
Этапы проектирования сайта:
1. На основе ТЗ выделяются: роли, состояния, передаваемая информация, хранилища, доступы.
2. На основе этих данных строится бизнес-процесс с использованием элементов блок-схемы и диаграммы состояний (UML).

и т.д.

Научитесь проектировать прежде, чем давать схему на оценку и просить помощи у сообщества:
Привет всем, я хотел бы услышать ваше мнение о моей попытке спроектировать серверную архитектуру для мобильного приложения, над которым я сейчас работаю.
Ответ написан
deksden
@deksden
Enterpreneur
Обычно Mobile API / Admin API - это и есть backend. Перед ними еще можно поставить проксирующий веб сервер для отдачи статики (nginx?).

Только в очень высоконагруженных системах сущность, которая обрабатывает API request делае запросы к внутренним сервисам приложения. Возможно, для старта небольшого проекта это будет overkill
Ответ написан
@zzzzzzzzzzzzz
На мой взгляд вопрос некорректен. Как оценивать архитектуру, которая спроектирована непонятно под какие требования?
Ответ написан
Ваш ответ на вопрос

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

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