Files
sysmonstm/docs/architecture/03-deployment.dot
2026-03-16 13:35:53 -03:00

76 lines
2.2 KiB
Plaintext

digraph Deployment {
rankdir=TB;
compound=true;
fontname="Helvetica";
node [fontname="Helvetica", fontsize=10];
edge [fontname="Helvetica", fontsize=9];
labelloc="t";
label="Deployment Architecture";
fontsize=14;
node [shape=box, style="rounded,filled"];
// Local Stack
subgraph cluster_local {
label="Local Stack (Docker Compose)";
style=filled;
fillcolor="#E8F5E9";
aggregator [label="Aggregator\n(gRPC Server)", fillcolor="#A5D6A7"];
gateway [label="Gateway\n(FastAPI)", fillcolor="#A5D6A7"];
alerts [label="Alerts\nService", fillcolor="#A5D6A7"];
redis [label="Redis", shape=cylinder, fillcolor="#C8E6C9"];
timescaledb [label="TimescaleDB", shape=cylinder, fillcolor="#C8E6C9"];
}
// AWS Edge
subgraph cluster_aws {
label="AWS (sysmonstm.mcrn.ar)";
style=filled;
fillcolor="#F3E5F5";
edge_relay [label="Edge\n(WebSocket Relay)", fillcolor="#CE93D8"];
}
// CI/CD
subgraph cluster_cicd {
label="CI/CD";
style=filled;
fillcolor="#E3F2FD";
woodpecker [label="Woodpecker CI", fillcolor="#90CAF9"];
registry [label="Container\nRegistry", shape=cylinder, fillcolor="#64B5F6"];
}
// Collectors (External)
subgraph cluster_collectors {
label="Monitored Machines";
style=dashed;
color=gray;
coll1 [label="Collector\n(Machine 1)", fillcolor="#FFCCBC"];
coll2 [label="Collector\n(Machine 2)", fillcolor="#FFCCBC"];
coll3 [label="Collector\n(Machine N)", fillcolor="#FFCCBC"];
}
// Browser
browser [label="Browser\n(Dashboard)", fillcolor="#FFF3E0"];
// Connections
coll1 -> aggregator [label="gRPC"];
coll2 -> aggregator [label="gRPC"];
coll3 -> aggregator [label="gRPC"];
aggregator -> redis [label="State"];
aggregator -> timescaledb [label="Store"];
gateway -> aggregator [label="gRPC"];
gateway -> edge_relay [label="WebSocket\nForward"];
edge_relay -> browser [label="WebSocket", dir=both];
woodpecker -> registry [label="Push"];
registry -> edge_relay [label="Pull", style=dashed];
registry -> aggregator [label="Pull", style=dashed, lhead=cluster_local];
}