Expand infrastructure diagram in README.md to include detailed business service groups, dependencies, and inter-service connections
This commit is contained in:
parent
5903d245d6
commit
57e2867d15
231
README.md
231
README.md
@ -89,7 +89,60 @@ flowchart LR
|
|||||||
%% ===== Бизнес-сервисы =====
|
%% ===== Бизнес-сервисы =====
|
||||||
subgraph APPS["💼 Бизнес-сервисы"]
|
subgraph APPS["💼 Бизнес-сервисы"]
|
||||||
direction TB
|
direction TB
|
||||||
ExampleApp["example-app<br/>HTTP :8080"]:::app
|
|
||||||
|
subgraph CORE["🧩 Платформа / Core"]
|
||||||
|
direction LR
|
||||||
|
Django["django<br/>:8000 + srx-admin"]:::app
|
||||||
|
EAV["eav<br/>атрибуты сущностей"]:::app
|
||||||
|
CI["control-interface<br/>UI :80"]:::app
|
||||||
|
Workspaces["workspaces"]:::app
|
||||||
|
Projects["projects"]:::app
|
||||||
|
Subs["subscriptions"]:::app
|
||||||
|
SysLog["system-log"]:::app
|
||||||
|
MsgHub["message-hub"]:::app
|
||||||
|
FaaS["faas<br/>functions runtime"]:::app
|
||||||
|
Flows["flows<br/>оркестрация"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph DOCS["📂 Документы / CDE"]
|
||||||
|
direction LR
|
||||||
|
Docs["documentations<br/>filestream + pdm"]:::app
|
||||||
|
DocLink["document-link"]:::app
|
||||||
|
Attach["attachments<br/>HelmRelease"]:::app
|
||||||
|
Transmittal["transmittal"]:::app
|
||||||
|
CDE["cde<br/>common data env"]:::app
|
||||||
|
Drawings["drawings"]:::app
|
||||||
|
BIM["bim<br/>3D-модели"]:::app
|
||||||
|
Stamp["stamp-verification"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph QUALITY["✅ Контроль качества"]
|
||||||
|
direction LR
|
||||||
|
Inspect["inspections"]:::app
|
||||||
|
Checklists["checklists"]:::app
|
||||||
|
Remarks["remarks"]:::app
|
||||||
|
Issues["issues"]:::app
|
||||||
|
RFI["rfi<br/>request for info"]:::app
|
||||||
|
Reviews["reviews"]:::app
|
||||||
|
Prescr["prescriptions"]:::app
|
||||||
|
Compare["comparisons<br/>diff чертежей"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph FIELD["📐 Полевые данные"]
|
||||||
|
direction LR
|
||||||
|
Measure["measurements"]:::app
|
||||||
|
Mapper["mapper"]:::app
|
||||||
|
XSection["cross-section"]:::app
|
||||||
|
Process["processing"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph PMG["🏗 Управление проектом"]
|
||||||
|
direction LR
|
||||||
|
PM["pm<br/>project mgmt"]:::app
|
||||||
|
Contracts["contracts"]:::app
|
||||||
|
Resources["resources"]:::app
|
||||||
|
Notes["notes"]:::app
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
%% ===== GitOps потоки =====
|
%% ===== GitOps потоки =====
|
||||||
@ -107,8 +160,13 @@ flowchart LR
|
|||||||
%% ===== Внешний трафик =====
|
%% ===== Внешний трафик =====
|
||||||
User ==>|HTTPS 443| Gateway
|
User ==>|HTTPS 443| Gateway
|
||||||
LE -. ACME HTTP-01 .-> Cert
|
LE -. ACME HTTP-01 .-> Cert
|
||||||
Gateway ==>|VirtualService<br/>mTLS| ExampleApp
|
Gateway ==>|VirtualService<br/>mTLS| CI
|
||||||
Gateway ==>|VirtualService<br/>mTLS| Camunda
|
Gateway ==>|/api| Django
|
||||||
|
Gateway ==>|/bim| BIM
|
||||||
|
Gateway ==>|/cde| CDE
|
||||||
|
Gateway ==>|/docs| Docs
|
||||||
|
Gateway ==>|/pm| PM
|
||||||
|
Gateway ==>|VirtualService| Camunda
|
||||||
Gateway ==>|VirtualService| Operate
|
Gateway ==>|VirtualService| Operate
|
||||||
Gateway ==>|/auth| Keycloak
|
Gateway ==>|/auth| Keycloak
|
||||||
Gateway ==>|/oauth| Zitadel
|
Gateway ==>|/oauth| Zitadel
|
||||||
@ -116,26 +174,80 @@ flowchart LR
|
|||||||
Gateway ==>|/minio| MinIO
|
Gateway ==>|/minio| MinIO
|
||||||
Admin -.->|kubectl| Dashboard
|
Admin -.->|kubectl| Dashboard
|
||||||
|
|
||||||
|
%% ===== Frontend → backend (через control-interface) =====
|
||||||
|
CI -- "API gateway" --> Django
|
||||||
|
CI -- "API gateway" --> PM
|
||||||
|
CI -- "API gateway" --> Projects
|
||||||
|
CI -- "API gateway" --> Workspaces
|
||||||
|
|
||||||
%% ===== Подключения к данным =====
|
%% ===== Подключения к данным =====
|
||||||
|
Django -- "JDBC/ORM" --> PG
|
||||||
|
EAV -- "JDBC" --> PG
|
||||||
|
PM -- "JDBC" --> PG
|
||||||
|
Contracts -- "JDBC" --> PG
|
||||||
|
Resources -- "JDBC" --> PG
|
||||||
|
Projects -- "JDBC" --> PG
|
||||||
|
Workspaces -- "JDBC" --> PG
|
||||||
|
Subs -- "JDBC" --> PG
|
||||||
|
SysLog -- "JDBC" --> PG
|
||||||
|
Docs -- "JDBC" --> PG
|
||||||
|
DocLink -- "JDBC" --> PG
|
||||||
|
CDE -- "JDBC" --> PG
|
||||||
|
BIM -- "JDBC" --> PG
|
||||||
|
Drawings -- "JDBC" --> PG
|
||||||
|
Inspect -- "JDBC" --> PG
|
||||||
|
Checklists -- "JDBC" --> PG
|
||||||
|
Issues -- "JDBC" --> PG
|
||||||
|
Remarks -- "JDBC" --> PG
|
||||||
|
RFI -- "JDBC" --> PG
|
||||||
|
Reviews -- "JDBC" --> PG
|
||||||
|
Prescr -- "JDBC" --> PG
|
||||||
|
Compare -- "JDBC" --> PG
|
||||||
|
Measure -- "JDBC" --> PG
|
||||||
|
Mapper -- "JDBC" --> PG
|
||||||
|
XSection -- "JDBC" --> PG
|
||||||
|
Notes -- "JDBC" --> PG
|
||||||
|
Stamp -- "JDBC" --> PG
|
||||||
|
Transmittal -- "JDBC" --> PG
|
||||||
Camunda -- "JDBC" --> PG
|
Camunda -- "JDBC" --> PG
|
||||||
Operate -- "JDBC" --> PG
|
Operate -- "JDBC" --> PG
|
||||||
ExampleApp -- "JDBC" --> PG
|
|
||||||
Zitadel -- "JDBC" --> PG
|
Zitadel -- "JDBC" --> PG
|
||||||
Keycloak -- "JDBC" --> PG
|
Keycloak -- "JDBC" --> PG
|
||||||
Camunda -- "cache TTL" --> Redis
|
|
||||||
ExampleApp -- "cache + pub/sub" --> Redis
|
%% ===== Redis (общий кэш / sessions) =====
|
||||||
Keycloak -- "session cache" --> Redis
|
Django -- "session/cache" --> Redis
|
||||||
|
CI -- "session" --> Redis
|
||||||
|
PM -- "cache" --> Redis
|
||||||
|
Workspaces -- "cache" --> Redis
|
||||||
|
Subs -- "pub/sub realtime" --> Redis
|
||||||
|
MsgHub -- "pub/sub" --> Redis
|
||||||
|
Flows -- "state" --> Redis
|
||||||
|
FaaS -- "queue" --> Redis
|
||||||
|
Camunda -- "cache" --> Redis
|
||||||
|
Keycloak -- "session" --> Redis
|
||||||
|
|
||||||
%% ===== S3 / объектное хранилище =====
|
%% ===== S3 / объектное хранилище =====
|
||||||
ExampleApp -- "PUT/GET" --> S3Proxy
|
Attach -- "PUT/GET" --> S3Proxy
|
||||||
Camunda -- "attachments" --> S3Proxy
|
Docs -- "filestream" --> S3Proxy
|
||||||
|
BIM -- "IFC/RVT" --> S3Proxy
|
||||||
|
Drawings -- "DWG/PDF" --> S3Proxy
|
||||||
|
CDE -- "files" --> S3Proxy
|
||||||
|
Compare -- "rendered diff" --> S3Proxy
|
||||||
|
Stamp -- "signed PDF" --> S3Proxy
|
||||||
|
Transmittal -- "bundles" --> S3Proxy
|
||||||
|
Process -- "raw + результаты" --> S3Proxy
|
||||||
|
Mapper -- "tiles" --> S3Proxy
|
||||||
|
Measure -- "snapshots" --> S3Proxy
|
||||||
|
XSection -- "профили" --> S3Proxy
|
||||||
S3Proxy -- "S3 API" --> MinIO
|
S3Proxy -- "S3 API" --> MinIO
|
||||||
|
|
||||||
%% ===== Секреты =====
|
%% ===== Vault (secrets) =====
|
||||||
ExampleApp -. "approle" .-> Vault
|
Django -. "kv" .-> Vault
|
||||||
Camunda -. "approle" .-> Vault
|
Camunda -. "approle" .-> Vault
|
||||||
Keycloak -. "kv/secrets" .-> Vault
|
Keycloak -. "kv" .-> Vault
|
||||||
Zitadel -. "kv/secrets" .-> Vault
|
Zitadel -. "kv" .-> Vault
|
||||||
|
FaaS -. "approle" .-> Vault
|
||||||
|
Flows -. "approle" .-> Vault
|
||||||
|
|
||||||
%% ===== Storage / PVC =====
|
%% ===== Storage / PVC =====
|
||||||
PG -.->|PVC| LPP
|
PG -.->|PVC| LPP
|
||||||
@ -146,26 +258,87 @@ flowchart LR
|
|||||||
MinIO -.->|PVC| LPP
|
MinIO -.->|PVC| LPP
|
||||||
Vault -.->|PVC| LPP
|
Vault -.->|PVC| LPP
|
||||||
|
|
||||||
%% ===== Межсервисные маршруты =====
|
%% ===== Kafka (event bus) =====
|
||||||
ExampleApp -- "REST POST /process<br/>start workflow" --> Camunda
|
SysLog -- "consume audit.*" --> Kafka
|
||||||
Camunda -- "REST callback<br/>job worker" --> ExampleApp
|
MsgHub -- "produce notify.*" --> Kafka
|
||||||
Camunda -- "produce<br/>topic: bpm.events" --> Kafka
|
Subs -- "consume notify.*" --> Kafka
|
||||||
ExampleApp -- "consume<br/>topic: bpm.events" --> Kafka
|
Flows -- "produce/consume flows.*" --> Kafka
|
||||||
ExampleApp -- "produce<br/>topic: app.audit" --> Kafka
|
Camunda -- "produce bpm.events" --> Kafka
|
||||||
Operate -- "consume<br/>zeebe-records" --> Kafka
|
Operate -- "consume zeebe-records" --> Kafka
|
||||||
ExampleApp -- "publish<br/>queue: tasks" --> RMQ
|
BIM -- "produce bim.processed" --> Kafka
|
||||||
Camunda -- "consume<br/>queue: tasks" --> RMQ
|
Drawings -- "produce drawings.uploaded" --> Kafka
|
||||||
|
Process -- "consume processing.jobs" --> Kafka
|
||||||
|
Compare -- "consume drawings.uploaded" --> Kafka
|
||||||
|
Inspect -- "produce inspect.events" --> Kafka
|
||||||
|
Issues -- "consume inspect.events" --> Kafka
|
||||||
|
Remarks -- "produce remarks.events" --> Kafka
|
||||||
|
Reviews -- "consume remarks.events" --> Kafka
|
||||||
|
|
||||||
|
%% ===== RabbitMQ (work queues) =====
|
||||||
|
FaaS -- "consume tasks.*" --> RMQ
|
||||||
|
Flows -- "publish tasks.*" --> RMQ
|
||||||
|
Process -- "publish jobs" --> RMQ
|
||||||
|
Mapper -- "consume tile.jobs" --> RMQ
|
||||||
|
XSection -- "consume xs.jobs" --> RMQ
|
||||||
|
Stamp -- "consume sign.jobs" --> RMQ
|
||||||
|
Camunda -- "consume bpm.tasks" --> RMQ
|
||||||
|
|
||||||
|
%% ===== Межсервисные REST маршруты =====
|
||||||
|
PM -- "REST" --> Projects
|
||||||
|
PM -- "REST" --> Contracts
|
||||||
|
PM -- "REST" --> Resources
|
||||||
|
Projects -- "REST" --> Workspaces
|
||||||
|
Contracts -- "REST" --> Resources
|
||||||
|
Inspect -- "REST" --> Checklists
|
||||||
|
Inspect -- "REST" --> Issues
|
||||||
|
Issues -- "REST" --> Remarks
|
||||||
|
Reviews -- "REST" --> RFI
|
||||||
|
Reviews -- "REST" --> Prescr
|
||||||
|
RFI -- "REST" --> DocLink
|
||||||
|
DocLink --> Docs
|
||||||
|
DocLink --> CDE
|
||||||
|
CDE -- "REST" --> Docs
|
||||||
|
CDE -- "REST" --> Drawings
|
||||||
|
CDE -- "REST" --> BIM
|
||||||
|
Transmittal -- "REST" --> CDE
|
||||||
|
Transmittal -- "REST" --> Docs
|
||||||
|
Drawings -- "REST" --> Compare
|
||||||
|
Drawings -- "REST" --> Stamp
|
||||||
|
Measure -- "REST" --> Mapper
|
||||||
|
Mapper -- "REST" --> XSection
|
||||||
|
XSection --> Process
|
||||||
|
BIM -- "REST" --> Process
|
||||||
|
Notes -- "REST" --> DocLink
|
||||||
|
Flows -- "trigger" --> FaaS
|
||||||
|
Flows -- "start" --> Camunda
|
||||||
|
Camunda -- "callback" --> Flows
|
||||||
|
EAV -- "schemas" --> Django
|
||||||
|
MsgHub -- "deliver email/push" --> Subs
|
||||||
|
|
||||||
%% ===== AuthN / AuthZ =====
|
%% ===== AuthN / AuthZ =====
|
||||||
ExampleApp -. "validate JWT<br/>JWKS" .-> Keycloak
|
Django -. "OIDC validate" .-> Keycloak
|
||||||
Camunda -. "validate JWT<br/>JWKS" .-> Zitadel
|
CI -. "OIDC login" .-> Keycloak
|
||||||
Operate -. "OIDC login" .-> Zitadel
|
PM -. "JWT" .-> Keycloak
|
||||||
|
Camunda -. "JWT" .-> Zitadel
|
||||||
|
Operate -. "OIDC" .-> Zitadel
|
||||||
Dashboard -. "OIDC" .-> Keycloak
|
Dashboard -. "OIDC" .-> Keycloak
|
||||||
|
BIM -. "JWT" .-> Keycloak
|
||||||
|
CDE -. "JWT" .-> Keycloak
|
||||||
|
Docs -. "JWT" .-> Keycloak
|
||||||
|
|
||||||
%% ===== Service mesh observability =====
|
%% ===== Service mesh sidecar metrics =====
|
||||||
Camunda -. "envoy sidecar<br/>metrics" .-> Pilot
|
CI -. "envoy" .-> Pilot
|
||||||
ExampleApp -. "envoy sidecar<br/>metrics" .-> Pilot
|
Django -. "envoy" .-> Pilot
|
||||||
Operate -. "envoy sidecar" .-> Pilot
|
Camunda -. "envoy" .-> Pilot
|
||||||
|
BIM -. "envoy" .-> Pilot
|
||||||
|
Flows -. "envoy" .-> Pilot
|
||||||
|
|
||||||
|
%% ===== Стили подгрупп бизнес-сервисов =====
|
||||||
|
style CORE fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
|
||||||
|
style DOCS fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
|
||||||
|
style QUALITY fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
|
||||||
|
style FIELD fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
|
||||||
|
style PMG fill:#fdf2f8,stroke:#ec4899,stroke-width:1px
|
||||||
|
|
||||||
%% ===== Стили =====
|
%% ===== Стили =====
|
||||||
classDef ext fill:#1f2937,stroke:#9ca3af,stroke-width:2px,color:#f9fafb
|
classDef ext fill:#1f2937,stroke:#9ca3af,stroke-width:2px,color:#f9fafb
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user