photoncloud-monorepo/docs/component-dependencies.dot

131 lines
6.2 KiB
Text

digraph ComponentDependencies {
rankdir=TB;
node [shape=box, style=rounded];
// Infrastructure Layer (Base Services)
subgraph cluster_infra {
label="Infrastructure Layer";
style=dashed;
ChainFire [fillcolor="#e1f5ff", style="filled,rounded"];
FlareDB [fillcolor="#e1f5ff", style="filled,rounded"];
}
// Platform Layer
subgraph cluster_platform {
label="Platform Layer";
style=dashed;
IAM [fillcolor="#fff4e1", style="filled,rounded"];
Deployer [fillcolor="#fff4e1", style="filled,rounded"];
}
// Application Layer
subgraph cluster_app {
label="Application Layer";
style=dashed;
PlasmaVMC [fillcolor="#e8f5e9", style="filled,rounded"];
PrismNET [fillcolor="#e8f5e9", style="filled,rounded"];
FlashDNS [fillcolor="#e8f5e9", style="filled,rounded"];
FiberLB [fillcolor="#e8f5e9", style="filled,rounded"];
APIGateway [fillcolor="#e8f5e9", style="filled,rounded"];
LightningStor [fillcolor="#e8f5e9", style="filled,rounded"];
NightLight [fillcolor="#e8f5e9", style="filled,rounded"];
CreditService [fillcolor="#e8f5e9", style="filled,rounded"];
K8sHost [fillcolor="#e8f5e9", style="filled,rounded"];
}
// Deployment Layer
subgraph cluster_deploy {
label="Deployment Layer";
style=dashed;
NixOSModules [fillcolor="#f3e5f5", style="filled,rounded"];
NetbootImages [fillcolor="#f3e5f5", style="filled,rounded"];
BootstrapISO [fillcolor="#f3e5f5", style="filled,rounded"];
FirstBootAutomation [fillcolor="#f3e5f5", style="filled,rounded"];
NixNOS [fillcolor="#f3e5f5", style="filled,rounded"];
}
// Infrastructure dependencies
FlareDB -> ChainFire [label="requires", color=blue];
// Platform dependencies
IAM -> FlareDB [label="uses", color=blue];
IAM -> ChainFire [label="uses", color=blue, style=dashed];
Deployer -> ChainFire [label="storage", color=blue];
// Application dependencies on Infrastructure
PlasmaVMC -> ChainFire [label="uses", color=blue, style=dashed];
PlasmaVMC -> FlareDB [label="uses", color=blue, style=dashed];
PrismNET -> ChainFire [label="uses", color=blue, style=dashed];
FlashDNS -> ChainFire [label="uses", color=blue, style=dashed];
FlashDNS -> FlareDB [label="uses", color=blue, style=dashed];
FiberLB -> ChainFire [label="uses", color=blue, style=dashed];
FiberLB -> FlareDB [label="uses", color=blue, style=dashed];
LightningStor -> ChainFire [label="uses", color=blue, style=dashed];
LightningStor -> FlareDB [label="uses", color=blue, style=dashed];
CreditService -> ChainFire [label="uses", color=blue];
K8sHost -> FlareDB [label="uses", color=blue];
K8sHost -> ChainFire [label="uses", color=blue, style=dashed];
// Application dependencies on Platform
PlasmaVMC -> IAM [label="auth", color=orange];
PlasmaVMC -> CreditService [label="billing", color=orange, style=dashed];
PlasmaVMC -> PrismNET [label="networking", color=orange];
K8sHost -> IAM [label="auth", color=orange];
K8sHost -> CreditService [label="billing", color=orange, style=dashed];
K8sHost -> PrismNET [label="CNI", color=orange];
K8sHost -> FiberLB [label="ingress", color=orange, style=dashed];
K8sHost -> FlashDNS [label="DNS", color=orange, style=dashed];
APIGateway -> FiberLB [label="fronted by", color=orange, style=dashed];
APIGateway -> IAM [label="auth", color=orange, style=dashed];
APIGateway -> CreditService [label="billing", color=orange, style=dashed];
// Deployment dependencies
NixOSModules -> ChainFire [label="module", color=purple, style=dotted];
NixOSModules -> FlareDB [label="module", color=purple, style=dotted];
NixOSModules -> IAM [label="module", color=purple, style=dotted];
NixOSModules -> PlasmaVMC [label="module", color=purple, style=dotted];
NixOSModules -> PrismNET [label="module", color=purple, style=dotted];
NixOSModules -> FlashDNS [label="module", color=purple, style=dotted];
NixOSModules -> FiberLB [label="module", color=purple, style=dotted];
NixOSModules -> APIGateway [label="module", color=purple, style=dotted];
NixOSModules -> LightningStor [label="module", color=purple, style=dotted];
NixOSModules -> NightLight [label="module", color=purple, style=dotted];
NixOSModules -> CreditService [label="module", color=purple, style=dotted];
NixOSModules -> K8sHost [label="module", color=purple, style=dotted];
NetbootImages -> NixOSModules [label="uses", color=purple];
BootstrapISO -> NixOSModules [label="uses", color=purple];
BootstrapISO -> Deployer [label="phone-home", color=purple];
FirstBootAutomation -> ChainFire [label="cluster-join", color=purple];
FirstBootAutomation -> FlareDB [label="cluster-join", color=purple];
FirstBootAutomation -> IAM [label="initial-setup", color=purple];
FirstBootAutomation -> NixOSModules [label="uses", color=purple];
NixNOS -> NixOSModules [label="generates", color=purple];
NixNOS -> FirstBootAutomation [label="config", color=purple];
// Systemd dependencies (runtime)
FlareDB -> ChainFire [label="systemd:after", color=red, style=dashed];
IAM -> FlareDB [label="systemd:after", color=red, style=dashed];
PlasmaVMC -> ChainFire [label="systemd:requires", color=red, style=dashed];
PlasmaVMC -> FlareDB [label="systemd:requires", color=red, style=dashed];
PlasmaVMC -> IAM [label="systemd:requires", color=red, style=dashed];
CreditService -> ChainFire [label="systemd:wants", color=red, style=dashed];
K8sHost -> IAM [label="systemd:requires", color=red, style=dashed];
K8sHost -> FlareDB [label="systemd:requires", color=red, style=dashed];
K8sHost -> PrismNET [label="systemd:requires", color=red, style=dashed];
// Legend
subgraph cluster_legend {
label="Legend";
style=invis;
L1 [label="Runtime Dependency", color=blue, style=invis];
L2 [label="Service Integration", color=orange, style=invis];
L3 [label="Deployment/Config", color=purple, style=invis];
L4 [label="Systemd Order", color=red, style=invis];
}
}