refactor: 문서 개선 중
This commit is contained in:
+6
-6
@@ -10,12 +10,12 @@ Keycloak 26 은 persistent-user-sessions 가 기본값이라 세션을 PostgreSQ
|
||||
|
||||
## Elements and evidence
|
||||
|
||||
- **persistent-user-sessions 켜짐** (component): Keycloak 26 기본값. Evidence: L62–L66.
|
||||
- **persistent-user-sessions 꺼짐** (component): 24 이전 방식. Evidence: L62–L66.
|
||||
- **PostgreSQL 의 세션 행** (datastore): 노드가 바뀌어도 남는다. 7800 과 무관하다. Evidence: L67–L73.
|
||||
- **노드 메모리의 세션** (component): 노드가 죽거나 분단되면 사라진다. Evidence: L67–L73.
|
||||
- **persistent-user-sessions 켜짐** (component): Keycloak 26 기본값. Evidence: L92–L96.
|
||||
- **persistent-user-sessions 꺼짐** (component): 24 이전 방식. Evidence: L92–L96.
|
||||
- **PostgreSQL 의 세션 행** (datastore): 노드가 바뀌어도 남는다. 7800 과 무관하다. Evidence: L97–L103.
|
||||
- **노드 메모리의 세션** (component): 노드가 죽거나 분단되면 사라진다. Evidence: L97–L103.
|
||||
|
||||
## Relationships
|
||||
|
||||
- **persistent-user-sessions 켜짐 → PostgreSQL 의 세션 행:** 세션 기록. Evidence: L62–L68.
|
||||
- **persistent-user-sessions 꺼짐 → 노드 메모리의 세션:** 세션 보관. Evidence: L62–L68.
|
||||
- **persistent-user-sessions 켜짐 → PostgreSQL 의 세션 행:** 세션 기록. Evidence: L92–L97.
|
||||
- **persistent-user-sessions 꺼짐 → 노드 메모리의 세션:** 세션 보관. Evidence: L92–L97.
|
||||
|
||||
+7
-7
@@ -5,17 +5,17 @@
|
||||
<root>
|
||||
<mxCell id="0"/>
|
||||
<mxCell id="1" parent="0"/>
|
||||
<mxCell id="n_persistent" value="persistent-user-sessions 켜짐<br/>세션 → DB" tooltip="Keycloak 26 기본값. | Evidence: L62-L66" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
|
||||
<mxCell id="n_persistent" value="persistent-user-sessions 켜짐<br/>세션 → DB" tooltip="Keycloak 26 기본값. | Evidence: L92-L96" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
|
||||
<mxGeometry x="70.0" y="60.0" width="202.0" height="91.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_volatile" value="persistent-user-sessions 꺼짐<br/>세션 → 메모리" tooltip="24 이전 방식. | Evidence: L62-L66" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxCell id="n_volatile" value="persistent-user-sessions 꺼짐<br/>세션 → 메모리" tooltip="24 이전 방식. | Evidence: L92-L96" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxGeometry x="70.0" y="223.0" width="202.0" height="91.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_db-session" value="PostgreSQL 의 세션 행<br/>OFFLINE_USER_SESSION" tooltip="노드가 바뀌어도 남는다. 7800 과 무관하다. | Evidence: L67-L73" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
|
||||
<mxGeometry x="432.0" y="67.0" width="174.0" height="97.0" as="geometry"/>
|
||||
<mxCell id="n_db-session" value="PostgreSQL 의 세션 행<br/>OFFLINE_USER_SESSION" tooltip="노드가 바뀌어도 남는다. 7800 과 무관하다. | Evidence: L97-L103" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
|
||||
<mxGeometry x="432.0" y="80.0" width="174.0" height="71.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_memory-session" value="노드 메모리의 세션<br/>Infinispan 복제에 의존" tooltip="노드가 죽거나 분단되면 사라진다. | Evidence: L67-L73" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxGeometry x="442.5" y="236.0" width="153.0" height="71.0" as="geometry"/>
|
||||
<mxCell id="n_memory-session" value="노드 메모리의 세션<br/>Infinispan 복제에 의존" tooltip="노드가 죽거나 분단되면 사라진다. | Evidence: L97-L103" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxGeometry x="442.5" y="223.0" width="153.0" height="71.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="e_p-to-db" value="세션 기록" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_persistent" target="n_db-session">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
@@ -24,7 +24,7 @@
|
||||
</mxCell>
|
||||
<mxCell id="e_v-to-mem" value="세션 보관" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_volatile" target="n_memory-session">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="381.2" y="270.0" as="offset"/>
|
||||
<mxPoint x="381.2" y="263.5" as="offset"/>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
|
||||
+15
-15
@@ -106,9 +106,9 @@
|
||||
"id": "edge-v-to-mem",
|
||||
"type": "arrow",
|
||||
"x": 272.0,
|
||||
"y": 268.5,
|
||||
"y": 258.5,
|
||||
"width": 170.5,
|
||||
"height": 3.0,
|
||||
"height": 10.0,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "transparent",
|
||||
@@ -132,19 +132,19 @@
|
||||
"points": [
|
||||
[
|
||||
0.0,
|
||||
0.0
|
||||
10.0
|
||||
],
|
||||
[
|
||||
85.25,
|
||||
10.0
|
||||
],
|
||||
[
|
||||
85.25,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
85.25,
|
||||
3.0
|
||||
],
|
||||
[
|
||||
170.5,
|
||||
3.0
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
@@ -166,7 +166,7 @@
|
||||
"id": "edge-label-v-to-mem",
|
||||
"type": "text",
|
||||
"x": 336.25,
|
||||
"y": 258.0,
|
||||
"y": 251.5,
|
||||
"width": 90,
|
||||
"height": 24,
|
||||
"angle": 0,
|
||||
@@ -343,9 +343,9 @@
|
||||
"id": "node-db-session",
|
||||
"type": "rectangle",
|
||||
"x": 432.0,
|
||||
"y": 67.0,
|
||||
"y": 80.0,
|
||||
"width": 174.0,
|
||||
"height": 97.0,
|
||||
"height": 71.0,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "#e7f5ff",
|
||||
@@ -373,9 +373,9 @@
|
||||
"id": "node-label-db-session",
|
||||
"type": "text",
|
||||
"x": 442.0,
|
||||
"y": 77.0,
|
||||
"y": 90.0,
|
||||
"width": 154.0,
|
||||
"height": 77.0,
|
||||
"height": 51.0,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1e1e1e",
|
||||
"backgroundColor": "transparent",
|
||||
@@ -412,7 +412,7 @@
|
||||
"id": "node-memory-session",
|
||||
"type": "rectangle",
|
||||
"x": 442.5,
|
||||
"y": 236.0,
|
||||
"y": 223.0,
|
||||
"width": 153.0,
|
||||
"height": 71.0,
|
||||
"angle": 0,
|
||||
@@ -442,7 +442,7 @@
|
||||
"id": "node-label-memory-session",
|
||||
"type": "text",
|
||||
"x": 452.5,
|
||||
"y": 246.0,
|
||||
"y": 233.0,
|
||||
"width": 133.0,
|
||||
"height": 51.0,
|
||||
"angle": 0,
|
||||
|
||||
+3
-3
@@ -2,14 +2,14 @@
|
||||
"harness_version": "0.2.0",
|
||||
"spec_id": "version-conditional-results",
|
||||
"spec_version": "1.1",
|
||||
"spec_sha256": "1c5866f8f5aade8c554b19d5aa7e35b44129b5c7bdfbf41d2fc0be2940cb68fe",
|
||||
"spec_sha256": "fff77ffb4a1a3d92d4f94ccffe5e2779552ca58511d521239ccc41c05946bbca",
|
||||
"source_context": {
|
||||
"document": "docs/keycloak-session-store/final/document.md",
|
||||
"document_sha256": "1d44cba1905544d92f1d26ae36a8deb64a3db3914d6b488fd30d6ae7f8cfbabe",
|
||||
"document_sha256": "28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560",
|
||||
"anchor": {
|
||||
"kind": "heading",
|
||||
"value": "그리고 이 결론에는 버전 조건이 붙어 있었다",
|
||||
"line": 64
|
||||
"line": 94
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
|
||||
+12
-12
@@ -2,7 +2,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="359" viewBox="0 0 680 359" role="img" aria-labelledby="diagram-title diagram-description">
|
||||
<title id="diagram-title">설정에 따라 갈리는 세션의 거처</title>
|
||||
<desc id="diagram-description">Keycloak 26 은 persistent-user-sessions 가 기본값이라 세션을 PostgreSQL 에 쓴다. 24 이전은 메모리에 두고 Infinispan 으로 복제했다. 그래서 7800 을 끊었을 때, 롤링 재시작했을 때, DB 를 세웠을 때의 결과가 세 항목 모두 정반대로 나온다. 이 실험대의 A층 결론 전체가 이 설정 위에 서 있다.</desc>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"version-conditional-results","profile":"component-flow"},"source_context":{"document":"docs/keycloak-session-store/final/document.md","document_sha256":"1d44cba1905544d92f1d26ae36a8deb64a3db3914d6b488fd30d6ae7f8cfbabe","anchor":{"kind":"heading","value":"그리고 이 결론에는 버전 조건이 붙어 있었다","line":64}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"version-conditional-results","profile":"component-flow"},"source_context":{"document":"docs/keycloak-session-store/final/document.md","document_sha256":"28aef96a2bbb94fbb10ade26a71238fee62a5a4d9fa6e7749ae98cfd0a65e560","anchor":{"kind":"heading","value":"그리고 이 결론에는 버전 조건이 붙어 있었다","line":94}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":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" />
|
||||
@@ -50,36 +50,36 @@
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="canvas" width="680" height="359" />
|
||||
<polyline class="edge kind-write style-solid emphasis-normal" points="272.0,105.5 352.0,105.5 352.0,115.5 432.0,115.5" data-evidence="62-68" />
|
||||
<polyline class="edge kind-write style-solid emphasis-normal" points="272.0,105.5 352.0,105.5 352.0,115.5 432.0,115.5" data-evidence="92-97" />
|
||||
<rect class="edge-label-bg" x="350.2" y="96.5" width="51.5" height="22" rx="3" />
|
||||
<text class="edge-label" x="376.0" y="111.5">세션 기록</text>
|
||||
<polyline class="edge kind-write style-solid emphasis-normal" points="272.0,268.5 357.2,268.5 357.2,271.5 442.5,271.5" data-evidence="62-68" />
|
||||
<rect class="edge-label-bg" x="355.5" y="256.0" width="51.5" height="22" rx="3" />
|
||||
<text class="edge-label" x="381.2" y="271.0">세션 보관</text>
|
||||
<polyline class="edge kind-write style-solid emphasis-normal" points="272.0,268.5 357.2,268.5 357.2,258.5 442.5,258.5" data-evidence="92-97" />
|
||||
<rect class="edge-label-bg" x="355.5" y="249.5" width="51.5" height="22" rx="3" />
|
||||
<text class="edge-label" x="381.2" y="264.5">세션 보관</text>
|
||||
<g id="node-persistent">
|
||||
<rect class="node-shape kind-component emphasis-primary role-source" data-evidence="62-66" x="70.0" y="60.0" width="202.0" height="91.0" rx="7" />
|
||||
<rect class="node-shape kind-component emphasis-primary role-source" data-evidence="92-96" x="70.0" y="60.0" width="202.0" height="91.0" rx="7" />
|
||||
<text class="node-label" x="171.0" y="87.0">persistent-user-sessions</text>
|
||||
<text class="node-label" x="171.0" y="105.0">켜짐</text>
|
||||
<line class="node-detail-divider" x1="84.0" y1="126.0" x2="258.0" y2="126.0" />
|
||||
<text class="node-detail" x="86.0" y="143.0">세션 → DB</text>
|
||||
</g>
|
||||
<g id="node-volatile">
|
||||
<rect class="node-shape kind-component emphasis-warning role-source" data-evidence="62-66" x="70.0" y="223.0" width="202.0" height="91.0" rx="7" />
|
||||
<rect class="node-shape kind-component emphasis-warning role-source" data-evidence="92-96" x="70.0" y="223.0" width="202.0" height="91.0" rx="7" />
|
||||
<text class="node-label" x="171.0" y="250.0">persistent-user-sessions</text>
|
||||
<text class="node-label" x="171.0" y="268.0">꺼짐</text>
|
||||
<line class="node-detail-divider" x1="84.0" y1="289.0" x2="258.0" y2="289.0" />
|
||||
<text class="node-detail" x="86.0" y="306.0">세션 → 메모리</text>
|
||||
</g>
|
||||
<g id="node-db-session">
|
||||
<rect class="node-shape kind-datastore emphasis-primary role-target" data-evidence="67-73" x="432.0" y="80.0" width="174.0" height="71.0" /><ellipse class="node-shape kind-datastore emphasis-primary role-target" cx="519.0" cy="80.0" rx="87.0" ry="13.0" /><path class="storage-bottom" d="M 432.0 151.0 A 87.0 13.0 0 0 0 606.0 151.0" />
|
||||
<rect class="node-shape kind-datastore emphasis-primary role-target" data-evidence="97-103" x="432.0" y="91.8" width="174.0" height="47.3" /><ellipse class="node-shape kind-datastore emphasis-primary role-target" cx="519.0" cy="91.8" rx="87.0" ry="11.8" /><path class="storage-bottom" d="M 432.0 139.2 A 87.0 11.8 0 0 0 606.0 139.2" />
|
||||
<text class="node-label" x="519.0" y="107.0">PostgreSQL 의 세션 행</text>
|
||||
<line class="node-detail-divider" x1="446.0" y1="128.0" x2="592.0" y2="128.0" />
|
||||
<text class="node-detail" x="448.0" y="145.0">OFFLINE_USER_SESSION</text>
|
||||
</g>
|
||||
<g id="node-memory-session">
|
||||
<rect class="node-shape kind-component emphasis-warning role-target" data-evidence="67-73" x="442.5" y="236.0" width="153.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="519.0" y="263.0">노드 메모리의 세션</text>
|
||||
<line class="node-detail-divider" x1="456.5" y1="284.0" x2="581.5" y2="284.0" />
|
||||
<text class="node-detail" x="458.5" y="301.0">Infinispan 복제에 의존</text>
|
||||
<rect class="node-shape kind-component emphasis-warning role-target" data-evidence="97-103" x="442.5" y="223.0" width="153.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="519.0" y="250.0">노드 메모리의 세션</text>
|
||||
<line class="node-detail-divider" x1="456.5" y1="271.0" x2="581.5" y2="271.0" />
|
||||
<text class="node-detail" x="458.5" y="288.0">Infinispan 복제에 의존</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Reference in New Issue
Block a user