architecture.md 12 KB

Архитектура проекта

Структура

Проект делится на следующие решения:

  • Сервер балансировки (nginx)
  • Мастер‑система (1С‑сервер)
  • Бэкенд
    • PlatformAPI (агрегация микросервисов в узел)
    • Набор микросервисов
  • Фронтенд (PWA-приложения)
    • Интернет магазин (Shop PWA)
    • Административное приложение (Admin PWA)

Сервер балансировки

В качестве сервера балансироваки используется nginx. По текущим нагрузкам не требуются какие-то особенные настройки.

Посмотреть текущие настройки

Мастер‑система (1С‑сервер)

Находится на стороне заказчика. Не имеет публичных точек подключения. Взаимодействие осуществляется через микросервис Connector1CService (см. документацию в коде).

Фронтенд

  • Интернет магазин (Shop PWA) - web-сайт магазин строительных материалов и товаров для дома (каталог, поиск, карточка товара, корзина, оформление заказа, личный кабинет, отзывы/вопросы, избранное).

  • Административное приложение (Admin PWA) - инструменты для сотрудников: управление справочниками, публикация контента и статей, модерация отзывов и вопросов, настройка акций/промо, просмотр и обработка заказов и доставок, ответы службы поддержки.

PWA взаимодействую с системой через сервер балансировки и PlatformAPI. Для взаимодействия используются HTTP-запросы. PlatformAPI проверяет доступы и права и контролирует разрешенность запросов к микросервисам на основе выданных прав пользователю.

Подробнее

Интернет магазин

Микросервисы, с которыеми имеется взаимодействие:

  • AuthService - аутентификация и авторизация (телефон, SMS/flash-call, выдача токена, управление сессией).
  • ProfilesService - управление данными пользователя, получение информации о своем пользователе.
  • FilesDirectoryService - хранение, управление файлами/медиа и их получение.
  • SearchService - поиск нужного набора товаров по заданным параметрам.
  • DirectoryService - получение информации о категориях, брендах, товаров.
  • FavoriteService - функционал избранных товаров.
  • HeadHuntService - получение списка вакансий, оставление заявки.
  • BusinessService - корзина, формирование заказа, получение информации о заказах.
  • ReviewsService - получение существующих и создание новых отзывов и вопросов о товарах
  • ArticlesService - получение публикация и статей
  • SupportService - формирование запроса в техподдержку
  • DeliveryService - формирование рассчета стоимости доставки с учетом параметров.

Так же интернет магазин взаимодействуюет со следующими внешними сервисами, через подключенные скрипты:

  • Яндекс метрика
  • Top.mail.ru counter
  • Calltouch (на уровне кода отправляет помеченные события (см. код))
  • AnyQuery (поисковая аналитика)

Административное приложение

Микросервисы, с которыеми имеется взаимодействие:

  • AuthService - аутентификация и авторизация (телефон, SMS/flash-call, выдача токена, управление сессией).
  • ProfilesService - управление пользователями, профили, доступы, телефоны, email.
  • FilesDirectoryService - хранение, управление файлами/медиа и их получение.
  • SearchService - индексация и поиск: работа с синонимами, опечатками, выдача релевантных товаров.
  • DirectoryService - получение информации о категориях, брендах, товаров.
  • HeadHuntService - вакансии: публикация, редактирование, архивирование офферов, отклики и их обработка.
  • ReviewsService - отзывы и вопросы: постинг, модерация, лайки/дизлайки, отчёты по товарам.
  • ArticlesService - публикация статей: создание, обновление, архивирование, публикация, выборка.
  • SupportService - техподдержка: закрытие запросов, выборка запросов.

Мастер-система 1С

1С на стороне заказчика является источником истины для товарного каталога, цен, остатков и статусов заказов. Она обменивается данными с платформой через специальный сервис-адаптер — Connector1CService, который преобразует данные из формата 1С в формат платформы и обратно. Таким образом достигается совместимость без жёсткой привязки архитектуры к особенностям 1С.

Бэкенд

Бэкэнд представлен набором микросервисов и агрегатором ProfiMall.ServerAPI (PlatformAPI), который открывает внешний доступ к ним через API поддерживая OpenAPI. Микросервисы взаимодействуют между собой на функциональном уровне в пределах одного приложения, если они работают в пределах одного домена (агрегатора). При необходимости (увеличенные нагрузки, нехватка мощностей) отдельные микросервисы можно вынести в отдельный домен на другой физический (или виртуальный) сервер. В этом случае их взаимодействие будет через HTTP API.

Подробнее //TODO уделить больше внимания архитектуре бэкэнда (программным слоям)

Микросервисы

Детальная информация по сервисам и их моделям по ссылкам.

  • AuthService - аутентификация и авторизация (телефон, SMS/flash-call, выдача токена, управление сессией).
  • ProfilesService - управление пользователями, профили, доступы, телефоны, email.
  • DirectoryService - справочники: категории, бренды, товары, фильтрация и сортировка, синхронизация.
  • FilesDirectoryService - хранение и управление файлами/медиа: загрузка, резервирование токенов, проверка существования.
  • SearchService - индексация и поиск: работа с синонимами, опечатками, выдача релевантных товаров.
  • BusinessService - корзина, заказы: создание, отмена, обновления, статусы, взаимодействие с мастер-системой.
  • Connector1CService - интеграция с 1С: каталоги, остатки, цены, заказы, клиенты, синхронизация.
  • FavoriteService - избранное: добавление/удаление товаров, выборка избранных позиций.
  • HeadHuntService - вакансии: публикация, редактирование, архивирование офферов, отклики и их обработка.
  • ReviewsService - отзывы и вопросы: постинг, модерация, лайки/дизлайки, отчёты по товарам.
  • ArticlesService - публикация статей: создание, обновление, архивирование, публикация, выборка.
  • SupportService - техподдержка: создание обращений, закрытие, выборка запросов.
  • DeliveryService - тарифы и информация по доставке, расчёт стоимости и сроков.
  • LoyaltyService - промо-кампании, промокоды, скидки на заказы, обработка подтверждений (не запущен).

Общая схема архитектуры

                              |-> [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]

Назад