Описание общей архитектуры приложения#
Приложение построено по 3х звенной модели
Клиент - Сервер приложений - Сервер БД
Взаимодействие клиентской и серверной части приложения осуществляется на основе веб-протоколов (http(s), webSocket и др.). Каждый веб-сервис определяет свой набор публичных программных интерфейсов (API) в виде путей относительно адреса приложения, по которым клиент может обращаться к нему. Например, /api/v1.0/service/ - путь для обращения к веб-сервису service. Обращение к веб-сервисам чаще всего происходит с помощью http-запросов.
Клиент#
Клиентская часть представляет собой браузерное html5-приложение на основе различных библиотек и пакетов, написанное на языке javascript.
Сервер приложений.#
Сервер приложений имеет микросервисную архитектуру и может быть адаптирован для запуска в облаке
На подробной схеме представлены веб-сервисы приложения Lexema. Веб-сервисы представляют собой самостоятельные приложения на базе экосистемы Node.js и фреймворка Koa. Каждый веб-сервис реализует строго определённый функционал и не зависит от реализации других веб-сервисов. Исходя из выполняемой ими функции, веб-сервисы могут обращаться к другим веб-сервисам приложения Lexema и к различным используемым технологиям. Например, к хранилищу Redis или к хранилищу данных.
В блоке каждого сервиса перечислены их API в виде типа запроса и адреса, по которому этот запрос прослушивается сервисом. Большими стрелками указано взаимодействие между сервисами с помощью сервисной шины.
Обязательные веб-сервисы :
- entrypoint - Точка входа для клиентов
- config - Сервис конфигурации
- logic - Сервис логики
- gate - Сервис входа (аутентификации)
- radio - Сервис взаимодействия реального времени
- lock - Сервис пессимистического блокировщика
- data - Сервис доступа к данным и процедурам хранимым в БД
- RabbitMQ - Сервер RabbitMQ служит шиной обмена данными между веб-сервисами. Сервисы используют его механизмы (сообщения и очереди сообщений) для оповещения друг друга.
- Redis -Для хранения различной системной информации используется высокоскоростное хранилище данных Redis
Опциональные веб-сервисы :
- post - Сервис электронной почты и смс сообщений
- jsreport - Сервис jsreport предназначен для работы с отчетами jsreport.
- preview - Сервис превью предназначен для конвертации файлов в файлы в формате pdf, которые можно просматривать в контроле FilePreview.
- lexema-dss - Сервис для работы с ОЭП выпускаемыми клиентом
Сервер БД#
В качестве сервера баз данных используется MS SQL или PostgreSQL