Диаграмма ЕЦП

graph LR subgraph Kubernetes [контейнерная платформа] KubernetesApi[kubernetes-api] %% business services %% %% Processing Namespace %% subgraph ProcessingNamespace [processing] WorkflowsApi[workflows-api<br/>:80/http] WorkflowsFrontend[workflows-frontend<br/>:80/http] KubernetesEngine[kubernetes-engine] %% infra %% ProcessingPostgreSQL[PostgreSQL<br/>processing_db<br/>:6432/tcp] ProcessingS3[S3<br/>:443/https] %% end infra %% end WorkflowsApi --> ProcessingPostgreSQL WorkflowsApi --> ProcessingS3 KubernetesEngine --> ProcessingPostgreSQL KubernetesEngine --> ProcessingS3 KubernetesEngine --> SarexResources KubernetesEngine --> WorkspacesApi KubernetesEngine --> KubernetesApi KubernetesEngine --> DjangoBackend %% End Processing Namespace %% %% Bim Namespace %% subgraph BimNamespace [bim-api] BimApi[bim-api<br/>:8000/http] BimWorker[worker] %% infra %% BimPostgreSQL[PostgreSQL<br/>sarex_db<br/>:6432/tcp] BimS3[S3<br/>sarex-media-storage<br/>:443/https] BimRabbitMQ[RabbitMQ<br/>:5672/amqp] %% end infra %% end BimApi --> BimPostgreSQL BimApi --> BimS3 BimApi --> BimRabbitMQ BimApi --> WorkspacesApi BimApi --> DjangoBackend BimWorker --> BimPostgreSQL BimWorker --> BimS3 BimWorker --> BimRabbitMQ %% End Processing Namespace %% %% Django Namespace %% subgraph DjangoNamespace [django] DjangoFrontend[frontend<br/>:80/http] DjangoBackend[backend<br/>:8000/http] S3ProxyBackend[s3-proxy<br/>:80/http] CeleryWorker[celery-worker] %% infra %% DjangoPostgreSQL[PostgreSQL<br/>sarex_db<br/>:6432/tcp] DjangoS3[S3<br/>sarex-media-storage<br/>:443/https] DjangoRabbitMQ[RabbitMQ<br/>:5672/amqp] DjangoRedis[Redis<br/>:6379/amqp] %% end infra %% end DjangoBackend --> DjangoPostgreSQL DjangoBackend --> DjangoRedis DjangoBackend --> DjangoS3 DjangoBackend --> DjangoRabbitMQ DjangoBackend --> WorkflowsApi DjangoBackend --> Measurements DjangoBackend --> Eav S3ProxyBackend --> DjangoS3 CeleryWorker --> DjangoPostgreSQL CeleryWorker --> DjangoRedis CeleryWorker --> DjangoS3 CeleryWorker --> DjangoRabbitMQ CeleryWorker --> WorkflowsApi CeleryWorker --> Measurements CeleryWorker --> Eav %% End Django Namespace %% %% Projects Namespace %% subgraph ProjectsNamespace [projects] ProjectsFrontend[projects-frontend-static<br/>:80/http] end %% End Projects Namespace %% %% Workspaces Namespace %% subgraph WorkspacesNamespace [workspaces] WorkspacesApi[workspaces-api<br/>:8000/http] WorkspacesFrontend[workspaces-frontend-static<br/>:80/http] %% infra %% WorkspacesPostgreSQL[PostgreSQL<br/>workspaces_db<br/>:6432/tcp] %% end infra %% end WorkspacesApi --> WorkspacesPostgreSQL %% End Processing Namespace %% %% Resources Namespace %% subgraph ResourcesNamespace [resources] SarexResources[sarex-resources<br/>:8000/http] frontend[frontend<br/>:80/http] %% infra %% ResourcesPostgreSQL[PostgreSQL<br/>sarex_db<br/>:6432/tcp] ResourcesS3[S3<br/>:443/https] %% end infra %% end SarexResources --> ResourcesS3 SarexResources --> ResourcesPostgreSQL SarexResources --> DjangoBackend %% End Resources Namespace %% %% Eav Namespace %% subgraph EavNamespace [eav] Eav[backend<br/>:80/http] %% infra %% EavPostgreSQL[PostgreSQL<br/>eav_db<br/>:6432/tcp] EavS3[S3<br/>:443/https] %% end infra %% end Eav --> EavS3 Eav --> EavPostgreSQL %% End Resources Namespace %% %% Measurements Namespace %% subgraph MeasurementsNamespace [measurements] direction LR Measurements[measurement<br/>:8000/http] %% infra %% MeasurementsS3[S3<br/>:443/https] %% end infra %% end Measurements --> MeasurementsS3 %% End Measurements Namespace %% %% infra services %% subgraph InfrastructureService [инфраструктура] direction TB subgraph DbService [База данных] PostgreSQL[PostgreSQL<br/>:6432/tcp] end subgraph StorageService [Объектное хранилище] S3[S3 API<br/>:443/https] end subgraph RabbitMQService [Брокер сообщений] RabbitMQ[RabbitMQ<br/>:5672/amqp] end subgraph RedisService [База данных ключ-значение] Redis[Redis] end end end %% style %% style DjangoNamespace fill:#e6f7ff style ProjectsFrontend fill:#e6f7ff style ProcessingNamespace fill:#e6f7ff style BimNamespace fill:#e6f7ff style WorkspacesNamespace fill:#e6f7ff style EavNamespace fill:#e6f7ff style ResourcesNamespace fill:#e6f7ff style MeasurementsNamespace fill:#e6f7ff style InfrastructureService fill:#f8f9fa style DbService fill:#e8f5e9 style StorageService fill:#fff3e0 style RabbitMQService fill:#f3e5f5 style RedisService fill:#ffebee

Платформа разделена на функциональные блоки - namespace-ы:

django:

frontend - frontend, основной компонент для отображения в браузере.

backend - REST API Server, отвечает за SSO и запуск задач на обработку файлов las, dem, ofp. Содержит информацию о правах пользователей и их функциональных группах.

celery-worker - celery воркер, отвечает за короткие задачи по обновлению статусов по REST API и отправку CEF логов в SIEM систему.

s3-proxy - раздача статических файлов из S3.

measurements:

measurement - REST API Server, отвечает за вычисление измерений на съёмках.

projects:

projects-frontend-static - frontend страница отображение объектов. Вкладка обзор.

eav:

backend - REST API Server, отвечает за менеджмент атрибутов различных сущностей в платформе. Используется в модуле планирования и аналитики.

resources:

sarex-resources - REST API Server, дополнительное распределение объектов по проектам в платформе.

frontend - UI для редактирования проектов на платформе.

bim:

bim-api - REST API Server, менеджмент bim файлов и запуск их обработки.

worker - Celery Worker, обработка bim файлов для отображения на платформе.

workspace:

workspaces-api - REST API Server, используется для отображения сравнения bim-ов и облаков точек.

workspaces-frontend-static - frontend, используется для отображения сравнения bim-ов и облаков точек.

processing:

workflows-api - REST API Server, используется для менеджмента задач для kubernetes.

kubernetes-engine - worker для менеджмента kubernetes job по информации из базы данных

workflows-frontend - frontend для отображения списка задач.