47 lines
4.4 KiB
XML
47 lines
4.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<mxfile host="app.diagrams.net" modified="2026-07-23T00:00:00.000Z" agent="techviz-harness" version="24.7.17" type="device">
|
|
<diagram id="b5-b6-storage-and-keys" name="볼륨 없는 영속화와 replica별 키 회전">
|
|
<mxGraphModel dx="923" dy="319" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="923" pageHeight="1169" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0"/>
|
|
<mxCell id="1" parent="0"/>
|
|
<mxCell id="n_change" value="운영 변경<br/>B-5 · B-6" tooltip="저장 설정과 realm 키 회전을 각각 수행한다. | Evidence: L861-L872" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
|
|
<mxGeometry x="70.0" y="131.5" width="150.0" height="71.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_datadir" value="Redis /data<br/>appendonly yes · 볼륨 없음" tooltip="AOF가 기록되는 컨테이너 파일시스템이다. | Evidence: L861-L863" 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=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
|
<mxGeometry x="380.0" y="60.0" width="188.0" height="71.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_replicas" value="echo replica 2개<br/>replica별 cache" tooltip="JWKS cache를 인스턴스마다 따로 가진다. | Evidence: L868-L872" 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="399.0" y="203.0" width="150.0" height="71.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_lost" value="Redis 재시작<br/>영속화 실패" tooltip="볼륨이 없어 데이터가 함께 사라진다. | Evidence: L861-L863" 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="728.0" y="60.0" width="150.0" height="71.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="n_mixed" value="교차 응답<br/>401 · 200 · 반복" tooltip="같은 옛 토큰의 검증 결과가 replica에 따라 갈린다. | Evidence: L868-L877" 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="728.0" y="203.0" width="150.0" height="71.0" as="geometry"/>
|
|
</mxCell>
|
|
<mxCell id="e_c-d" value="AOF 설정" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_change" target="n_datadir">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="324.0" y="126.8" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_c-r" value="키 회전" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_change" target="n_replicas">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="333.5" y="207.2" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_d-l" value="볼륨 없음" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_datadir" target="n_lost">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="648.0" y="67.5" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="e_r-m" value="cache 상태" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_replicas" target="n_mixed">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="638.5" y="210.5" as="offset"/>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|