Перейти к содержанию

Описание общей архитектуры приложения#

Приложение построено по 3х звенной модели

Клиент - Сервер приложений - Сервер БД

Взаимодействие клиентской и серверной части приложения осуществляется на основе веб-протоколов (http(s), webSocket и др.). Каждый веб-сервис определяет свой набор публичных программных интерфейсов (API) в виде путей относительно адреса приложения, по которым клиент может обращаться к нему. Например, /api/v1.0/service/ - путь для обращения к веб-сервису service. Обращение к веб-сервисам чаще всего происходит с помощью http-запросов.

Клиент#

Клиентская часть представляет собой браузерное html5-приложение на основе различных библиотек и пакетов, написанное на языке javascript.

Сервер приложений#

Сервер приложений имеет микросервисную архитектуру и может быть адаптирован для запуска в облаке

Серверная архитектура

На подробной схеме представлены веб-service приложения Lexema. Веб-service представляют собой самостоятельные приложения на базе экосистемы Node.js и фреймворка Koa. Каждый веб-сервис реализует строго определённый функционал и не зависит от реализации других веб-сервисов. Исходя из выполняемой ими функции, веб-service могут обращаться к другим веб-сервисам приложения Lexema и к различным используемым технологиям. Например, к хранилищу Redis или к хранилищу данных.

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

Используемые веб-service#

Сервис Описание
data Сервис доступа к данным и процедурам, хранимым в БД
entrypoint Точка входа для клиентов
gate Сервис входа (аутентификации)
jsreport Сервис jsreport предназначен для работы с отчетами jsreport
logic Сервис логики
lock Сервис пессимистического блокировщика
post Сервис электронной почты и SMS-сообщений
RabbitMQ Сервер RabbitMQ служит шиной обмена данными между веб-сервисами
Redis Для хранения различной системной информации используется высокоскоростное хранилище данных Redis
radio Сервис взаимодействия в реальном времени
config Сервис конфигурации

Сервер базы данных#

В качестве сервера баз данных используется PostgreSQL.

Подготовка сервера приложения для развертывания Docker образов.#

Сервер приложений - это хост для выполнения Docker контейнеров приложения.

Docker — это платформа контейнеризации с открытым исходным кодом, с помощью которой можно автоматизировать создание приложений.

Базовые понятия:

  • Образ (image) - подготовленный для использования архив с приложением

  • Контейнер - запущенный в памяти экземпляр приложения созданный на основе образа. Образ неизменяемый, но на его основе можно сделать свой собственный образ. Контейнер изолирован от других процессов, коммуникация идет посредством виртуального сетевого интерфейса

Установка docker-образов#

  1. Установить на сервер следующие пакеты:

• docker: https://docs.docker.com/engine/install/ubuntu/

• docker-compose: https://docs.docker.com/compose/install/linux/

  1. Настройки Docker Network

Для межсервисного трафика при запуске приложения создается отдельная виртуальная сеть с именем проекта. Для взаимодействия с внешними сервисами необходимо создать виртуальную сеть с именем proxy. Cоздание сети proxy следующей командой: docker network create proxy.

  1. Разместить образы, предоставленные компанией ООО "Лексема" на сервере приложения. Создать временную папку для загрузки образов mkdir /tmp/lexema && cd /tmp/lexema

Скопировать архивы образов в папку /tmp/lexema на сервере.

Выполнить команду загрузки образов docker load -i *.tar

Удалить образы rm -f *.tar

  1. Настроить сервер для доступа к сервису обновлений.

Используемые в приложении service#

