Архитектурная схема Системы хранения данных
Схема взаимодействия компонентов Системы хранения данных.

| Наименование сервиса | Описание |
|---|---|
| Arangodb | База данных, содержащая метаданные файлов (в т. ч. информацию о владельце документа, правах доступа и пр.) |
| Aristoteles | Сервер приложений, выступающий backend-частью для компонентов Системы редактирования и совместной работы в части выполнения файловых операций, разграничения прав доступа, версионирования, фиксации истории событий по объектам |
| Dionis | Сервис, отвечающий за удаление и переназначение прав доступа для объектов пользователей |
| Elasticsearch | Cервис, отвечающий за поиск по содержимому по хранящимся файлам |
| Epicure | Сервис формирования и отправки сообщений безопасности с последующей отправкой в аудит-системы (SIEM) |
| Euclid | Rest API сервис, отвечает за администрирование пользователей в системе |
| Guests_links | Сервис, осуществляющий создание, обновление, удаление гостевых ссылок |
| Heraclitus | Сервис очистки архивных данных, удаленных пользователями из корзины. Может настраивать сроки хранения архивных данных и автоудаления их с диска по заданному расписанию |
| Keycloak | Сервис SSO, сохраняет в себе настройки системы, данные по тенантам и пользователям |
| Nginx-gost | Прокси-сервис, обеспечивающий доступ до: rabbitmq, aristotels, euclid |
| Pheidippides | Сервис, осуществляющий обработку событий в Redis каналах (автоматическая блокировка IP-адресов/публичных ссылок) |
| Postrgres | PostgreSQL, база данных для сервиса авторизации Keycloak |
| RabbitMQ | Очередь сообщений. Используется для передачи документов в elasticsearch для поиска по содержимому документов и для передачи межкомпонентных уведомлений от Системы хранения данных в Систему редактирования и совместной работы об изменении настроек хранилища |
| Redis | База данных «ключ-значение» для неперсистентных данных (в основном используется для хранения токенов и других авторизационных данных) |
| sharing-api | Сервис, осуществляющий создание и управление прямыми ссылками, проверку доступа к файлам по прямым ссылкам |
| Sisyphus_ sisyphussearch | Сервис, осуществляющий поиск по содержимому документов в elasticsearch |
| Sisyphus_ sisyphusworker | Сервис, осуществляющий передачу файлов из rabbitMQ в elasticsearch |
| Storage S3 | Блок storage осуществляет хранение файлов системы. В качестве хранилища S3 в проекте используется minIO. |
| subscriptions | Сервис, отвечающий за функционал подписок и уведомлений |
| api_gateway | Внутренний прокси-сервер PGS. Расположен после Nginx и перенаправляет запросы с постфиксом /pgsapi, /adminapi в соответствующие сервисы |
| user_listener | Сервис для прослушивания событий в PostgreSQL. Используется при интеграции с внешними каталогами (AD, FreeIPA, OpenLDAP). Отслеживает события изменений статуса пользователя и отправляет запросы в Euclid по http для обновления статуса пользователя |
| restrictions_rules | Сервис с правилами запретов и исключений. Интерфейс управления доступен из административной панели |