Files
document-haness/docs/ca-tmpl/final/assets/transaction-lock-independent-contracts.svg
T

92 lines
14 KiB
XML
Executable File

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1500" height="850" viewBox="0 0 1500 850" role="img" aria-labelledby="title desc">
<title id="title">Transaction and lock contracts</title>
<desc id="desc">Current transaction and distributed-lock wiring are shown independently; a dashed future-only strip records acquire, commit, release ordering and database constraints.</desc>
<metadata>{&quot;generator&quot;:&quot;_work/regenerate-technical-assets.py&quot;,&quot;canvas_policy&quot;:&quot;diagram-only&quot;,&quot;decorative_effects&quot;:false}</metadata>
<defs>
<marker id="arrow-ink" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#25282D"/></marker>
<marker id="arrow-muted" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#667085"/></marker>
<marker id="arrow-blue" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#1677FF"/></marker>
<marker id="arrow-purple" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#7556D8"/></marker>
<marker id="arrow-green" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#168A5B"/></marker>
<marker id="arrow-red" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#D64550"/></marker>
<marker id="arrow-amber" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#B7791F"/></marker>
</defs>
<rect width="1500" height="850" fill="#FFFFFF"/>
<rect x="560" y="25" width="352.4" height="30" fill="#F6F7F9" stroke="#AEB5BF" stroke-width="1.2" rx="15" />
<text x="736.2" y="45" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="700" fill="#667085" text-anchor="middle">상단 = 현재 배선 · 하단 점선 = FUTURE 계약 입력</text>
<rect x="40" y="85" width="680" height="430" fill="#FBFCFE" stroke="#1677FF" stroke-width="1.3" rx="10" />
<rect x="49" y="74" width="181.9" height="20" fill="#FFFFFF" rx="2" />
<text x="56" y="90" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#0B5CC4" text-anchor="start">TransactionPort · 현재 배선</text>
<rect x="105" y="155" width="250" height="90" fill="#F1EDFF" stroke="#7556D8" stroke-width="1.5" rx="8" />
<text x="230" y="176" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="middle" letter-spacing="0.8">&lt;&lt;interface&gt;&gt;</text>
<text x="230" y="200" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="16" font-weight="700" fill="#25282D" text-anchor="middle">TransactionPort</text>
<text x="230" y="225" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">application-core contract</text>
<rect x="110" y="315" width="71.9" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="145.9" y="335" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">inWrite</text>
<rect x="280" y="315" width="65.0" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="312.5" y="335" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">inRead</text>
<rect x="450" y="315" width="58.2" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="479.1" y="335" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">inNew</text>
<rect x="430" y="155" width="240" height="90" fill="#FFFFFF" stroke="#59616B" stroke-width="1.5" rx="8" />
<text x="550" y="194" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="16" font-weight="700" fill="#25282D" text-anchor="middle">SpringTransactionPort</text>
<text x="550" y="219" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">implements</text>
<path d="M 430 200 L 355 200" fill="none" stroke="#7556D8" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" marker-end="url(#arrow-purple)" />
<rect x="354.1" y="175" width="76.7" height="20" fill="#FFFFFF" rx="2" />
<text x="392.5" y="191" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#7556D8" text-anchor="middle">Implements</text>
<path d="M 230 245 L 230 280" fill="none" stroke="#1677FF" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" />
<circle cx="230" cy="280" r="4" fill="#1677FF" />
<path d="M 230 280 L 145 315" fill="none" stroke="#1677FF" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
<path d="M 230 280 L 315 315" fill="none" stroke="#1677FF" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
<rect x="252.9" y="258" width="64.2" height="20" fill="#FFFFFF" rx="2" />
<text x="285" y="274" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#1677FF" text-anchor="middle">Declares</text>
<path d="M 230 280 L 485 315" fill="none" stroke="#1677FF" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
<rect x="780" y="85" width="680" height="430" fill="#FBFCFE" stroke="#7556D8" stroke-width="1.3" rx="10" />
<rect x="789" y="74" width="206.9" height="20" fill="#FFFFFF" rx="2" />
<text x="796" y="90" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#7556D8" text-anchor="start">DistributedLockPort · 현재 배선</text>
<rect x="830" y="150" width="245" height="85" fill="#F1EDFF" stroke="#7556D8" stroke-width="1.5" rx="8" />
<text x="952.5" y="171" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="middle" letter-spacing="0.8">&lt;&lt;interface&gt;&gt;</text>
<text x="952.5" y="192.5" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="16" font-weight="700" fill="#25282D" text-anchor="middle">DistributedLockPort</text>
<text x="952.5" y="217.5" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">application-core contract</text>
<rect x="820" y="310" width="250" height="82" fill="#FFFFFF" stroke="#59616B" stroke-width="1.5" rx="8" />
<text x="945" y="345" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="700" fill="#25282D" text-anchor="middle">false · in-process adapter</text>
<text x="945" y="370" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">default</text>
<rect x="1125" y="310" width="245" height="82" fill="#FFFFFF" stroke="#59616B" stroke-width="1.5" rx="8" />
<text x="1247.5" y="345" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="700" fill="#25282D" text-anchor="middle">true · JDBC lock adapter</text>
<text x="1247.5" y="370" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">conditional</text>
<path d="M 920 235 L 920 310" fill="none" stroke="#7556D8" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-purple)" />
<rect x="891.1" y="247.5" width="57.9" height="20" fill="#FFFFFF" rx="2" />
<text x="920" y="263.5" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#7556D8" text-anchor="middle">Default</text>
<path d="M 1010 235 L 1247 310" fill="none" stroke="#7556D8" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-purple)" />
<rect x="1087.0" y="247.5" width="83.0" height="20" fill="#FFFFFF" rx="2" />
<text x="1128.5" y="263.5" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#7556D8" text-anchor="middle">Conditional</text>
<rect x="1125" y="425" width="245" height="58" fill="#FFFFFF" stroke="#7556D8" stroke-width="1.5" rx="8" />
<text x="1247.5" y="459" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#25282D" text-anchor="middle">MeteredDistributedLockPort</text>
<path d="M 1247 392 L 1247 425" fill="none" stroke="#7556D8" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-purple)" />
<rect x="1189.8" y="383.5" width="114.3" height="20" fill="#FFFFFF" rx="2" />
<text x="1247" y="399.5" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#7556D8" text-anchor="middle">Conditional wrap</text>
<rect x="835" y="435" width="128.5" height="30" fill="#FDEDEF" stroke="#D64550" stroke-width="1.2" rx="15" />
<text x="899.3" y="455" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#D64550" text-anchor="middle">프로덕션 호출자 0</text>
<path d="M 835 450 L 795 450 L 795 192 L 830 192" fill="none" stroke="#D64550" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" />
<path d="M 799 179 L 825 205" fill="none" stroke="#D64550" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" />
<path d="M 825 179 L 799 205" fill="none" stroke="#D64550" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" />
<rect x="120" y="600" width="1260" height="195" fill="#FBFCFE" stroke="#667085" stroke-width="1.3" rx="10" stroke-dasharray="8 6" />
<rect x="129" y="589" width="232.2" height="20" fill="#FFFFFF" rx="2" />
<text x="136" y="605" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#667085" text-anchor="start">FUTURE 계약 · 현재 프로덕션 실행 없음</text>
<rect x="170" y="660" width="71.9" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="205.9" y="680" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">acquire</text>
<path d="M 315 675 L 520 675" fill="none" stroke="#667085" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" marker-end="url(#arrow-muted)" />
<rect x="520" y="660" width="65.0" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="552.5" y="680" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">commit</text>
<path d="M 650 675 L 855 675" fill="none" stroke="#667085" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" marker-end="url(#arrow-muted)" />
<rect x="855" y="660" width="71.9" height="30" fill="#FFFFFF" stroke="#1677FF" stroke-width="1.2" rx="15" />
<text x="890.9" y="680" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="700" fill="#0B5CC4" text-anchor="middle">release</text>
<rect x="1060" y="642" width="270" height="70" fill="#EAF7F1" stroke="#168A5B" stroke-width="1.5" rx="8" />
<text x="1195" y="671" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="700" fill="#25282D" text-anchor="middle">DB 제약 · 낙관적 동시성</text>
<text x="1195" y="696" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">최종 정합성 방어선</text>
<path d="M 230 515 L 230 580 L 230 600" fill="none" stroke="#667085" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" />
<path d="M 1000 515 L 1000 580 L 1000 600" fill="none" stroke="#667085" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" />
<path d="M 1060 677 L 980 677" fill="none" stroke="#168A5B" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="6 5" marker-end="url(#arrow-green)" />
<rect x="959.7" y="652" width="120.6" height="20" fill="#FFFFFF" rx="2" />
<text x="1020" y="668" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="650" fill="#168A5B" text-anchor="middle">Correctness guard</text>
</svg>