Each of A-7a, B-7a and D-4a had the concepts, procedure, commands and
terminal evidence but no diagram, which the rest of the series carries.
a7a-cache-temperature.svg the three cache states and the SQL each issues
b7a-orphan-lifecycle.svg ticket structure, accumulation across two
rotations, and why TTL is the only signal
d4a-hook-timeline.svg the 38m25s gap against the 1-2s one, on one axis
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
58 lines
3.8 KiB
XML
58 lines
3.8 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 860 430" 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">D-4a — deploy 훅 하나로 38분 25초가 1~2초가 된다</text>
|
|
<text x="20" y="44" class="s">시각은 전부 실제 UTC (test-server 시계에서 106초 보정)</text>
|
|
|
|
<rect x="20" y="68" width="820" height="112" class="dead"/>
|
|
<text x="34" y="90" class="tb">D-4 — 훅이 없을 때</text>
|
|
<line x1="60" y1="130" x2="800" y2="130" class="k"/>
|
|
<line x1="90" y1="120" x2="90" y2="140" stroke="#cf222e" stroke-width="2"/>
|
|
<line x1="740" y1="120" x2="740" y2="140" stroke="#1a7f37" stroke-width="2"/>
|
|
<rect x="90" y="122" width="650" height="16" class="dead"/>
|
|
<text x="415" y="134" class="s" text-anchor="middle" fill="#cf222e">옛 인증서를 계속 서빙 — 428회 관측</text>
|
|
<text x="62" y="158" class="s">08:20:27 디스크 기록</text>
|
|
<text x="660" y="158" class="s">08:58:52 사람이 nginx -s reload</text>
|
|
<text x="415" y="112" class="tb" text-anchor="middle" fill="#cf222e">2305초 = 38분 25초</text>
|
|
<text x="34" y="174" class="s">아무도 reload 하지 않았다면 다음 nginx 재시작까지 = 사실상 무기한</text>
|
|
|
|
<rect x="20" y="196" width="820" height="112" class="ok"/>
|
|
<text x="34" y="218" class="tb">D-4a — deploy 훅을 넣었을 때</text>
|
|
<line x1="60" y1="258" x2="800" y2="258" class="k"/>
|
|
<line x1="90" y1="248" x2="90" y2="268" stroke="#1a7f37" stroke-width="2"/>
|
|
<line x1="104" y1="248" x2="104" y2="268" stroke="#1a7f37" stroke-width="2"/>
|
|
<rect x="90" y="250" width="14" height="16" class="ok"/>
|
|
<text x="62" y="286" class="s">12:27:49.05 발급 (SCT — CT 로그의 독립 시계)</text>
|
|
<text x="360" y="286" class="s">12:27:50 nginx -t · 새 워커 37252 · 12:27:51 reload</text>
|
|
<text x="150" y="244" class="tb" fill="#1a7f37">1~2초, 자동</text>
|
|
<text x="34" y="302" class="s">certbot 이 파일을 쓴 직후 같은 실행 안에서 deploy 훅을 부른다 — 사람이 개입할 자리가 없다</text>
|
|
|
|
<rect x="20" y="324" width="400" height="92" class="box"/>
|
|
<text x="34" y="346" class="tb">판정은 문구가 아니라 워커 PID 로</text>
|
|
<text x="34" y="366" class="s">master 585 → 585 (유지)</text>
|
|
<text x="34" y="384" class="s">worker 28829 → 37252 (교체 = reload 됨)</text>
|
|
<text x="34" y="404" class="s">nginx 는 인증서를 기동 시 읽어 메모리에 든다</text>
|
|
|
|
<rect x="444" y="324" width="396" height="92" class="warn"/>
|
|
<text x="458" y="346" class="tb">★ 함정 — 성공을 실패로 오독한다</text>
|
|
<text x="458" y="366" class="s">Hook 'deploy-hook' ran with error output:</text>
|
|
<text x="458" y="384" class="s"> [warn] could not build optimal types_hash …</text>
|
|
<text x="458" y="402" class="s">nginx 경고가 stderr 로 나갔을 뿐. 내용은 test is successful</text>
|
|
</svg>
|