An audit against the standard the series set — concepts, procedure, commands, architecture diagram, evidence table, terminal output — found the three new experiments met it while twelve of the original ones had no diagram at all: A-0, A-1, A-3, A-4, A-5, A-6, A-8, B-0, B-2, B-7, C-2, D-2. Each now has one drawn from what that experiment actually found, not filler: A-0 shows sharing going through PostgreSQL rather than between the caches; A-3 the gap between the 200 and the WAL flush, with both failed injections; A-5 the three silent injection failures; A-6 the two places latency is multiplied; B-0 the repository keyed by principal with no session id; B-2 the primary key that causes the overwrite; D-2 why the rolling update stopped the accident halfway. Also corrected the index's stale claim of 11 experiments without a screenshot — it is 14, and the reason is recorded: those experiments were measured from terminals, the database and logs, and the observability stack does not scrape Redis, the BFF or PostgreSQL, so there is no console to photograph. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
48 lines
3.3 KiB
XML
48 lines
3.3 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 380" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,sans-serif">
|
|
<style>
|
|
.box{fill:#fff;stroke:#8c959f;stroke-width:1.4;rx:6}
|
|
.dead{fill:#fff5f5;stroke:#cf222e;stroke-width:1.6;stroke-dasharray:5 3;rx:6}
|
|
.ok{fill:#f6fdf6;stroke:#1a7f37;stroke-width:1.6;rx:6}
|
|
.warn{fill:#fff8f0;stroke:#bf8700;stroke-width:1.5;rx:6}
|
|
.t{font-size:12px;fill:#1f2328}
|
|
.tb{font-size:12.5px;fill:#1f2328;font-weight:600}
|
|
.s{font-size:10.5px;fill:#656d76}
|
|
.ttl{font-size:14px;fill:#1f2328;font-weight:600}
|
|
.r{stroke:#cf222e;stroke-width:1.6;fill:none}
|
|
.g{stroke:#1a7f37;stroke-width:1.6;fill:none}
|
|
.k{stroke:#8c959f;stroke-width:1.3;fill:none}
|
|
</style>
|
|
<defs>
|
|
<marker id="a" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 z" fill="#8c959f"/></marker>
|
|
<marker id="ar" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 z" fill="#cf222e"/></marker>
|
|
<marker id="ag" markerWidth="8" markerHeight="8" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 z" fill="#1a7f37"/></marker>
|
|
</defs>
|
|
<text x="20" y="26" class="ttl">A-8 — 세션은 살아남고 캐시만 사라진다</text>
|
|
<text x="20" y="44" class="s">이것이 persistent-user-sessions 를 켜는 진짜 이유다</text>
|
|
<rect x="30" y="74" width="800" height="30" class="box"/>
|
|
<text x="46" y="94" class="tb">kubectl rollout restart statefulset/keycloak — 한 번에 한 파드씩</text>
|
|
<rect x="30" y="124" width="250" height="110" class="dead"/>
|
|
<text x="46" y="146" class="tb">사라지는 것 — 메모리</text>
|
|
<text x="46" y="168" class="s">Infinispan sessions 캐시</text>
|
|
<text x="46" y="188" class="t">entries_unique → <tspan fill="#cf222e" font-weight="600">0</tspan></text>
|
|
<text x="46" y="212" class="s">파드와 함께 없어진다</text>
|
|
<rect x="305" y="124" width="250" height="110" class="ok"/>
|
|
<text x="321" y="146" class="tb">남는 것 — PostgreSQL</text>
|
|
<text x="321" y="168" class="s">OFFLINE_USER_SESSION</text>
|
|
<text x="321" y="188" class="t">151 → <tspan fill="#1a7f37" font-weight="600">151</tspan> 그대로</text>
|
|
<text x="321" y="212" class="s">재시작과 무관하다</text>
|
|
<rect x="580" y="124" width="250" height="110" class="ok"/>
|
|
<text x="596" y="146" class="tb">그래서 사용자는</text>
|
|
<text x="596" y="168" class="s">재시작 전 발급한 refresh token</text>
|
|
<text x="596" y="188" class="t">여전히 <tspan fill="#1a7f37" font-weight="600">200</tspan></text>
|
|
<text x="596" y="212" class="s">전 구간 중단 없음</text>
|
|
<path d="M282 178 L301 178" class="k" marker-end="url(#a)"/>
|
|
<path d="M557 178 L576 178" class="k" marker-end="url(#a)"/>
|
|
<rect x="30" y="254" width="800" height="52" class="box"/>
|
|
<text x="46" y="276" class="tb">클러스터는 자동 재형성된다</text>
|
|
<text x="46" y="296" class="s">JGROUPS_PING 테이블에 다시 등록되고 cluster_size 가 2 로 돌아온다 — 사람이 할 일이 없다</text>
|
|
<rect x="30" y="322" width="800" height="44" class="warn"/>
|
|
<text x="46" y="344" class="s">★ A-7 과 대조 — volatile 이면 같은 재시작에서 refresh 가 400 Session not active 가 된다.</text>
|
|
<text x="46" y="360" class="s">세션이 메모리에만 있었으므로 캐시가 사라지는 순간 세션도 사라진다. 이 실험의 결론은 버전 조건부다</text>
|
|
</svg>
|