Сервисная архитектура 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.