Исходный код вики Сервисная архитектура
Редактировал(а) Александра Баруткина 2024/06/27 13:20
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | **Сервисная архитектура** | ||
| 2 | |||
| 3 | {{toc/}} | ||
| 4 | |||
| 5 | ((( | ||
| 6 | = 1. Системная архитектура решения = | ||
| 7 | ))) | ||
| 8 | |||
| 9 | == 1.1 Описание сервисов == | ||
| 10 | |||
| 11 | (% class="table-bordered" %) | ||
| 12 | |(% rowspan="2" %)**№ п/п**|(% rowspan="2" %)**Наименование сервиса**|(% colspan="2" %)**Система и ПО**|(% rowspan="2" %)**Описание** | ||
| 13 | |**ПО**|**Поставщик** | ||
| 14 | |1|Сервис точки входа|Nginx|Nginx|Сервис единой точки входа на базе Nginx | ||
| 15 | |2|Сервис веб приложений|Nginx|Nginx|Сервис веб приложений на базе Nginx | ||
| 16 | |3|Сервис логирования действий пользователя|Nginx|Nginx|((( | ||
| 17 | Сервис, реализующий логирование действий | ||
| 18 | |||
| 19 | пользователя на основании запросов, отправляемых им на веб сервер. | ||
| 20 | ))) | ||
| 21 | |4|Сервис авторизации|Keycloak|Keycloak|Сервис авторизации с поддержкой SSO и различных систем авторизации на базе Keycloak (LDAP, AD и т.д.) | ||
| 22 | |5|Сервис управления ролями и полномочиями|Java|Goodt|Сервис управления ролями и полномочиями пользователей системы. Настройка доступа к объектам и данным системы. | ||
| 23 | |6|Сервис конфигурации системы|Java|Goodt|Сервис для конфигурирования системы. | ||
| 24 | |7|Сервис приложения Ядро системы|Java|Goodt|((( | ||
| 25 | Сервис оргструктуры и работы с базовыми компонентами системы. | ||
| 26 | |||
| 27 | Любые данные по организационной структуре получаются у данного сервиса. Необходим для работы практически любого сервиса бизнес | ||
| 28 | |||
| 29 | процессов. | ||
| 30 | |||
| 31 | Работа с “тасками” (карточки целей, цели, карточки развития и т.д.), сервисы справочных данных и другие. | ||
| 32 | |||
| 33 | Является логическим центром системы, объединяющим логику выполнения большинства бизнес задач системы. Например, задач, требующих ряд последовательных вызовов различных сервисов с последовательной обработкой результата, | ||
| 34 | |||
| 35 | полученного от каждого из них. | ||
| 36 | ))) | ||
| 37 | |8|Сервис приложения Опросы|Java|Goodt|Сервис управления и прохождения опросов, включающий в себя работу с каталогами опросов, назначение участников и фиксацию результатов. | ||
| 38 | |9|Сервис приложения Отчеты|Java|Goodt|Сервис формирования печатных форм. | ||
| 39 | |10|Сервис приложения Оценка эффективности|Java|Goodt|Сервис оценки эффективности персонала на базе мониторинга основных показателей по процессу управления сотрудниками. | ||
| 40 | |11|Сервис приложения Менеджер управления сообщениями|Java|Goodt|Сервис управления конфигурациями и правилами отправки сообщений. Формирование и отправка сообщений в каналы брокера сообщений. | ||
| 41 | |12|Сервис приложения Менеджер отправки сообщений|Java|Goodt|Сервис, осуществляющий передачу сообщений системы их адресатам (пользователям системы). | ||
| 42 | |13|Сервис приложения Менеджер загрузки файлов|Java|Goodt|Сервис загрузки и хранения файлов, появляющихся в процессе работы системы. | ||
| 43 | |14|Сервис фоновых процессов|Java|Goodt|Сервис хранения и выполнения фоновых процессов системы. С собственным планировщиком выполнения задач. | ||
| 44 | |15|Коннектор данных|Java|Goodt|Сервис обработки запросов к витринам. | ||
| 45 | |16|Фронт приложения Редактор|Nginx|Goodt|Сервис фронтэнд редактора приложений (СУП). Для работы с приложениями и их метаданными. | ||
| 46 | |17|Сервис приложения Редактор|Java|Goodt|Сервис бэкэнд редактора приложений (СУП). Для работы с приложениями и их метаданными. | ||
| 47 | |18|Брокер сообщений|Apache Kafka|Apache|Брокер, осуществляющий сбор сообщений в системе на базе Apache Kafka. | ||
| 48 | |19|Сервис СУБД|PostgreSQL|PostgreSQL|((( | ||
| 49 | Структурированное хранилище данных на базе PostgreSQL. Обеспечивает данными практически | ||
| 50 | |||
| 51 | любой сервис системы, в том числе витрины данных. | ||
| 52 | ))) | ||
| 53 | |20|Сервис хранилища S3|S3|Custom|Хранилище данных на базе архитектуры S3. | ||
| 54 | |21|((( | ||
| 55 | Сервис приложения | ||
| 56 | |||
| 57 | Интеграционная шина | ||
| 58 | )))|Java|Goodt|Сервис для получения данных по интеграции. | ||
| 59 | |||
| 60 | == 1.2 Схема соответствия сервисов и баз данных == | ||
| 61 | |||
| 62 | [[image:Сервисная архитектура 20240125-1_84f002e06ef648b0.jpg||height="666" width="724"]] | ||
| 63 | |||
| 64 | == 1.3 Таблица соответствия сервисов и баз данных. == | ||
| 65 | |||
| 66 | (% class="table-bordered" %) | ||
| 67 | |(% style="width:57px" %)№ **п/п**|(% style="width:592px" %)**Наименование сервиса**|**Схема Базы Данных**|**База Данных** | ||
| 68 | |(% style="width:57px" %)1|(% style="width:592px" %)Сервис авторизации|public|keycloak | ||
| 69 | |(% style="width:57px" %)2|(% style="width:592px" %)Сервис управления ролями и полномочиями|public|authority | ||
| 70 | |3|(% style="width:594px" %)Сервис конфигурации системы|(% style="width:281px" %)configuration|(% style="width:191px" %)rtl | ||
| 71 | |4|(% style="width:594px" %)Сервис приложения Ядро системы|(% style="width:281px" %)rt_core|(% style="width:191px" %)rtl | ||
| 72 | |5|(% style="width:594px" %)Сервис приложения Опросы|(% style="width:281px" %)quiz|(% style="width:191px" %)rtl | ||
| 73 | |6|(% style="width:594px" %)Сервис приложения Отчеты|(% style="width:281px" %)report|(% style="width:191px" %)rtl | ||
| 74 | |7|(% style="width:594px" %)Сервис приложения Оценка эффективности|(% style="width:281px" %)monitor|(% style="width:191px" %)rtl | ||
| 75 | |8|(% style="width:594px" %)Сервис приложения Менеджер управления сообщениями|(% style="width:281px" %)notifications|(% style="width:191px" %)rtl | ||
| 76 | |9|(% style="width:594px" %)Сервис приложения Менеджер отправки сообщений|(% style="width:281px" %)fileupload|(% style="width:191px" %)rtl | ||
| 77 | |10|(% style="width:594px" %)Сервис приложения Менеджер загрузки файлов|(% style="width:281px" %)kafka_messenger|(% style="width:191px" %)rtl | ||
| 78 | |11|(% style="width:594px" %)Сервис фоновых процессов|(% style="width:281px" %)public|(% style="width:191px" %)job | ||
| 79 | |12|(% style="width:594px" %)Коннектор данных|(% style="width:281px" %)public|(% style="width:191px" %)connector | ||
| 80 | |13|(% style="width:594px" %)Сервис приложения Редактор|(% style="width:281px" %)public|(% style="width:191px" %)supeditor | ||
| 81 | |14|(% style="width:594px" %)Сервис приложения Интеграционная шина|(% style="width:281px" %)integration|(% style="width:191px" %)rtl | ||
| 82 | |||
| 83 | == 1.4 Схема соответствия сервисов и программного обеспечения == | ||
| 84 | |||
| 85 | [[image:Сервисная архитектура 20240125-1_5e6b2915be2a96ca.jpg||height="782" width="724"]] | ||
| 86 | |||
| 87 | == 1.5 Таблица соответствия сервисов и программного обеспечения == | ||
| 88 | |||
| 89 | (% class="table-bordered" %) | ||
| 90 | |(% style="width:68px" %)**№ п/п**|(% style="width:705px" %)**Наименование сервиса**|**Программное обеспечение** | ||
| 91 | |(% style="width:68px" %)1|(% style="width:705px" %)Сервис приложения Ядро системы|S3 | ||
| 92 | |(% style="width:68px" %)2|(% style="width:705px" %)Сервис приложения Менеджер отправки сообщений|Apache Kafka | ||
| 93 | |(% style="width:68px" %)3|(% style="width:705px" %)Сервис приложения Менеджер загрузки файлов|S3 | ||
| 94 | |(% rowspan="2" style="width:68px" %)4|(% rowspan="2" style="width:705px" %)Сервис фоновых процессов|Apache Kafka | ||
| 95 | |S3 | ||
| 96 | |(% style="width:68px" %)5|(% style="width:705px" %)Сервис приложения Менеджер управления сообщениями|S3 | ||
| 97 | |||
| 98 | == 1.6 Схема соответствия процессов системы и сервисов == | ||
| 99 | |||
| 100 | [[image:Сервисная архитектура 20240125-1_c805e6b7166876b4.jpg||height="801" width="548"]] | ||
| 101 | |||
| 102 | == 1.7 Таблица соответствия процессов системы и сервисов == | ||
| 103 | |||
| 104 | (% class="table-bordered" %) | ||
| 105 | |**№ п/п**|**Процесс модуля**|**Модуль системы**|**Наименования сервисов** | ||
| 106 | |1|((( | ||
| 107 | Профиль | ||
| 108 | |||
| 109 | подразделения | ||
| 110 | )))|Базовая функциональность|Сервис приложения Ядро системы | ||
| 111 | |2|Организационная структура|Базовая функциональность|Сервис приложения Ядро системы | ||
| 112 | |3|Фоновые процессы|Базовая функциональность|Сервис фоновых процессов | ||
| 113 | |4|Ролевая модель|Базовая функциональность|Сервис управления ролями и полномочиями | ||
| 114 | |5|Главная страница|Базовая функциональность|Сервис конфигурации системы | ||
| 115 | |6|Профиль работника|Базовая функциональность|Сервис приложения Ядро системы | ||
| 116 | |7|Целеполагание V1|Целеполагание|Сервис приложения Ядро системы | ||
| 117 | |8|Целеполагание V2|Целеполагание|Сервис приложения Ядро системы | ||
| 118 | |9|Оценка персонала|Оценка|Сервис приложения Ядро системы | ||
| 119 | |10|Управление компетенциями|Оценка|Сервис приложения Ядро системы | ||
| 120 | |(% rowspan="2" %)11|(% rowspan="2" %)Аттестация|(% rowspan="2" %)Оценка|Сервис приложения Ядро системы | ||
| 121 | |Сервис приложения Опросы | ||
| 122 | |12|((( | ||
| 123 | Управление | ||
| 124 | |||
| 125 | профилями должностей | ||
| 126 | )))|Оценка|Сервис приложения Ядро системы | ||
| 127 | |13|Адаптация|Адаптация|Сервис приложения Ядро системы | ||
| 128 | |14|((( | ||
| 129 | Управление | ||
| 130 | |||
| 131 | преемственностью | ||
| 132 | )))|Карьера и развитие|Сервис приложения Ядро системы | ||
| 133 | |15|Управление кадровым резервом|Карьера и развитие|Сервис приложения Ядро системы | ||
| 134 | |(% rowspan="2" %)16|(% rowspan="2" %)Управление ротацией|(% rowspan="2" %)Карьера и развитие|Сервис приложения Ядро системы | ||
| 135 | |Сервис приложения Опросы | ||
| 136 | |17|Управление планами развития|Карьера и развитие|Сервис приложения Ядро системы | ||
| 137 | |(% rowspan="2" %)18|(% rowspan="2" %)Управление карьерным планированием|(% rowspan="2" %)Карьера и развитие|Сервис приложения Ядро системы | ||
| 138 | |Сервис приложения Опросы | ||
| 139 | |19|Управление проектным персоналом|Карьера и развитие|Сервис приложения Ядро системы | ||
| 140 | |20|Рассылка нотификаций|Сервис системных нотификаций|Сервис приложения Менеджер отправки сообщений | ||
| 141 | |21|Средства аналитики нотификаций|Сервис системных нотификаций|Сервис приложения Менеджер управления сообщениями | ||
| 142 | |22|Типовые нотификации|Сервис системных нотификаций|Сервис приложения Менеджер управления сообщениями | ||
| 143 | |23|Оформление нотификаций|Сервис системных нотификаций|Сервис приложения Менеджер управления сообщениями | ||
| 144 | |24|Подписчики нотификаций|Сервис системных нотификаций|Сервис приложения Менеджер управления сообщениями | ||
| 145 | |25|Массовые нотификации|Сервис системных нотификаций|Сервис приложения Менеджер управления сообщениями | ||
| 146 | |||
| 147 | == 1.8 Схема взаимодействия между сервисами == | ||
| 148 | |||
| 149 | [[image:Сервисная архитектура 20240125-1_4e153383e5843e66.jpg||height="436" width="723"]] | ||
| 150 | |||
| 151 | == 1.9 Порты и протоколы взаимодействия == | ||
| 152 | |||
| 153 | (% class="table-bordered" style="width:1007px" %) | ||
| 154 | |(% style="width:72px" %)**№ п/п **|(% style="width:472px" %)**Наименование сервиса**|(% style="width:251px" %)**Имя хоста**|(% style="width:209px" %)**Порты** | ||
| 155 | |(% style="width:72px" %)1|(% style="width:472px" %)Сервис точки входа|(% style="width:251px" %)[host]-balancer|(% style="width:209px" %)22, 443 | ||
| 156 | |(% style="width:72px" %)2|(% style="width:472px" %)Сервис веб приложений|(% style="width:251px" %)[host]-webserver|(% style="width:209px" %)22, 443 | ||
| 157 | |(% style="width:72px" %)3|(% style="width:472px" %)Сервис логирования действий пользователя|(% style="width:251px" %)[host]-weblog|(% style="width:209px" %)22, 443 | ||
| 158 | |(% style="width:72px" %)4|(% style="width:472px" %)Сервис авторизации|(% style="width:251px" %)[host]-auth|(% style="width:209px" %)22, 9443 | ||
| 159 | |(% style="width:72px" %)5|(% style="width:472px" %)Сервис управления ролями и полномочиями|(% style="width:251px" %)[host]-app-authority|(% style="width:209px" %)22, 8091 | ||
| 160 | |(% style="width:72px" %)6|(% style="width:472px" %)Сервис конфигурации системы|(% style="width:251px" %)[host]-configuration|(% style="width:209px" %)22, 8092 | ||
| 161 | |(% style="width:72px" %)7|(% style="width:472px" %)Сервис приложения Ядро системы|(% style="width:251px" %)[host]-app-rt-core|(% style="width:209px" %)22, 8071 | ||
| 162 | |(% style="width:72px" %)8|(% style="width:472px" %)Сервис приложения Опросы|(% style="width:251px" %)[host]-app-quiz|(% style="width:209px" %)22, 8025 | ||
| 163 | |(% style="width:72px" %)9|(% style="width:472px" %)Сервис приложения Отчеты|(% style="width:251px" %)[host]-app-report|(% style="width:209px" %)22, 8089 | ||
| 164 | |(% style="width:72px" %)10|(% style="width:472px" %)Сервис приложения Оценка эффективности|(% style="width:251px" %)[host]-app-monitor|(% style="width:209px" %)22, 8095 | ||
| 165 | |(% style="width:72px" %)11|(% style="width:472px" %)Сервис приложения Менеджер управления сообщениями|(% style="width:251px" %)[host]-notify|(% style="width:209px" %)22, 8094 | ||
| 166 | |(% style="width:72px" %)12|(% style="width:472px" %)Сервис приложения Менеджер отправки сообщений|(% style="width:251px" %)[host]-app-messenger|(% style="width:209px" %)22, 8030 | ||
| 167 | |(% style="width:72px" %)13|(% style="width:472px" %)Сервис приложения Менеджер загрузки файлов|(% style="width:251px" %)[host]-fileupload|(% style="width:209px" %)22, 8099, 9000, 9090 | ||
| 168 | |(% style="width:72px" %)14|(% style="width:472px" %)Сервис фоновых процессов|(% style="width:251px" %)[host]-job|(% style="width:209px" %)22, 8094 | ||
| 169 | |(% style="width:72px" %)15|(% style="width:472px" %)Коннектор данных|(% style="width:251px" %)[host]-connector|(% style="width:209px" %)22, 4000 | ||
| 170 | |(% style="width:72px" %)16|(% style="width:472px" %)Фронт приложения Редактор|(% style="width:251px" %)[host]-editor-front|(% style="width:209px" %)22, 443 | ||
| 171 | |(% style="width:72px" %)17|(% style="width:472px" %)Сервис приложения Редактор|(% style="width:251px" %)[host]-editor-back|(% style="width:209px" %)22, 8097 | ||
| 172 | |(% style="width:72px" %)18|(% style="width:472px" %)Брокер сообщений|(% style="width:251px" %)[host]-kafka|(% style="width:209px" %)22, 9092 | ||
| 173 | |(% style="width:72px" %)19|(% style="width:472px" %)Сервис СУБД|(% style="width:251px" %)[host]-db|(% style="width:209px" %)22, 5432 | ||
| 174 | |(% style="width:72px" %)20|(% style="width:472px" %)Сервис хранилища S3|(% style="width:251px" %)[host]-s3|(% style="width:209px" %)22, 443 | ||
| 175 | |(% style="width:72px" %)21|(% style="width:472px" %)((( | ||
| 176 | Сервис приложения | ||
| 177 | |||
| 178 | Интеграционная шина | ||
| 179 | )))|(% style="width:251px" %)[host]-integration|(% style="width:209px" %)22, 8080 | ||
| 180 | |||
| 181 | ((( | ||
| 182 | = 2. Взаимодействие с системой авторизации = | ||
| 183 | ))) | ||
| 184 | |||
| 185 | Аутентификация и авторизация пользователей выполняется в KeyCloak с использованием внутреннего логина и пароля пользователя для системы заказчика. | ||
| 186 | |||
| 187 | Пользовательский процесс аутентификации и авторизации: | ||
| 188 | |||
| 189 | 1. При переходе без авторизации на защищенную страницу, пользователь переходит на страницу аутентификации Keycloak. | ||
| 190 | 1. Пользователь вводит валидную пару username:password или использует иной провайдер авторизации, доступный на странице аутентификации. | ||
| 191 | 1. После успешной аутентификации пользователь получает JWT ключ авторизации и возвращается на защищенную страницу. | ||
| 192 | 1. Все последующие обращения к страницам или бэкэнд методам производятся с использованием полученного JWT ключа. | ||
| 193 | |||
| 194 | Сервисы приложений получают и расшифровывают JWT ключ пользователя по заложенному в них RSA ключу. Следующим этапом, сервисы опознают инициатора и предоставляют ему информацию в соответствии с его правами доступа. | ||
| 195 | |||
| 196 | Дополнительную информацию о сервисе Keycloak можно получить из официальной документации по ссылке [[__https:~~/~~/www.keycloak.org/documentation__>>url:https://www.keycloak.org/documentation]]. |