Проект делится на следующие решения:
В качестве сервера балансироваки используется nginx. По текущим нагрузкам не требуются какие-то особенные настройки.
Находится на стороне заказчика. Не имеет публичных точек подключения. Взаимодействие осуществляется через микросервис Connector1CService (см. документацию в коде).
Интернет магазин (Shop PWA) - web-сайт магазин строительных материалов и товаров для дома (каталог, поиск, карточка товара, корзина, оформление заказа, личный кабинет, отзывы/вопросы, избранное).
Административное приложение (Admin PWA) - инструменты для сотрудников: управление справочниками, публикация контента и статей, модерация отзывов и вопросов, настройка акций/промо, просмотр и обработка заказов и доставок, ответы службы поддержки.
PWA взаимодействую с системой через сервер балансировки и PlatformAPI. Для взаимодействия используются HTTP-запросы. PlatformAPI проверяет доступы и права и контролирует разрешенность запросов к микросервисам на основе выданных прав пользователю.
Микросервисы, с которыеми имеется взаимодействие:
Так же интернет магазин взаимодействуюет со следующими внешними сервисами, через подключенные скрипты:
Микросервисы, с которыеми имеется взаимодействие:
1С на стороне заказчика является источником истины для товарного каталога, цен, остатков и статусов заказов. Она обменивается данными с платформой через специальный сервис-адаптер — Connector1CService, который преобразует данные из формата 1С в формат платформы и обратно. Таким образом достигается совместимость без жёсткой привязки архитектуры к особенностям 1С.
Бэкэнд представлен набором микросервисов и агрегатором ProfiMall.ServerAPI (PlatformAPI), который открывает внешний доступ к ним через API поддерживая OpenAPI. Микросервисы взаимодействуют между собой на функциональном уровне в пределах одного приложения, если они работают в пределах одного домена (агрегатора). При необходимости (увеличенные нагрузки, нехватка мощностей) отдельные микросервисы можно вынести в отдельный домен на другой физический (или виртуальный) сервер. В этом случае их взаимодействие будет через HTTP API.
Подробнее //TODO уделить больше внимания архитектуре бэкэнда (программным слоям)
Детальная информация по сервисам и их моделям по ссылкам.
|-> [Profiles]
|-> [Auth]
|-> [FilesDirectory]
|-> [Search]
|-> [Directory]
|-> [Favorites]
|-> [HeadHunt]
|-> [Loyalty]
|-> [Business]
|-> [Reviews]
|-> [Articles]
|-> [Support]
|-> [Delivery]
|-> [Connector1C]
|
[PlatformAPI_0](МС_0, М_1, ...) + [PlatformAPI_N](МС_N+1, М_N+2, ...)
_____________________________________________________________________
^
v
[1C] <-> [nginx] <-> [Внешние сервисы]
^
/ \
v v
[Shop PWA] [Admin PWA]