Диаграмма ЕЦП
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 для отображения списка задач.