Files
technical-visualization-haness/examples/runtime-profiles/06-resource-controller/resource-controller.svg
T
2026-07-24 16:31:12 +09:00

124 lines
10 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1310" height="515" viewBox="0 0 1310 515" role="img" aria-labelledby="diagram-title diagram-description">
<title id="diagram-title">resource-controller runtime fixture</title>
<desc id="diagram-description">This fixture validates the node roles, edges, and layout rules of the resource-controller profile.</desc>
<metadata>{&quot;techviz&quot;:{&quot;spec_version&quot;:&quot;1.1&quot;,&quot;id&quot;:&quot;resource-controller&quot;,&quot;profile&quot;:&quot;resource-controller&quot;},&quot;source_context&quot;:{&quot;document&quot;:&quot;examples/runtime-profiles/fixture.md&quot;,&quot;document_sha256&quot;:&quot;0000000000000000000000000000000000000000000000000000000000000000&quot;,&quot;anchor&quot;:{&quot;kind&quot;:&quot;line&quot;,&quot;value&quot;:1,&quot;line&quot;:1}},&quot;evidence_policy&quot;:&quot;Each factual element cites source lines or is marked assumption.&quot;,&quot;diagram_only&quot;:true}</metadata>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
<style>
:root { color-scheme: light; }
text { font-family: Inter, Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; fill: #111827; }
.canvas { fill: #ffffff; }
.group-box { fill: #ffffff; stroke: #9ca3af; stroke-width: 1.4; stroke-dasharray: 7 5; }
.group-label-bg { fill: #ffffff; }
.group-label { font-size: 13px; font-weight: 650; fill: #374151; }
.edge { fill: none; stroke: #374151; stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; marker-end: url(#arrow); }
.edge.style-dashed, .edge.semantic-dashed, .edge.assumption { stroke-dasharray: 7 5; }
.edge.style-dotted { stroke-dasharray: 2 5; }
.edge.emphasis-primary { stroke: #2563eb; stroke-width: 2.2; }
.edge.emphasis-muted { stroke: #9ca3af; }
.edge.emphasis-warning, .edge.kind-failure, .edge.kind-error { stroke: #dc2626; stroke-width: 2.2; }
.edge-label-bg { fill: #ffffff; }
.edge-label { font-size: 12px; font-weight: 560; text-anchor: middle; }
.node-shape { fill: #ffffff; stroke: #4b5563; stroke-width: 1.7; }
.node-shape.emphasis-primary { stroke: #2563eb; stroke-width: 2.2; }
.node-shape.emphasis-muted { stroke: #9ca3af; fill: #f9fafb; }
.node-shape.emphasis-warning { stroke: #d97706; stroke-width: 2; fill: #fffdf5; }
.node-shape.kind-database, .node-shape.kind-datastore, .node-shape.kind-storage { fill: #f8fafc; }
.node-shape.kind-queue, .node-shape.kind-event, .node-shape.kind-topic { fill: #fafafa; }
.node-shape.assumption { stroke-dasharray: 4 4; }
.storage-bottom, .controller-divider { fill: none; stroke: #4b5563; stroke-width: 1.4; }
.controller-led { fill: #4b5563; }
.actor-symbol { fill: none; stroke: #4b5563; stroke-width: 1.8; stroke-linecap: round; }
.actor-symbol.emphasis-primary { stroke: #2563eb; stroke-width: 2.2; }
.node-label { font-size: 14px; font-weight: 650; text-anchor: middle; }
.node-role { font-size: 10px; letter-spacing: 0.04em; text-anchor: middle; fill: #6b7280; }
.node-detail-divider { stroke: #d1d5db; stroke-width: 1; }
.node-detail { font-size: 11px; fill: #374151; }
.assumption-badge { font-size: 9px; font-weight: 700; fill: #92400e; }
.failure-mark { stroke: #dc2626; stroke-width: 4; stroke-linecap: round; }
.lifeline { stroke: #9ca3af; stroke-width: 1.2; stroke-dasharray: 5 5; }
.timeline-axis { stroke: #374151; stroke-width: 1.8; marker-end: url(#arrow); }
.timeline-stem { stroke: #6b7280; stroke-width: 1.3; }
.timeline-marker { fill: #ffffff; stroke: #374151; stroke-width: 1.7; }
.timeline-marker.primary { fill: #2563eb; stroke: #2563eb; }
.timeline-marker.warning { fill: #dc2626; stroke: #dc2626; }
.timeline-label { font-size: 13px; font-weight: 650; text-anchor: middle; }
.timeline-detail { font-size: 11px; fill: #4b5563; text-anchor: middle; }
</style>
</defs>
<rect class="canvas" width="1310" height="515" />
<polyline class="edge kind-request style-solid emphasis-normal" points="1265.0,170.0 1150.0,170.0 1150.0,351.0 1035.0,351.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="1131.5" y="246.5" width="85.0" height="22" rx="3" />
<text class="edge-label" x="1174.0" y="261.5">DB command</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="690.0,424.0 720.0,424.0 720.0,199.0 695.0,199.0 695.0,305.0 725.0,305.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="704.9" y="232.0" width="78.3" height="22" rx="3" />
<text class="edge-label" x="744.0" y="247.0">create ×3</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="180.0,222.0 210.0,222.0 210.0,59.0 195.0,59.0 195.0,172.5 225.0,172.5" data-evidence="1-1" />
<rect class="edge-label-bg" x="204.9" y="62.2" width="58.2" height="22" rx="3" />
<text class="edge-label" x="234.0" y="77.2">create</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="690.0,406.0 720.0,406.0 720.0,29.0 695.0,29.0 695.0,135.0 725.0,135.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="704.9" y="138.0" width="78.3" height="22" rx="3" />
<text class="edge-label" x="744.0" y="153.0">create ×3</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="970.0,305.0 1002.5,305.0 1002.5,369.0 1035.0,369.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="987.4" y="323.0" width="78.3" height="22" rx="3" />
<text class="edge-label" x="1026.5" y="338.0">reconcile</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="970.0,135.0 1002.5,135.0 1002.5,170.0 1035.0,170.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="987.4" y="138.5" width="78.3" height="22" rx="3" />
<text class="edge-label" x="1026.5" y="153.5">reconcile</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="485.0,172.5 515.0,172.5 515.0,59.0 445.0,59.0 445.0,415.0 475.0,415.0" data-evidence="1-1" />
<rect class="edge-label-bg" x="443.2" y="131.2" width="51.5" height="22" rx="3" />
<text class="edge-label" x="469.0" y="146.2">watch</text>
<g id="node-user">
<g class="actor-symbol emphasis-normal" data-evidence="1-1"><circle cx="107.5" cy="200.0" r="11.0" /><line x1="107.5" y1="216.0" x2="107.5" y2="235.0" /><line x1="89.5" y1="226.0" x2="125.5" y2="226.0" /><line x1="107.5" y1="235.0" x2="92.5" y2="252.0" /><line x1="107.5" y1="235.0" x2="122.5" y2="252.0" /></g>
<text class="node-label" x="107.5" y="257.0">User</text>
</g>
<g id="node-db-service">
<path class="node-shape kind-resource emphasis-normal role-resource-spec" data-evidence="1-1" d="M 225.0 95.0 H 451.0 L 485.0 129.0 V 250.0 H 225.0 Z M 451.0 95.0 V 129.0 H 485.0" />
<text class="node-role" x="355.0" y="114.0">«resource-spec»</text>
<text class="node-label" x="355.0" y="141.0">DB Service</text>
<line class="node-detail-divider" x1="239.0" y1="162.0" x2="471.0" y2="162.0" />
<text class="node-detail" x="241.0" y="179.0">vmCount: 3</text>
<text class="node-detail" x="241.0" y="195.0">vCPU: 2</text>
<text class="node-detail" x="241.0" y="211.0">memory: 8GB</text>
<text class="node-detail" x="241.0" y="227.0">maxclient: 3000</text>
</g>
<g id="node-manager">
<rect class="node-shape kind-controller emphasis-primary role-controller" data-evidence="1-1" x="475.0" y="360.0" width="215.0" height="110.0" rx="5" /><line class="controller-divider" x1="475.0" y1="397.4" x2="690.0" y2="397.4" /><line class="controller-divider" x1="475.0" y1="433.7" x2="690.0" y2="433.7" /><rect class="controller-led" x="488.0" y="374.7" width="8" height="8" rx="1" /><rect class="controller-led" x="488.0" y="411.0" width="8" height="8" rx="1" /><rect class="controller-led" x="488.0" y="447.3" width="8" height="8" rx="1" />
<text class="node-role" x="582.5" y="379.0">«controller»</text>
<text class="node-label" x="582.5" y="413.0">DBaaS Manager</text>
</g>
<g id="node-vm-cr">
<path class="node-shape kind-resource emphasis-normal role-custom-resource" data-evidence="1-1" d="M 725.0 65.0 H 936.0 L 970.0 99.0 V 205.0 H 725.0 Z M 936.0 65.0 V 99.0 H 970.0" />
<text class="node-role" x="847.5" y="84.0">«custom-resource»</text>
<text class="node-label" x="847.5" y="117.0">VM Custom Resource ×3</text>
<line class="node-detail-divider" x1="739.0" y1="138.0" x2="956.0" y2="138.0" />
<text class="node-detail" x="741.0" y="155.0">2 vCPU</text>
<text class="node-detail" x="741.0" y="171.0">8GB RAM</text>
</g>
<g id="node-db-cr">
<path class="node-shape kind-resource emphasis-normal role-custom-resource" data-evidence="1-1" d="M 725.0 235.0 H 936.0 L 970.0 269.0 V 375.0 H 725.0 Z M 936.0 235.0 V 269.0 H 970.0" />
<text class="node-role" x="847.5" y="254.0">«custom-resource»</text>
<text class="node-label" x="847.5" y="287.0">DB Instance CR ×3</text>
<line class="node-detail-divider" x1="739.0" y1="308.0" x2="956.0" y2="308.0" />
<text class="node-detail" x="741.0" y="325.0">maxclient: 3000</text>
<text class="node-detail" x="741.0" y="341.0">timeout: 5s</text>
</g>
<g id="node-vm">
<rect class="node-shape kind-runtime emphasis-normal role-runtime-resource" data-evidence="1-1" x="1035.0" y="95.0" width="230.0" height="150.0" rx="7" />
<text class="node-role" x="1150.0" y="114.0">«runtime-resource»</text>
<text class="node-label" x="1150.0" y="160.0">VM + dbaas-agent</text>
<line class="node-detail-divider" x1="1049.0" y1="181.0" x2="1251.0" y2="181.0" />
<text class="node-detail" x="1051.0" y="198.0">create VM</text>
</g>
<g id="node-db">
<rect class="node-shape kind-database emphasis-normal role-runtime-resource" data-evidence="1-1" x="1035.0" y="298.0" width="230.0" height="124.0" /><ellipse class="node-shape kind-database emphasis-normal role-runtime-resource" cx="1150.0" cy="298.0" rx="115.0" ry="13.0" /><path class="storage-bottom" d="M 1035.0 422.0 A 115.0 13.0 0 0 0 1265.0 422.0" />
<text class="node-role" x="1150.0" y="304.0">«runtime-resource»</text>
<text class="node-label" x="1150.0" y="350.0">DB</text>
<line class="node-detail-divider" x1="1049.0" y1="371.0" x2="1251.0" y2="371.0" />
<text class="node-detail" x="1051.0" y="388.0">DB command</text>
</g>
</svg>