Files
nova/docs/graphs/deployment.dot

87 lines
3.5 KiB
Plaintext

digraph deployment {
rankdir=TB
bgcolor="#0a0e17"
fontname="Helvetica"
node [fontname="Helvetica" fontsize=10 style=filled color="#1e2a4a" fontcolor="#e8eaf0"]
edge [fontname="Helvetica" fontsize=9 fontcolor="#8892a8" color="#4a5568"]
label="Deployment — Kind Clusters (dev) / EC2 (prod)"
labelloc=t
fontsize=14
fontcolor="#0066ff"
user [label="Browser" fillcolor="#243056" shape=box]
subgraph cluster_ec2 {
label="EC2 (mcrn.ar)"
color="#ff9800"
fontcolor="#ff9800"
style=rounded
nginx_edge [label="nginx (gateway container)\n443 · SSL\nstellarair.mcrn.ar\nlangfuse.mcrn.ar\nnova.mcrn.ar (Kong backend)" fillcolor="#121829" shape=box]
nova_ui [label="nova-ui\nnginx + Vue build" fillcolor="#0d1a33" shape=box]
nova_api [label="nova-api\nuvicorn · FastAPI\nMCP clients (stdio)" fillcolor="#0d1a33" shape=box]
}
subgraph cluster_kind_unt {
label="Kind Cluster: unt (local dev)"
color="#0066ff"
fontcolor="#0066ff"
style=rounded
unt_ui [label="ui pod\nnginx + Vue\nNodePort 30040" fillcolor="#121829" shape=box]
unt_api [label="api pod\nuvicorn · FastAPI" fillcolor="#121829" shape=box]
}
subgraph cluster_kind_lng {
label="Kind Cluster: lng (shared observability)"
color="#00c853"
fontcolor="#00c853"
style=rounded
lf_web [label="langfuse-web\nNext.js\nNodePort 30030" fillcolor="#121829" shape=box]
lf_worker [label="langfuse-worker\nClickHouse writer" fillcolor="#121829" shape=box]
lf_ch [label="ClickHouse\ntraces · spans" fillcolor="#0d1a33" shape=cylinder]
lf_pg [label="Postgres\nmetadata" fillcolor="#0d1a33" shape=cylinder]
lf_redis [label="Redis\nqueue · cache" fillcolor="#0d1a33" shape=cylinder]
lf_minio [label="MinIO\nS3 events" fillcolor="#0d1a33" shape=cylinder]
}
subgraph cluster_external {
label="External APIs"
color="#00c853"
fontcolor="#00c853"
style=dashed
ext_weather [label="OpenMeteo" fillcolor="#0d2a0d" shape=octagon fontcolor="#00c853"]
ext_faa [label="FAA" fillcolor="#0d2a0d" shape=octagon fontcolor="#00c853"]
ext_bedrock [label="Bedrock / Groq\nAnthropic / OpenAI" fillcolor="#243056" shape=octagon]
ext_kong [label="Kong Konnect\n(optional gateway)" fillcolor="#243056" shape=octagon style="filled,dashed"]
}
// Prod path
user -> nginx_edge [label="stellarair.mcrn.ar" color="#ff9800"]
user -> ext_kong [label="(API governance)" style=dashed color="#4a5568"]
ext_kong -> nginx_edge [label="X-Gateway-Secret" style=dashed color="#4a5568"]
nginx_edge -> nova_ui
nova_ui -> nova_api [label="/agents /scenarios"]
nova_api -> ext_weather [label="HTTP" color="#00c853"]
nova_api -> ext_faa [label="HTTP" color="#00c853"]
nova_api -> ext_bedrock [label="LLM calls" style=dashed]
// Dev path
user -> unt_ui [label="localhost:8040" color="#0066ff"]
unt_ui -> unt_api
unt_api -> ext_weather [style=dashed color="#00c853"]
unt_api -> ext_faa [style=dashed color="#00c853"]
unt_api -> ext_bedrock [style=dashed]
// Observability (shared by both dev and prod API)
unt_api -> lf_web [label="OTLP traces" style=dotted color="#00c853"]
nova_api -> lf_web [label="OTLP traces" style=dotted color="#00c853"]
lf_web -> lf_redis
lf_worker -> lf_redis
lf_worker -> lf_ch
lf_web -> lf_pg
lf_web -> lf_minio
}