Каждый docker-образ отвечает за работу определенного сервиса. В приложении используется следующий набор сервисов:

  • Entrypoint - это исполняемый файл, в котором прописаны команды для выполнения. Обязательный элемент системы.
  • Config - сервис выдачи настроек других сервисов.
  • Data – сервис доступа к данным и процедурам, хранимым в БД.
  • File – сервис работы с файлами .
  • Fluentd – коллектов логов
  • Gate – сервис входа (аутентификации)
  • JSReport - Сервис jsreport предназначен для работы с отчетами jsreport
  • Logic - Сервис логики предназначен для получения информации о серверных объектах бизнес-логики: моделях, запросах, отчетах, sql-объектах.
  • Post – сервис электронной почты и смс сообщений
  • Preview - сервис предназначен для конвертации файлов в файлы в формате pdf, которые можно просматривать в контроле FilePreview
  • Radio - система взаимодействия реального времени имеет большую область применения: от оповещения сеансов пользователей о произвольных событиях до полноценных сервисов обмена мгновенными сообщениями между пользователями приложения
  • Sheduler – сервис планировщика задач

Подготовка сервера БД PostgreSQL

Установить сервер БД со следующими настройками. На сервере создать пользователя с ролью sysadmin

Публикация сайта

После развертывания сервера приложений и сервера БД необходимо придумать имя сайта и опубликовать его в интранете либо в интернете

Требования к системе#

Для функционирования системы необходимы два сервера (виртуальные машины), одни - для сервера приложений, другой - для сервера СУБД.

Сервер приложений может быть развернут как в Linux-средах, так и в среде MS Windows Server. В качестве СУБД могут быть использовны PosgreSQL или MS SQL Server.

Требования к каждому из вариантов развертывания приведены ниже.

Сервер приложений (Docker)

Уровень Требование
Операционная система Ubuntu 20.04+
CentOS 8.9+
Debian 11+ stable
Ред-ОС 8.3+
Oracle Linux 9+
Astra Linux 1.7+ SE
CPU Архитектура x64, не менее 4 ядер, частота процессора не ниже 2,6 ГГц
RAM Не менее 8 Гб
HDD Не менее 100 Гб
Net Не менее 1 Гбит

Сервер приложений (NPM)

Уровень Требование
Операционная система MS Windows Server 2016+
Дополнительное ПО Node.JS 16.20.0
Nginх 1.19
Redis 3.2.100
Erlang OTP 23.3
Rabbitma 3.8.9
CPU Архитектура x64, не менее 4 ядер, частота процессора не ниже 2,6 ГГц
RAM Не менее 8 Гб
HDD Не менее 200 Гб
Net Не менее 1 Гбит

Сервер СУБД (PostgreSQl)

Уровень Требование
Операционная система Ubuntu 20.04.+
CentOS 8.9+
Debian 11+ stable
Руд-ОС 8.3+
Oracle Linux 9+
Astra Linux 1.7+ SE
CPU Архитектура x64, не менее 4 ядер, частота процессора не ниже 2,6 ГГц
RAM Не менее 8 Гб
HDD Не менее 500 Гб
Net Не менее 1 Гбит
СУБД PostgreSQL 15+

Сервер СУБД (MS SQL Server)

Уровень Требование
Операционная система MS Windows Server 2016+
СУБД MS SQL 2014+
CPU Архитектура x64, не менее 4 ядер, частота процессора не ниже 2,6 ГГц
RAM Не менее 8 Гб
HDD Не менее 1024 Гб
Net Не менее 1 Гбит

Требования к клиентским компьютерам:

  1. Подключение к сети
  2. Установленный браузер:
Браузер Версия
Google Chrome версия 88.0.4324.150 и выше
Mozilla Firefox версия 85.0 и выше
Yandex Browser версия 21.2.0.1099 и выше
Safari версия 12.1.2 и выше
Edge версия 88.0.705.81 и выше

Дополнительные требования для рабочих мест, с которых будут подписывать КЭП:

  1. Установлено ПО СКЗИ Крипто-Про

  2. Очень желательно ОС MS Windows 8 и выше

Требование к смартфонам:

  1. iPhone – версия iOS 10 и выше
  2. Android – версия Android 7 и выше

Конфигурирование приложения#

Основные настройки конфигурирования описываются в файле productions.js, который располагается в docker-контейнере config_service приложения. Конфигурационный файл состоит из нескольких разделов, ниже описаны настройки каждого из них. Подробнее про конфигурирование приложения описано в соответствующих разделах Конфигурирование приложения и Конфигурирование экземпляра приложения