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 Development subgraph cluster_local { label="Local Development"; style=filled; fillcolor="#E3F2FD"; subgraph cluster_kind { label="Kind Cluster"; style=filled; fillcolor="#BBDEFB"; tilt [label="Tilt\n(Live Reload)", shape=component, fillcolor="#90CAF9"]; k8s_local [label="K8s Pods\n(via Kustomize)", fillcolor="#64B5F6"]; } compose [label="Docker Compose\n(Alternative)", fillcolor="#90CAF9", style="rounded,dashed"]; } // AWS Staging/Demo subgraph cluster_aws { label="AWS (sysmonstm.mcrn.ar)"; style=filled; fillcolor="#E8F5E9"; subgraph cluster_ec2 { label="EC2 t2.small"; style=filled; fillcolor="#C8E6C9"; compose_ec2 [label="Docker Compose\n(All Services)", fillcolor="#A5D6A7"]; nginx [label="Nginx\n(SSL Termination)", fillcolor="#81C784"]; } subgraph cluster_lambda { label="Lambda (Data Processing)"; style=filled; fillcolor="#DCEDC8"; lambda_agg [label="Aggregator\nLambda", fillcolor="#AED581"]; lambda_compact [label="Compactor\nLambda", fillcolor="#9CCC65"]; } sqs [label="SQS\n(Buffer)", shape=hexagon, fillcolor="#FFE082"]; s3 [label="S3\n(Backup)", shape=cylinder, fillcolor="#FFE082"]; } // CI/CD subgraph cluster_cicd { label="CI/CD"; style=filled; fillcolor="#F3E5F5"; woodpecker [label="Woodpecker CI", fillcolor="#CE93D8"]; registry [label="Container\nRegistry", shape=cylinder, fillcolor="#BA68C8"]; } // 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"]; } // Connections tilt -> k8s_local [style=invis]; woodpecker -> registry [label="Push"]; registry -> compose_ec2 [label="Pull"]; registry -> k8s_local [label="Pull", style=dashed]; nginx -> compose_ec2 [label="Proxy"]; compose_ec2 -> sqs [label="Events"]; sqs -> lambda_agg [label="Trigger"]; lambda_compact -> s3 [label="Archive"]; coll1 -> compose_ec2 [label="gRPC", lhead=cluster_ec2]; coll2 -> compose_ec2 [label="gRPC", lhead=cluster_ec2]; coll3 -> compose_ec2 [label="gRPC", lhead=cluster_ec2]; }