Сервисная архитектура R3 (23Q4)
Сервисная архитектура
- 1. Системная архитектура решения
- 1.1 Описание сервисов
- 1.2 Схема соответствия сервисов и баз данных
- 1.3 Таблица соответствия сервисов и баз данных.
- 1.4 Схема соответствия сервисов и программного обеспечения
- 1.5 Таблица соответствия сервисов и программного обеспечения
- 1.6 Схема соответствия процессов системы и сервисов
- 1.7 Таблица соответствия процессов системы и сервисов
- 1.8 Схема взаимодействия между сервисами
- 1.9 Порты и протоколы взаимодействия
- 2. Взаимодействие с системой авторизации
1. Системная архитектура решения
1.1 Описание сервисов
№ п/п | Наименование сервиса | Система и ПО | Описание | |
ПО | Поставщик | |||
1 | Сервис точки входа | Nginx | Nginx | Сервис единой точки входа на базе Nginx |
2 | Сервис веб приложений | Nginx | Nginx | Сервис веб приложений на базе Nginx |
3 | Сервис логирования действий пользователя | Nginx | Nginx | Сервис, реализующий логирование действий пользователя на основании запросов, отправляемых им на веб сервер. |
4 | Сервис авторизации | Keycloak | Keycloak | Сервис авторизации с поддержкой SSO и различных систем авторизации на базе Keycloak (LDAP, AD и т.д.) |
5 | Сервис управления ролями и полномочиями | Java | Goodt | Сервис управления ролями и полномочиями пользователей системы. Настройка доступа к объектам и данным системы. |
6 | Сервис конфигурации системы | Java | Goodt | Сервис для конфигурирования системы. |
7 | Сервис приложения Ядро системы | Java | Goodt | Сервис оргструктуры и работы с базовыми компонентами системы. Любые данные по организационной структуре получаются у данного сервиса. Необходим для работы практически любого сервиса бизнес процессов. Работа с “тасками” (карточки целей, цели, карточки развития и т.д.), сервисы справочных данных и другие. Является логическим центром системы, объединяющим логику выполнения большинства бизнес задач системы. Например, задач, требующих ряд последовательных вызовов различных сервисов с последовательной обработкой результата, полученного от каждого из них. |
8 | Сервис приложения Опросы | Java | Goodt | Сервис управления и прохождения опросов, включающий в себя работу с каталогами опросов, назначение участников и фиксацию результатов. |
9 | Сервис приложения Отчеты | Java | Goodt | Сервис формирования печатных форм. |
10 | Сервис приложения Оценка эффективности | Java | Goodt | Сервис оценки эффективности персонала на базе мониторинга основных показателей по процессу управления сотрудниками. |
11 | Сервис приложения Менеджер управления сообщениями | Java | Goodt | Сервис управления конфигурациями и правилами отправки сообщений. Формирование и отправка сообщений в каналы брокера сообщений. |
12 | Сервис приложения Менеджер отправки сообщений | Java | Goodt | Сервис, осуществляющий передачу сообщений системы их адресатам (пользователям системы). |
13 | Сервис приложения Менеджер загрузки файлов | Java | Goodt | Сервис загрузки и хранения файлов, появляющихся в процессе работы системы. |
14 | Сервис фоновых процессов | Java | Goodt | Сервис хранения и выполнения фоновых процессов системы. С собственным планировщиком выполнения задач. |
15 | Коннектор данных | Java | Goodt | Сервис обработки запросов к витринам. |
16 | Фронт приложения Редактор | Nginx | Goodt | Сервис фронтэнд редактора приложений (СУП). Для работы с приложениями и их метаданными. |
17 | Сервис приложения Редактор | Java | Goodt | Сервис бэкэнд редактора приложений (СУП). Для работы с приложениями и их метаданными. |
18 | Брокер сообщений | Apache Kafka | Apache | Брокер, осуществляющий сбор сообщений в системе на базе Apache Kafka. |
19 | Сервис СУБД | PostgreSQL | PostgreSQL | Структурированное хранилище данных на базе PostgreSQL. Обеспечивает данными практически любой сервис системы, в том числе витрины данных. |
20 | Сервис хранилища S3 | S3 | Custom | Хранилище данных на базе архитектуры S3. |
21 | Сервис приложения Интеграционная шина | Java | Goodt | Сервис для получения данных по интеграции. |
1.2 Схема соответствия сервисов и баз данных
1.3 Таблица соответствия сервисов и баз данных.
№ п/п | Наименование сервиса | Схема Базы Данных | База Данных |
1 | Сервис авторизации | public | keycloak |
2 | Сервис управления ролями и полномочиями | public | authority |
3 | Сервис конфигурации системы | configuration | rtl |
4 | Сервис приложения Ядро системы | rt_core | rtl |
5 | Сервис приложения Опросы | quiz | rtl |
6 | Сервис приложения Отчеты | report | rtl |
7 | Сервис приложения Оценка эффективности | monitor | rtl |
8 | Сервис приложения Менеджер управления сообщениями | notifications | rtl |
9 | Сервис приложения Менеджер отправки сообщений | fileupload | rtl |
10 | Сервис приложения Менеджер загрузки файлов | kafka_messenger | rtl |
11 | Сервис фоновых процессов | public | job |
12 | Коннектор данных | public | connector |
13 | Сервис приложения Редактор | public | supeditor |
14 | Сервис приложения Интеграционная шина | integration | rtl |
1.4 Схема соответствия сервисов и программного обеспечения
1.5 Таблица соответствия сервисов и программного обеспечения
№ п/п | Наименование сервиса | Программное обеспечение |
1 | Сервис приложения Ядро системы | S3 |
2 | Сервис приложения Менеджер отправки сообщений | Apache Kafka |
3 | Сервис приложения Менеджер загрузки файлов | S3 |
4 | Сервис фоновых процессов | Apache Kafka |
S3 | ||
5 | Сервис приложения Менеджер управления сообщениями | S3 |
1.6 Схема соответствия процессов системы и сервисов
1.7 Таблица соответствия процессов системы и сервисов
№ п/п | Процесс модуля | Модуль системы | Наименования сервисов |
1 | Профиль подразделения | Базовая функциональность | Сервис приложения Ядро системы |
2 | Организационная структура | Базовая функциональность | Сервис приложения Ядро системы |
3 | Фоновые процессы | Базовая функциональность | Сервис фоновых процессов |
4 | Ролевая модель | Базовая функциональность | Сервис управления ролями и полномочиями |
5 | Главная страница | Базовая функциональность | Сервис конфигурации системы |
6 | Профиль работника | Базовая функциональность | Сервис приложения Ядро системы |
7 | Целеполагание V1 | Целеполагание | Сервис приложения Ядро системы |
8 | Целеполагание V2 | Целеполагание | Сервис приложения Ядро системы |
9 | Оценка персонала | Оценка | Сервис приложения Ядро системы |
10 | Управление компетенциями | Оценка | Сервис приложения Ядро системы |
11 | Аттестация | Оценка | Сервис приложения Ядро системы |
Сервис приложения Опросы | |||
12 | Управление профилями должностей | Оценка | Сервис приложения Ядро системы |
13 | Адаптация | Адаптация | Сервис приложения Ядро системы |
14 | Управление преемственностью | Карьера и развитие | Сервис приложения Ядро системы |
15 | Управление кадровым резервом | Карьера и развитие | Сервис приложения Ядро системы |
16 | Управление ротацией | Карьера и развитие | Сервис приложения Ядро системы |
Сервис приложения Опросы | |||
17 | Управление планами развития | Карьера и развитие | Сервис приложения Ядро системы |
18 | Управление карьерным планированием | Карьера и развитие | Сервис приложения Ядро системы |
Сервис приложения Опросы | |||
19 | Управление проектным персоналом | Карьера и развитие | Сервис приложения Ядро системы |
20 | Рассылка нотификаций | Сервис системных нотификаций | Сервис приложения Менеджер отправки сообщений |
21 | Средства аналитики нотификаций | Сервис системных нотификаций | Сервис приложения Менеджер управления сообщениями |
22 | Типовые нотификации | Сервис системных нотификаций | Сервис приложения Менеджер управления сообщениями |
23 | Оформление нотификаций | Сервис системных нотификаций | Сервис приложения Менеджер управления сообщениями |
24 | Подписчики нотификаций | Сервис системных нотификаций | Сервис приложения Менеджер управления сообщениями |
25 | Массовые нотификации | Сервис системных нотификаций | Сервис приложения Менеджер управления сообщениями |
1.8 Схема взаимодействия между сервисами
1.9 Порты и протоколы взаимодействия
№ п/п | Наименование сервиса | Имя хоста | Порты |
1 | Сервис точки входа | [host]-balancer | 22, 443 |
2 | Сервис веб приложений | [host]-webserver | 22, 443 |
3 | Сервис логирования действий пользователя | [host]-weblog | 22, 443 |
4 | Сервис авторизации | [host]-auth | 22, 9443 |
5 | Сервис управления ролями и полномочиями | [host]-app-authority | 22, 8091 |
6 | Сервис конфигурации системы | [host]-configuration | 22, 8092 |
7 | Сервис приложения Ядро системы | [host]-app-rt-core | 22, 8071 |
8 | Сервис приложения Опросы | [host]-app-quiz | 22, 8025 |
9 | Сервис приложения Отчеты | [host]-app-report | 22, 8089 |
10 | Сервис приложения Оценка эффективности | [host]-app-monitor | 22, 8095 |
11 | Сервис приложения Менеджер управления сообщениями | [host]-notify | 22, 8094 |
12 | Сервис приложения Менеджер отправки сообщений | [host]-app-messenger | 22, 8030 |
13 | Сервис приложения Менеджер загрузки файлов | [host]-fileupload | 22, 8099, 9000, 9090 |
14 | Сервис фоновых процессов | [host]-job | 22, 8094 |
15 | Коннектор данных | [host]-connector | 22, 4000 |
16 | Фронт приложения Редактор | [host]-editor-front | 22, 443 |
17 | Сервис приложения Редактор | [host]-editor-back | 22, 8097 |
18 | Брокер сообщений | [host]-kafka | 22, 9092 |
19 | Сервис СУБД | [host]-db | 22, 5432 |
20 | Сервис хранилища S3 | [host]-s3 | 22, 443 |
21 | Сервис приложения Интеграционная шина | [host]-integration | 22, 8080 |
2. Взаимодействие с системой авторизации
Аутентификация и авторизация пользователей выполняется в KeyCloak с использованием внутреннего логина и пароля пользователя для системы заказчика.
Пользовательский процесс аутентификации и авторизации:
- При переходе без авторизации на защищенную страницу, пользователь переходит на страницу аутентификации Keycloak.
- Пользователь вводит валидную пару username:password или использует иной провайдер авторизации, доступный на странице аутентификации.
- После успешной аутентификации пользователь получает JWT ключ авторизации и возвращается на защищенную страницу.
- Все последующие обращения к страницам или бэкэнд методам производятся с использованием полученного JWT ключа.
Сервисы приложений получают и расшифровывают JWT ключ пользователя по заложенному в них RSA ключу. Следующим этапом, сервисы опознают инициатора и предоставляют ему информацию в соответствии с его правами доступа.
Дополнительную информацию о сервисе Keycloak можно получить из официальной документации по ссылке https://www.keycloak.org/documentation.