Исходный код вики Сервисная архитектура

Редактировал(а) Александра Баруткина 2024/06/27 13:20

Последние авторы
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]].