refactor: 문서 개선 중

This commit is contained in:
donghyeon-ka
2026-09-21 14:30:55 +09:00
parent c93cdea150
commit 805a18f486
1497 changed files with 525837 additions and 59152 deletions
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="677" viewBox="0 0 680 677" role="img" aria-labelledby="diagram-title diagram-description">
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="1194" viewBox="0 0 680 1194" role="img" aria-labelledby="diagram-title diagram-description">
<title id="diagram-title">지연이 곱해지는 두 단계</title>
<desc id="diagram-description">주입한 지연은 200ms 인데 로그인 응답이 1,872ms 가 됐다. 로그인 한 번이 데이터베이스 왕복을 여러 번 하므로 왕복 횟수만큼 더해진다. 동시 20건에서는 22.2초가 됐다. 요청이 커넥션을 오래 붙들어 뒤의 요청이 풀에서 대기하기 때문이며 커넥션 획득 대기 최대가 20,000ms 였다. 마지막으로 readiness 프로브가 타임아웃으로 실패해 느린 노드가 로드밸런서에서 빠진다. 느림이 장애로 승격된다.</desc>
<metadata>{&quot;techviz&quot;:{&quot;spec_version&quot;:&quot;1.1&quot;,&quot;id&quot;:&quot;a6-latency-multiplication&quot;,&quot;profile&quot;:&quot;component-flow&quot;},&quot;source_context&quot;:{&quot;document&quot;:&quot;docs/keycloak-session-store/final/document.md&quot;,&quot;document_sha256&quot;:&quot;1d44cba1905544d92f1d26ae36a8deb64a3db3914d6b488fd30d6ae7f8cfbabe&quot;,&quot;anchor&quot;:{&quot;kind&quot;:&quot;heading&quot;,&quot;value&quot;:&quot;A-6 · 지연 주입 — 200밀리초가 22초가 된다&quot;,&quot;line&quot;:255}},&quot;evidence_policy&quot;:&quot;Each factual element cites source lines or is marked assumption.&quot;,&quot;diagram_only&quot;:true}</metadata>
<metadata>{&quot;techviz&quot;:{&quot;spec_version&quot;:&quot;1.1&quot;,&quot;id&quot;:&quot;a6-latency-multiplication&quot;,&quot;profile&quot;:&quot;component-flow&quot;},&quot;source_context&quot;:{&quot;document&quot;:&quot;docs/keycloak-session-store/final/document.md&quot;,&quot;document_sha256&quot;:&quot;28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560&quot;,&quot;anchor&quot;:{&quot;kind&quot;:&quot;heading&quot;,&quot;value&quot;:&quot;A-6 · 지연 주입 — 200밀리초가 22초가 된다&quot;,&quot;line&quot;:590}},&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" />
@@ -49,38 +49,38 @@
.timeline-detail { font-size: 11px; fill: #4b5563; text-anchor: middle; }
</style>
</defs>
<rect class="canvas" width="680" height="677" />
<polyline class="edge kind-request style-solid emphasis-normal" points="146.5,131.0 146.5,179.0 146.5,179.0 146.5,227.0" data-evidence="253-263" />
<rect class="edge-label-bg" x="141.4" y="165.0" width="58.2" height="22" rx="3" />
<text class="edge-label" x="170.5" y="180.0">왕복당 누적</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="146.5,465.0 146.5,513.0 146.5,513.0 146.5,561.0" data-evidence="264-273" />
<rect class="edge-label-bg" x="131.3" y="499.0" width="78.3" height="22" rx="3" />
<text class="edge-label" x="170.5" y="514.0">프로브도 타임아웃</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="146.5,298.0 146.5,346.0 146.5,346.0 146.5,394.0" data-evidence="259-268" />
<rect class="edge-label-bg" x="141.4" y="332.0" width="58.2" height="22" rx="3" />
<text class="edge-label" x="170.5" y="347.0">커넥션 점유</text>
<rect class="canvas" width="680" height="1194" />
<polyline class="edge kind-request style-solid emphasis-normal" points="110.0,216.0 110.0,335.5 110.0,335.5 110.0,455.0" data-evidence="590-598" />
<rect class="edge-label-bg" x="104.9" y="321.5" width="58.2" height="22" rx="3" />
<text class="edge-label" x="134.0" y="336.5">왕복당 누적</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="111.5,836.0 111.5,957.0 110.0,957.0 110.0,1078.0" data-evidence="600-605" />
<rect class="edge-label-bg" x="71.6" y="915.0" width="78.3" height="22" rx="3" />
<text class="edge-label" x="110.8" y="930.0">프로브도 타임아웃</text>
<polyline class="edge kind-request style-solid emphasis-normal" points="110.0,526.0 110.0,645.5 111.5,645.5 111.5,765.0" data-evidence="594-602" />
<rect class="edge-label-bg" x="81.7" y="603.5" width="58.2" height="22" rx="3" />
<text class="edge-label" x="110.8" y="618.5">커넥션 점유</text>
<g id="node-inject">
<rect class="node-shape kind-process emphasis-warning role-source" data-evidence="253-258" x="71.5" y="60.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="146.5" y="87.0">주입한 지연</text>
<line class="node-detail-divider" x1="85.5" y1="108.0" x2="207.5" y2="108.0" />
<text class="node-detail" x="87.5" y="125.0">200 ms</text>
<rect class="node-shape kind-process emphasis-warning role-source" data-evidence="590-593" x="35.0" y="145.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="110.0" y="172.0">주입한 지연</text>
<line class="node-detail-divider" x1="49.0" y1="193.0" x2="171.0" y2="193.0" />
<text class="node-detail" x="51.0" y="210.0">200 ms</text>
</g>
<g id="node-roundtrips">
<rect class="node-shape kind-process emphasis-normal role-control" data-evidence="259-263" x="71.5" y="227.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="146.5" y="254.0">왕복 횟수만큼 누적</text>
<line class="node-detail-divider" x1="85.5" y1="275.0" x2="207.5" y2="275.0" />
<text class="node-detail" x="87.5" y="292.0">66ms → 1,872ms</text>
<rect class="node-shape kind-process emphasis-normal role-control" data-evidence="594-598" x="35.0" y="455.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="110.0" y="482.0">왕복 횟수만큼 누적</text>
<line class="node-detail-divider" x1="49.0" y1="503.0" x2="171.0" y2="503.0" />
<text class="node-detail" x="51.0" y="520.0">66ms → 1,872ms</text>
</g>
<g id="node-pool">
<rect class="node-shape kind-component emphasis-warning role-control" data-evidence="264-268" x="70.0" y="394.0" width="153.0" height="71.0" rx="7" />
<text class="node-label" x="146.5" y="421.0">커넥션 풀 대기</text>
<line class="node-detail-divider" x1="84.0" y1="442.0" x2="209.0" y2="442.0" />
<text class="node-detail" x="86.0" y="459.0">획득 대기 최대 20,000ms</text>
<rect class="node-shape kind-component emphasis-warning role-control" data-evidence="600-602" x="35.0" y="765.0" width="153.0" height="71.0" rx="7" />
<text class="node-label" x="111.5" y="792.0">커넥션 풀 대기</text>
<line class="node-detail-divider" x1="49.0" y1="813.0" x2="174.0" y2="813.0" />
<text class="node-detail" x="51.0" y="830.0">획득 대기 최대 20,000ms</text>
</g>
<g id="node-probe">
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="269-273" x="71.5" y="561.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="146.5" y="588.0">readiness 실패</text>
<line class="node-detail-divider" x1="85.5" y1="609.0" x2="207.5" y2="609.0" />
<text class="node-detail" x="87.5" y="626.0">동시 20건 최대 22.2초</text>
<rect class="node-shape kind-process emphasis-warning role-target" data-evidence="604-605" x="35.0" y="1078.0" width="150.0" height="71.0" rx="7" />
<text class="node-label" x="110.0" y="1105.0">readiness 실패</text>
<line class="node-detail-divider" x1="49.0" y1="1126.0" x2="171.0" y2="1126.0" />
<text class="node-detail" x="51.0" y="1143.0">동시 20건 최대 22.2초</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB